WADebug: WhatsApp Business APIのトラブルシューティングツール

最新バージョン: 0.1.5

WADebugは、WhatsApp Business APIのセットアップに関する潜在的な問題を検出し、より効率的にWhatsAppサポートからのヘルプをリクエストするのに役立つコマンドラインツールです。

さまざまなタイプのセットアップに対するWADebugのサポートを以下に示します。実行チェックとは、WhatsApp Business APIクライアントのセットアップを確認するためにさまざまなアクションを実行するコマンドを指します。ログ取得とは、すべてのコンテナログを取得するコマンドを指します。

セットアップのタイプ実行チェックログ取得

オンプレミスの単一インスタンス

サポートされる(手順)

サポートされる(手順)

オンプレミスのハイアベイラビリティ/マルチコネクト

サポートされない

サポートされる(手順)

AWS

サポートされない

サポートされる(手順)

Kubernetes

サポートされない

サポートされない

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

WADebugをインストールする

WADebugは、Pythonで記述されたコマンドラインツールです。pipを使って次のようにインストールします。

pip3 install wadebug

アップグレードするには、次のコマンドを実行します。

pip3 install wadebug --upgrade

アンインストールするには、次のコマンドを実行します。

pip3 uninstall wadebug

インストールしたwadebugを検証するには、次のコマンドを実行します。

wadebug --help

実行チェック

WADebugには、WhatsApp Business APIのセットアップを検証するためのアクションのセットがあります。デフォルトでは、使用可能なすべてのアクションを実行します。problemまたはwarningのいずれかのステータスが返された場合、説明、詳細、可能な対策が表示されるので、セットアップのトラブルシューティングに役立ちます。ヘルプが必要な場合にログをFacebookにアップロードする方法もリマインドされます。

このツールを使用するには、WhatsApp Business API Dockerコンテナをホストするマシンから次のコマンドを実行します。

wadebug

アクションの結果がwadebug_errorになった場合は、ツール自体に問題があることを示しています。この問題が発生した場合は、ダイレクトサポートで不具合を報告してください



構成ファイル

WADebugでチェックの全機能を実行するには、現在のディレクトリに構成ファイル(wadebug.conf.yml)が必要です。

構成ファイルなしでwadebugを実行すると、構成値を指定するためのスケルトンファイルの作成を促すプロンプトが表示されます。構成ファイルが見つからない場合、または設定されている構成値がない場合、情報不足のために一部のアクションはスキップされます。

構成ファイルの例:

  
    # configurations related to the MySQL database
    db:
      # hostname of the MySQL database
      host: # for example, "0.0.0.0"
      # host port that the MySQL database uses
      # to connect to database container created by docker-compose scripts, use 33060
      port: # for example, 33060
      # username to connect to the MySQL database
      user: # for example, "root"
      # password of the username that is used to connect to the MySQL database
      password: # for example, "your_database_password"

    # configurations related to WhatsApp Business API
    webapp:
      # url accessible from the host running wadebug
      baseUrl: # https://localhost:9090
      # WhatsApp Business API user account credentials to call Support API
      user: # for example, "wadebug"
      # WhatsApp Business API user account credentials to call Support API
      password: # for example, "secretdebugger"
  

使用可能なアクションを一覧表示する

使用可能なアクションを確認するには、次のコマンドを実行します。

wadebug ls

部分実行

使用可能なアクションのサブセットのみを実行するには、次のコマンドを入力します。

wadebug partial check_software_version check_mysql_version

JSONモード

wadebugには、インタラクティブモードとJSONモードの2つのモードがあります。

インタラクティブモードはデフォルトのモードで、このモードを使用すると、結果の視覚化された表、注意事項、構成ファイルの作成を促すプロンプトなどが表示されます。
JSONモードは、wadebugを自動化パイプラインに統合して、WhatsApp Business APIセットアップを定期的に検証する場合や、WhatsApp Business APIバージョンをアップグレードするたびに検証する場合などに役立ちます。

JSONモードでwadebugを実行するには、次のように、任意の使用可能なwadebugコマンドに--jsonフラグを指定します。

wadebug --json

次のような有効なJSON応答が返されます。

{
   "containers_status":{
      "class":"CheckContainersAreUp",
      "user_facing_name":"containers_status",
      "result":"OK"
   },
   "check_mysql_connection":{
      "class":"CheckMySQLConnection",
      "user_facing_name":"check_mysql_connection",
      "result":"OK"
   },
   "check_software_version":{
      "class":"CheckSoftwareVersion",
      "user_facing_name":"check_software_version",
      "result":"OK"
   },
   "check_mysql_version":{
      "class":"CheckMySQLVersion",
      "user_facing_name":"check_mysql_version",
      "result":"OK"
   },
   "check_network":{
      "class":"CheckNetworkAction",
      "user_facing_name":"check_network",
      "result":"OK"
   },
   "check_mysql_permissions":{
      "class":"CheckMySQLPermissions",
      "user_facing_name":"check_mysql_permissions",
      "result":"OK"
   },
   "check_mysql_password":{
      "class":"CheckMySQLPassword",
      "user_facing_name":"check_mysql_password",
      "result":"OK"
   },
   "check_db_settings_exist":{
      "class":"CheckDbSettingsExist",
      "user_facing_name":"check_db_settings_exist",
      "result":"OK"
   },
   "check_webapp_port":{
      "class":"CheckWebappPortAction",
      "user_facing_name":"check_webapp_port",
      "result":"OK"
   }
}    
    

使用状況データの収集とオプトアウト

wadebugを実行するたびに、使用状況データ(実行されたアクションと返された結果を含む)がFacebookに送信され、ツールの改善とダイレクトサポートでのWhatsAppサポートプロセス時間の短縮のために使用されます。

ツールを実行する際に、使用状況データをFacebookとシェアすることを望まない場合は、wadebugコマンドにフラグ--do-not-send-usageを指定します。

wadebug partial check_network --do-not-send-usage

トラブルシューティングの結果をローカルで確認している間は、サポートとのやり取りのエクスペリエンスが低下するので、ご注意ください。

ログ取得

wadebugには、コンテナログをすべて取得し、オプションとしてそれをFacebookに送信してサポートチームによる調査に役立てることができる便利な手段が用意されています。

最新のログを取得する

最新のログを取得して、現在のディレクトリのwadebug_logs/の下に保存するには、次のコマンドを実行します。

wadebug logs

重要な変更:

  • v0.1.4以下: wadebug logsコマンドは、各コンテナからログの最後の10,000行を取得します
  • v0.1.5以上: wadebug logsコマンドは、各コンテナから最新の3時間のログを取得します

特定の日時以降のログを取得する

[v0.1.5以降の新機能] 特定の日時(GMTタイムゾーン)以降の3時間のログを取得するには、--sinceオプションを使用します。例: 次のコマンドは、2020-01-07 3:00:02 GMTから2020-01-07 6:00:02 GMTまでのログを取得します。

wadebug logs --since='2020-01-07 3:00:02'

ログを送信する

Facebookにログを送信するには、--sendフラグを追加する必要があります。応答の一部としてrun_idが返されます。より迅速に調査を行うために、ダイレクトサポートでこれを参照できます。

wadebug logs --send
wadebug logs --since='2020-01-07 3:00:02' --send

ハイアベイラビリティ/マルチコネクトセットアップからログを取得する

コンテナが1つまたは複数のホストにインストールされるハイアベイラビリティ/マルチコネクトモードの場合は、個々のホストにログインし、WADebugをインストールして、上記のwadebug logsコマンドを実行する必要があります。

ヘルプをリクエストする

WhatsApp Business APIセットアップのトラブルシューティングでヘルプが必要な場合は、wadebugの実行後に返されたrun_idを使用して、ダイレクトサポートチケットをオープンします。これにより、Facebookは、実行されたアクションとそれに対応する結果のレポートを確認できます。

A report of this run has been uploaded to Facebook.  You can reference run_id (A5jedVKsdI_ZojRwL1_-MOd) in Direct Support (https://business.facebook.com/direct-support) tickets
  	

コンテナログはトラブルシューティングに大変役立ちます。コンテナログを収集してFacebookに送信するには、--sendフラグを指定してwadebug logsを実行します。

wadebug logs --send

そして、返されたrun_idをFacebookに提供します。

Container logs have been uploaded to Facebook.  You can reference run_id (AcClyxkRJk3w1dEr8OAmsTn) in Direct Support (https://business.facebook.com/direct-support) tickets
  	

更新履歴

2020年1月15日(0.1.5)

  • Python 2のサポートを廃止しました 🎉
  • wadebug logsは、最後の10,000行のログではなく、最新の3時間のログを取得するようになりました
  • 指定された日時値以降の3時間のログを取得する--sinceオプションをwadebug logsに追加しました
  • [不具合修正] 互換性のないパラメーターが使用されると、jsonモードですぐに失敗します

2019年9月3日(v0.1.4)

  • WADebugのUIを一新し、すっきりするように変更
  • [不具合修正] check_networkアクションで接続エラーが発生したときに間違ったポートが出力される問題を修正
  • [不具合修正] check_mysql_permissionsアクションに不足しているMySQL特権要件を追加

2019年4月26日 (v0.1.3)

  • 新しいアクションで必要とされる新しい構成ファイルの項目を追加
  • Webhookヘルスチェックを追加
  • PyPiで新しいバージョンが使用可能になった場合のWADebugアップグレードのプロンプトを追加
  • トラブルシューティングをさらに容易にするため、アップロードされたログにサポートエンドポイント応答を追加
  • WADebugクラッシュログがFacebookへのアップロードに対応

2018年12月28日(v0.1.2)

  • 取得するログのサイズを制限
  • クラッシュ時にCoreappのコアダンプを取得
  • アップロードせずにログを取得できる新しいコマンドを追加
  • Python 3.4より前の場合の必須モジュールとしてenum34を追加

2018年10月23日(v0.1.1)

  • 最初のリリース