オンプレミスAPIを終了します。詳細と次世代クラウドAPIへの移行方法については、オンプレミスAPIの終了のドキュメントを参照してください。

サポートログ

supportノードを使用してサポート情報を取り出すことに加え、問題のトラブルシューティングのためにDockerログ、AWSログ、HTTPリクエストIDを取り出すこともできます。

このドキュメントの内容は以下のとおりです。

ダイレクトサポートチケットをオープンする方法について詳しくは、サポートへのお問い合わせをご覧ください。

Dockerログを取得する

WADebugの使用(推奨)

WADebugツールを使用することにより、ログを自動的に収集したりアップロードしたりできます。応答の一部としてrun_idが返されます。ダイレクトサポートでこれを参照すれば、調査をより迅速に実行できます。次のコマンドを実行するだけです。

  wadebug logs --send

: コンテナが1つまたは複数のホストにインストールされるハイアベイラビリティ/マルチコネクトモードの場合は、個々のホストにログインし、WADebugをインストールして、上記のコマンドを実行する必要があります。コマンドの実行が成功するたびに1つのrun_idを取得できます。それをダイレクトサポートで参照することにより、より迅速に調査を実行できます。

Dockerの使用

WADebugツールを使うことができない場合は、docker logsコマンドを使って各コンテナから個別にログを取り出すことができます。例えば、wawebコンテナからログを取り出すには、次のコマンドを実行します。

docker logs <container id of waweb> >> waweb.log

docker logsコマンドでは、さまざまなオプションを使用することにより、ログファイルのサイズを制限することができます。例えば、wawebコンテナからログの最後の1000行のみ取り出すには、次のコマンドを実行します。

docker logs <container id of waweb> --tail 1000 >> waweb.log

wawebコンテナのログのうち特定の期間のもののみ取得するには、--since--untilのオプションを指定してコマンドを実行します。以下はその例です。

docker logs <container id of waweb> --since 2020-01-20T20:00:00Z --until 2020-01-21T08:00:00Z >> waweb.log

WhatsAppの全コンテナについてコマンドを実行してから、分析とデバッグのため、それらのファイルをWhatsAppに送信します。オプションについて詳しくは、docker logsに関する公式のドキュメントをご覧ください。

: コンテナログは、すべてGMTタイムゾーンです。GMTタイムスタンプを、--since--untilのパラメーターに渡す必要があります。

Docker Composeの使用

WhatsAppコンテナのすべてのログを取得するには、次のコマンドを実行します。

WA_API_VERSION=new-whatsapp-version docker-compose logs > debug_output.txt

: このコマンドでは、巨大なログファイルが生成されることがあります。関係のあるもののみに制限して取り出すログの量を小さくするためのオプションについては、「Dockerの使用」のセクションをご覧ください。

このようにしてから、それらのファイルを分析やデバッグのためにWhatsAppに送信することができます。

Crashlogs

新しいクラッシュロギングシステムをバージョン2.53に実装しました。これはクラッシュが発生するたびにダンプファイルを保存するものです。クラッシュダンプとして知られるこれらのファイルは、logs/ディレクトリに保存され、30日間保管されます。ファイルはマシン上のローカルにのみ保存され、ログファイルと同じ方法で取得できます。クラッシュダンプには、クラッシュしたスレッドに関連付けられたメモリデータが含まれる場合があります。

Kubernetesログを取得する

kubectlの使用

Webappなど、デプロイされている特定のサービスについてのログを取得するには、Kubernetesのセットアップで、次のコマンドを実行します。

kubectl logs deployments/whatsapp-web-deployment > whatsapp-web-deployment.txt

その後、ファイルを分析やデバッグのためにWhatsAppに送信することができます。

AWSログを取得する

AWSの設定に関するログを取得するには、以下の手順を実行してください。

Rollback on FailureNoに設定することにより、エラー発生時にログが削除されないようにする

これは、下記に示すようにして、スタックの作成/更新ステップの間に設定する必要があります。

CloudWatchコンソールからCloudFormationスタック作成のログとイベントを取得する


EC2インスタンスに接続する(正常に作成された場合)

EC2インスタンスとSSH接続する方法については、AWSガイドをご覧ください。WhatsApp Business APIスタック作成/更新においては、非公開VPCと公開VPCのいずれでも使用できることに注意してください。非公開VPCの場合、非公開Amazon VPCで実行中のLinuxインスタンスに安全に接続するのセクションで説明されている手順に従う必要があります。

ログの取得

コンテナにアクセスできるようになったなら、以下のログを取得し、それらをダイレクトサポートチケットに添付してください。

  1. sudo docker logs ecs-agent > ecs-agent.log
  2. スタックによって作成されたすべてのEC2インスタンスの/var/logをzip圧縮して取得します
  3. すべてのEC2インスタンス上にWADebugをインストールし、wadebug logsコマンドを実行することによりすべてのコンテナログを収集します。
  4. ステップ3でWADebugを使用できない場合は、以下のコマンドを実行することにより、手動でログを収集してください。
    • docker ps -aを実行して、実行中の全コンテナのリストを取得して出力をシェアする
    • docker logs <docker container id of the core app> >> wacore.logを実行し、ログをシェアする
    • docker logs <docker container id of the web app> >> waweb.logを実行し、ログをシェアする
    • docker cp <docker container id of the web app>:/var/log/whatsapp/web.log ./web.logを実行し、ログをシェアする
    • docker cp <docker container id of the web app>:/var/log/lighttpd/error.log ./error.logを実行し、ログをシェアする

アクティビティ履歴

EC2インスタンスが作成されていない場合、該当する自動スケーリンググループのアクティビティ履歴が必要です。これは、[EC2コンソール] -> [自動スケーリング] -> [自動スケーリンググループ]にあります。次に、問題のあるスタックの該当グループを選択し、[アクティビティ履歴]タブを選択します。

HTTPリクエストIDの収集

v2.21.3以降、HTTPリクエストを受信するたびに、毎回、WhatsAppビジネスAPIにより固有のリクエストIDが生成されます。それらのリクエストIDは、トラブルシューティングの時間短縮のため、特定のリクエストに関係のあるログを特定するために利用されます。不具合報告の際には、X-Request-ID応答ヘッダーおよびX-Internal-Request-IDS応答ヘッダーの値をチケットに含めてください。この値は、問題を特定したり再現したりするのに役立ちます。