PingCAPクリニックを使用した TiDBクラスタのトラブルシューティング

TiUP を使用してデプロイされた TiDB クラスターおよび DM クラスターの場合、 PingCAPクリニック Diagnostic Service (PingCAPクリニック) を使用してクラスターの問題をリモートでトラブルシューティングし、Diag クライアント (Diag) および Clinic Server を使用してローカルでクラスターの状態をすばやく確認できます。

ノート:

  • このドキュメントは、オンプレミス環境で TiUP を使用してデプロイされたクラスターにのみ適用されます。 Kubernetes でTiDB Operatorを使用してデプロイされたクラスターについては、 TiDB TiDB Operator環境向けのPingCAPクリニックを参照してください。

  • PingCAPクリニックは、TiDB Ansible を使用してデプロイされたクラスターからのデータ収集をサポートしていません

ユーザー シナリオ

  • クラスターの問題をリモートでトラブルシューティングする

    • クラスターに問題が発生し、PingCAP テクニカル サポートに連絡する必要がある場合は、次の操作を実行して、リモート トラブルシューティングを容易にすることができます: Diag を使用して診断データを収集し、収集したデータを Clinic Server にアップロードし、データ アクセス リンクを提供します。テクニカルサポートスタッフ。
    • クラスターに何らかの問題があり、すぐに問題を分析できない場合は、Diag を使用してデータを収集し、後で分析できるように保存できます。
  • クラスターのステータスをローカルで簡単に確認する

    クラスターが今のところ安定して動作している場合でも、クラスターを定期的にチェックして潜在的な安定性リスクを検出する必要があります。 PingCAPクリニックが提供するローカルのクイック チェック機能を使用して、クラスターの潜在的なヘルス リスクを特定できます。ローカル チェックは構成のみをチェックします。メトリクスやログなど、より多くの項目を確認するには、診断データを Clinic Server にアップロードし、Health Report 機能を使用することをお勧めします。

前提条件

PingCAPクリニックを利用する前に、Diag( PingCAPクリニックが提供するデータ収集用コンポーネント)をインストールし、データをアップロードするための環境を整える必要があります。

  1. インストール診断

    • コントロール マシンに TiUP をインストールした場合は、次のコマンドを実行して Diag をインストールします。

      tiup install diag
    • Diag がインストールされている場合は、次のコマンドを使用して Diag を最新バージョンにアップグレードできます。

      tiup update diag

    ノート:

    • インターネット接続のないクラスターの場合、Diag をオフラインでデプロイする必要があります。詳細については、 TiUP をオフラインでデプロイ: 方法 2を参照してください。
    • Diag は、v5.4.0 以降の TiDB サーバー オフライン ミラー パッケージでのみ提供されます。
  2. データをアップロードするためのアクセス トークン (トークン) を取得および設定します。

    収集したデータを Diag 経由でアップロードする場合、ユーザー認証のためのトークンが必要です。トークン Diag を既に設定している場合は、トークンを再利用して、この手順をスキップできます。

    トークンを取得するには、次の手順を実行します。

    • クリニック サーバーにログインします。

      • Clinic Server in the US
      • Clinic Server in the Chinese mainland

      米国のクリニックサーバー : データは米国の AWS に保存されます。

      中国本土のクリニックサーバー : データは中国 (北京) リージョンの AWS に保存されます。

    • クラスタページの右下隅にあるアイコンをクリックし、[ Get Access Token For Diag Tool ] を選択して、ポップアップ ウィンドウで [ + ] をクリックします。表示されたトークンをコピーして保存したことを確認してください。

      Get the Token

    ノート:

    • Clinic Server に初めてアクセスする場合、トークンを取得する前に、AskTUG アカウントを使用してクリニックサーバーにログインし、最初に組織を作成する必要があります。
    • データ セキュリティのため、TiDB はトークンの作成時にのみトークンを表示します。トークンを紛失した場合は、古いトークンを削除して新しいトークンを作成してください。
    • トークンは、データのアップロードにのみ使用されます。
    • 次に、トークンを Diag に設定します。例えば:

      tiup diag config clinic.token ${token-value}
  3. Diag にregionを設定します。

    regionは、データのパッキングに使用される暗号化証明書と、データのアップロード時のターゲット サービスを決定します。例えば:

    ノート:

    • Diag v0.9.0 以降のバージョンは設定regionをサポートします。
    • Diag v0.9.0 より前のバージョンでは、データはデフォルトで中国地域の Clinic Server にアップロードされます。これらのバージョンでregionを設定するには、 tiup update diagコマンドを実行して Diag を最新バージョンにアップグレードしてから、Diag でregionを設定します。
    • Clinic Server in the US
    • Clinic Server in the Chinese mainland

    米国の Clinic Server の場合、次のコマンドを使用してregionからUSを設定します。

    tiup diag config clinic.region US

    中国本土の Clinic Server の場合、次のコマンドを使用してregionからCNを設定します。

    tiup diag config clinic.region CN
  4. (オプション) ログのリダクションを有効にします。

    TiDB が詳細なログ情報を提供する場合、機密情報 (ユーザー データなど) をログに出力することがあります。ローカル ログと Clinic Server で機密情報が漏洩するのを避けたい場合は、TiDB 側でログの編集を有効にすることができます。詳細については、 ログ編集を参照してください。

クラスターの問題をリモートでトラブルシューティングする

Diag を使用すると、監視データや構成情報など、TiDB クラスターおよび DM クラスターから診断データをすばやく収集できます。

Step 1. 収集するデータを確認する

Diag で収集できるデータの完全なリストについては、 PingCAPクリニックの診断データを参照してください。

その後の診断の効率を向上させるために、監視データや構成情報を含む完全な診断データを収集することをお勧めします。詳細については、 TiDB クラスターからデータを収集するを参照してください。

ステップ 2. データを収集する

Diag を使用すると、TiUP を使用してデプロイされた TiDB クラスターおよび DM クラスターからデータを収集できます。

TiDB クラスターからデータを収集する

  1. Diagのデータ収集コマンドを実行します。

    たとえば、現在の時刻に基づいて 4 時間前から 2 時間前までの診断データを収集するには、次のコマンドを実行します。

    tiup diag collect ${cluster-name} -f="-4h" -t="-2h"

    データ収集のパラメーターの説明:

    • -f/--from : データ収集の開始時刻を指定します。このパラメーターを指定しない場合、デフォルトの開始時刻は現在時刻の 2 時間前になります。タイム ゾーンを変更するには、 -f="12:30 +0800"構文を使用します。 +0800など、このパラメーターでタイム ゾーン情報を指定しない場合、タイム ゾーンは既定で UTC になります。
    • -t/--to : データ収集の終了時刻を指定します。このパラメーターを指定しない場合、デフォルトの終了時間は現時点です。タイム ゾーンを変更するには、 -f="12:30 +0800"構文を使用します。 +0800など、このパラメーターでタイム ゾーン情報を指定しない場合、タイム ゾーンは既定で UTC になります。

    パラメータの使用に関するヒント:

    データ収集時間の指定に加えて、Diag を使用してさらにパラメーターを指定できます。すべてのパラメーターを取得するには、 tiup diag collect -hコマンドを実行します。

    ノート:

    • デフォルトでは、diag はシステム変数データ (db_vars) を収集しません。このデータを収集するには、データベースにアクセスできるユーザー名とパスワードを追加で提供する必要があります。このデータベースでは、システム変数への読み取りアクセスを有効にする必要があることに注意してください。
    • デフォルトでは、diag はパフォーマンス データ ( perf ) とデバッグ データ ( debug ) を収集しません。
    • システム変数を含む完全な診断データを収集するには、コマンドtiup diag collect <cluster-name> --include="system,monitor,log,config,db_vars,perf,debug"を使用します。
    • -l : ファイル転送の帯域幅制限。単位は Kbit/s で、デフォルト値は100000 (scp の-lパラメータ) です。
    • -N/--node : 指定したノードからのみデータを収集します。形式はip:portです。
    • --include : 特定のタイプのデータのみを収集します。オプションの値はsystemmonitorlogconfig 、およびdb_varsです。 2 つ以上のタイプを含めるには、タイプ間のセパレータとして,を使用できます。
    • --exclude : 特定の種類のデータを収集しません。オプションの値はsystemmonitorlogconfig 、およびdb_varsです。 2 つ以上のタイプを除外するには、タイプ間のセパレーターとして,を使用できます。

    コマンドを実行した後、Diag はデータの収集をすぐには開始しません。代わりに、Diag は推定データ サイズとターゲット データ ストレージ パスを出力で提供し、続行するかどうかを確認します。例えば:

    Estimated size of data to collect: Host Size Target ---- ---- ------ 172.16.7.129:9090 43.57 MB 1775 metrics, compressed 172.16.7.87 0 B /tidb-deploy/tidb-4000/log/tidb_stderr.log ... ... 172.16.7.179 325 B /tidb-deploy/tikv-20160/conf/tikv.toml Total 2.01 GB (inaccurate) These data will be stored in /home/qiaodan/diag-fNTnz5MGhr6 Do you want to continue? [y/N]: (default=N)
  2. Yを入力して、データの収集を開始することを確認します。

    データの収集には一定の時間がかかります。時間は、収集するデータ量によって異なります。たとえば、テスト環境では、1 GB のデータを収集するのに約 10 分かかります。

    収集が完了すると、Diag は、収集されたデータが配置されているフォルダー パスを提供します。例えば:

    Collected data are stored in /home/qiaodan/diag-fNTnz5MGhr6

DM クラスターからデータを収集する

  1. Diagのデータ収集コマンドを実行します。

    たとえば、現在の時刻に基づいて 4 時間前から 2 時間前までの診断データを収集するには、次のコマンドを実行します。

    tiup diag collectdm ${cluster-name} -f="-4h" -t="-2h"

    上記のコマンドで使用されるパラメーター、または Diag で使用される可能性のあるその他のパラメーターの説明については、 TiDB クラスターからデータを収集するを参照してください。

    コマンドを実行した後、Diag はデータの収集をすぐには開始しません。代わりに、Diag は推定データ サイズとターゲット データ ストレージ パスを出力で提供し、続行するかどうかを確認します。

  2. Yを入力して、データの収集を開始することを確認します。

    データの収集には一定の時間がかかります。時間は、収集するデータ量によって異なります。たとえば、テスト環境では、1 GB のデータを収集するのに約 10 分かかります。

    収集が完了すると、Diag は、収集されたデータが配置されているフォルダー パスを提供します。例えば:

    Collected data are stored in /home/qiaodan/diag-fNTnz5MGhr6

ステップ 3. ローカルでデータをビューする (オプション)

収集されたデータは、データ ソースに基づいて個別のサブディレクトリに保存されます。これらのサブディレクトリの名前は、マシン名とポート番号に基づいています。各ノードの構成、ログ、およびその他のファイルの保存場所は、TiDB クラスターの実サーバー内の相対的な保存パスと同じです。

  • システムとハードウェアの基本情報: insight.json
  • システム内コンテンツ/etc/security/limits.conf : in limits.conf
  • カーネルパラメータのリスト: sysctl.conf
  • カーネルログ: dmesg.log
  • データ収集中のネットワーク接続: ss.txt
  • Configuration / コンフィグレーションデータ: 各ノードのconfig.jsonのディレクトリー内
  • クラスタ自体のメタ情報: meta.yaml (このファイルは、収集されたデータを格納するディレクトリの最上位にあります)
  • 監視データ: /monitorファイル ディレクトリ内。監視データはデフォルトで圧縮されており、直接表示することはできません。モニタリング データを含む JSON ファイルを直接表示するには、データ収集時に--compress-metrics=falseパラメータで圧縮を無効にします。

ステップ 4. データをアップロードする

クラスタ診断データを PingCAP テクニカル サポート スタッフに提供するには、まずデータを Clinic Server にアップロードしてから、取得したデータ アクセス リンクをスタッフに送信する必要があります。 Clinic Server は、診断データを安全に保存および共有するクラウド サービスです。

クラスターのネットワーク接続に応じて、次のいずれかの方法を選択してデータをアップロードできます。

ノート:

データをアップロードする前に Diag でトークンまたはregionを設定しなかった場合、Diag はアップロードの失敗を報告し、トークンまたはregionを設定するよう通知します。トークンを設定するには、 前提条件の 2 番目のステップを参照してください。

方法 1. 直接アップロードする

クラスターが配置されているネットワークがインターネットにアクセスできる場合は、次のコマンドを使用して、 ステップ 2: データを収集するで取得した収集データを含むフォルダーを直接アップロードできます。

tiup diag upload

アップロードが完了すると、出力にDownload URLが表示されます。 Download URLのリンクを開いてアップロードされたデータを表示するか、以前に連絡した PingCAP テクニカル サポート スタッフにリンクを送信できます。

方法 2. データをパックしてアップロードする

クラスターが配置されているネットワークがインターネットにアクセスできない場合は、イントラネットにデータをパックし、インターネットにアクセスできるデバイスを使用してデータ パッケージを Clinic Server にアップロードする必要があります。詳細な操作は次のとおりです。

  1. 次のコマンドを実行して、 ステップ 2. データを収集するで取得した収集データをパックします。

    tiup diag package ${filepath}

    パッケージ化中に、Diag はデータの暗号化と圧縮を同時に行います。テスト環境では、800 MB のデータが 57 MB に圧縮されました。次に出力例を示します。

    Starting component `diag`: /root/.tiup/components/diag/v0.7.0/diag package diag-fNTnz5MGhr6 packaged data set saved to /home/qiaodan/diag-fNTnz5MGhr6.diag

    パッケージ化が完了すると、データは.diag形式にパッケージ化されます。 .diagファイルは、クリニック サーバーにアップロードされた後にのみ復号化して表示できます。収集したデータをクリニックサーバーにアップロードせずに直接転送したい場合は、独自の方法でデータを圧縮して転送することができます。

  2. インターネットにアクセスできるマシンから、圧縮データ パッケージをアップロードします。

    tiup diag upload ${filepath}

    次に出力例を示します。

    [root@Copy-of-VM-EE-CentOS76-v1 qiaodan]# tiup diag upload /home/qiaodan/diag-fNTnz5MGhr6 Starting component `diag`: /root/.tiup/components/diag/v0.7.0/diag upload /home/qiaodan/diag-fNTnz5MGhr6 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>><>>>>>>>>> Completed! Download URL: "https://clinic.pingcap.com.cn/portal/#/orgs/4/clusters/XXXX"
  3. アップロードが完了したら、 Download URLのリンクを開いてアップロードされたデータを表示したり、以前連絡した PingCAP テクニカル サポート スタッフにリンクを送信したりできます。

クラスターのステータスをローカルで簡単に確認する

Diag を使用して、クラスターの状態をローカルで簡単に確認できます。クラスターが今のところ安定して動作している場合でも、クラスターを定期的にチェックして潜在的な安定性リスクを検出する必要があります。 PingCAPクリニックが提供するローカルのクイック チェック機能を使用して、クラスターの潜在的なヘルス リスクを特定できます。ローカル チェックは構成のみをチェックします。メトリクスやログなど、より多くの項目を確認するには、診断データを Clinic Server にアップロードし、Health Report 機能を使用することをお勧めします。

  1. 構成データを収集します。

    tiup diag collect ${cluster-name} --include="config"

    構成ファイルのデータは比較的小さいです。収集後、収集されたデータはデフォルトで現在のパスに保存されます。テスト環境では、18 ノードのクラスターの場合、構成ファイルのデータ サイズは 10 KB 未満です。

  2. 構成データを診断します。

    tiup diag check ${subdir-in-output-data}

    上記のコマンドの${subdir-in-output-data}は、収集されたデータを格納するパスであり、このパスにはmeta.yamlのファイルがあります。

  3. 診断結果をビューします。

    診断結果はコマンド ラインで返されます。例えば:

    Starting component `diag`: /root/.tiup/components/diag/v0.7.0/diag check diag-fNTnz5MGhr6 # Diagnostic result lili 2022-01-24T09:33:57+08:00 ## 1. Cluster basic information - Cluster ID: 7047403704292855808 - Cluster Name: lili - Cluster Version: v5.3.0 ## 2. Sampling information - Sample ID: fNTnz5MGhr6 - Sampling Date: 2022-01-24T09:33:57+08:00 - Sample Content:: [system monitor log config] ## 3. Diagnostic result, including potential configuration problems In this inspection, 22 rules were executed. The results of **1** rules were abnormal and needed to be further discussed with support team. The following is the details of the abnormalities. ### Diagnostic result summary The configuration rules are all derived from PingCAP’s OnCall Service. If the results of the configuration rules are found to be abnormal, they may cause the cluster to fail. There were **1** abnormal results. #### Path to save the diagnostic result file Rule Name: tidb-max-days - RuleID: 100 - Variation: TidbConfig.log.file.max-days - For more information, please visit: https://s.tidb.io/msmo6awg - Check Result: TidbConfig_172.16.7.87:4000 TidbConfig.log.file.max-days:0 warning TidbConfig_172.16.7.86:4000 TidbConfig.log.file.max-days:0 warning TidbConfig_172.16.7.179:4000 TidbConfig.log.file.max-days:0 warning Result report and record are saved at diag-fNTnz5MGhr6/report-220125153215

    診断結果の最後のセクション (上記の出力例の#### Path to save the diagnostic result fileの下) で、見つかった構成の潜在的なリスクごとに、Diag は対応するナレッジ ベース リンクと詳細な構成の提案を提供します。上記の例では、関連するリンクはhttps://s.tidb.io/msmo6awgです。

FAQ

  1. データのアップロードに失敗した場合、再アップロードできますか?

    はい。データのアップロードは、ブレークポイントのアップロードをサポートしています。アップロードに失敗した場合は、直接アップロードし直すことができます。

  2. データをアップロードした後、返されたデータ アクセス リンクを開くことができません。私は何をすべきか?

    最初に Clinic Server にログインします。ログインに成功してもリンクを開けない場合は、データにアクセスできるかどうかを確認してください。そうでない場合は、データ所有者に連絡して許可を求めてください。権限を取得したら、Clinic Server にログインし、リンクを再度開きます。

  3. アップロードされたデータはどのくらいの間 Clinic Server に保持されますか?

    最長は180日です。 Clinic Server ページにアップロードしたデータはいつでも削除できます。