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クリニックが提供するデータ収集用コンポーネント)をインストールし、データをアップロードするための環境を整える必要があります。
インストール診断
コントロール マシンに TiUP をインストールした場合は、次のコマンドを実行して Diag をインストールします。
tiup install diagDiag がインストールされている場合は、次のコマンドを使用して Diag を最新バージョンにアップグレードできます。
tiup update diag
ノート:
- インターネット接続のないクラスターの場合、Diag をオフラインでデプロイする必要があります。詳細については、 TiUP をオフラインでデプロイ: 方法 2を参照してください。
- Diag は、v5.4.0 以降の TiDB サーバー オフライン ミラー パッケージでのみ提供されます。
データをアップロードするためのアクセス トークン (トークン) を取得および設定します。
収集したデータを Diag 経由でアップロードする場合、ユーザー認証のためのトークンが必要です。トークン Diag を既に設定している場合は、トークンを再利用して、この手順をスキップできます。
トークンを取得するには、次の手順を実行します。
クリニック サーバーにログインします。
- Clinic Server in the US
- Clinic Server in the Chinese mainland
米国のクリニックサーバー : データは米国の AWS に保存されます。
中国本土のクリニックサーバー : データは中国 (北京) リージョンの AWS に保存されます。
クラスタページの右下隅にあるアイコンをクリックし、[ Get Access Token For Diag Tool ] を選択して、ポップアップ ウィンドウで [ + ] をクリックします。表示されたトークンをコピーして保存したことを確認してください。
ノート:
- Clinic Server に初めてアクセスする場合、トークンを取得する前に、AskTUG アカウントを使用してクリニックサーバーにログインし、最初に組織を作成する必要があります。
- データ セキュリティのため、TiDB はトークンの作成時にのみトークンを表示します。トークンを紛失した場合は、古いトークンを削除して新しいトークンを作成してください。
- トークンは、データのアップロードにのみ使用されます。
次に、トークンを Diag に設定します。例えば:
tiup diag config clinic.token ${token-value}
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- Diag v0.9.0 以降のバージョンは設定
(オプション) ログのリダクションを有効にします。
TiDB が詳細なログ情報を提供する場合、機密情報 (ユーザー データなど) をログに出力することがあります。ローカル ログと Clinic Server で機密情報が漏洩するのを避けたい場合は、TiDB 側でログの編集を有効にすることができます。詳細については、 ログ編集を参照してください。
クラスターの問題をリモートでトラブルシューティングする
Diag を使用すると、監視データや構成情報など、TiDB クラスターおよび DM クラスターから診断データをすばやく収集できます。
Step 1. 収集するデータを確認する
Diag で収集できるデータの完全なリストについては、 PingCAPクリニックの診断データを参照してください。
その後の診断の効率を向上させるために、監視データや構成情報を含む完全な診断データを収集することをお勧めします。詳細については、 TiDB クラスターからデータを収集するを参照してください。
ステップ 2. データを収集する
Diag を使用すると、TiUP を使用してデプロイされた TiDB クラスターおよび DM クラスターからデータを収集できます。
TiDB クラスターからデータを収集する
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
: 特定のタイプのデータのみを収集します。オプションの値はsystem
、monitor
、log
、config
、およびdb_vars
です。 2 つ以上のタイプを含めるには、タイプ間のセパレータとして,
を使用できます。--exclude
: 特定の種類のデータを収集しません。オプションの値はsystem
、monitor
、log
、config
、および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)Y
を入力して、データの収集を開始することを確認します。データの収集には一定の時間がかかります。時間は、収集するデータ量によって異なります。たとえば、テスト環境では、1 GB のデータを収集するのに約 10 分かかります。
収集が完了すると、Diag は、収集されたデータが配置されているフォルダー パスを提供します。例えば:
Collected data are stored in /home/qiaodan/diag-fNTnz5MGhr6
DM クラスターからデータを収集する
Diagのデータ収集コマンドを実行します。
たとえば、現在の時刻に基づいて 4 時間前から 2 時間前までの診断データを収集するには、次のコマンドを実行します。
tiup diag collectdm ${cluster-name} -f="-4h" -t="-2h"上記のコマンドで使用されるパラメーター、または Diag で使用される可能性のあるその他のパラメーターの説明については、 TiDB クラスターからデータを収集するを参照してください。
コマンドを実行した後、Diag はデータの収集をすぐには開始しません。代わりに、Diag は推定データ サイズとターゲット データ ストレージ パスを出力で提供し、続行するかどうかを確認します。
Y
を入力して、データの収集を開始することを確認します。データの収集には一定の時間がかかります。時間は、収集するデータ量によって異なります。たとえば、テスト環境では、1 GB のデータを収集するのに約 10 分かかります。
収集が完了すると、Diag は、収集されたデータが配置されているフォルダー パスを提供します。例えば:
Collected data are stored in /home/qiaodan/diag-fNTnz5MGhr6
ステップ 3. ローカルでデータをビューする (オプション)
収集されたデータは、データ ソースに基づいて個別のサブディレクトリに保存されます。これらのサブディレクトリの名前は、マシン名とポート番号に基づいています。各ノードの構成、ログ、およびその他のファイルの保存場所は、TiDB クラスターの実サーバー内の相対的な保存パスと同じです。
- システムとハードウェアの基本情報:
insight.json
- システム内コンテンツ
/etc/security/limits.conf
: inlimits.conf
- カーネルパラメータのリスト:
sysctl.conf
- カーネルログ:
dmesg.log
- データ収集中のネットワーク接続:
ss.txt
- Configuration / コンフィグレーションデータ: 各ノードの
config.json
のディレクトリー内 - クラスタ自体のメタ情報:
meta.yaml
(このファイルは、収集されたデータを格納するディレクトリの最上位にあります) - 監視データ:
/monitor
ファイル ディレクトリ内。監視データはデフォルトで圧縮されており、直接表示することはできません。モニタリング データを含む JSON ファイルを直接表示するには、データ収集時に--compress-metrics=false
パラメータで圧縮を無効にします。
ステップ 4. データをアップロードする
クラスタ診断データを PingCAP テクニカル サポート スタッフに提供するには、まずデータを Clinic Server にアップロードしてから、取得したデータ アクセス リンクをスタッフに送信する必要があります。 Clinic Server は、診断データを安全に保存および共有するクラウド サービスです。
クラスターのネットワーク接続に応じて、次のいずれかの方法を選択してデータをアップロードできます。
- 方法 1: クラスターが配置されているネットワークがインターネットにアクセスできる場合は、次のことができアップロード コマンドを使用してデータを直接アップロードする 。
- 方法 2: クラスターが配置されているネットワークがインターネットにアクセスできない場合は、次のことを行う必要がありデータをパックしてアップロードする 。
ノート:
データをアップロードする前に Diag でトークンまたは
region
を設定しなかった場合、Diag はアップロードの失敗を報告し、トークンまたはregion
を設定するよう通知します。トークンを設定するには、 前提条件の 2 番目のステップを参照してください。
方法 1. 直接アップロードする
クラスターが配置されているネットワークがインターネットにアクセスできる場合は、次のコマンドを使用して、 ステップ 2: データを収集するで取得した収集データを含むフォルダーを直接アップロードできます。
tiup diag upload
アップロードが完了すると、出力にDownload URL
が表示されます。 Download URL
のリンクを開いてアップロードされたデータを表示するか、以前に連絡した PingCAP テクニカル サポート スタッフにリンクを送信できます。
方法 2. データをパックしてアップロードする
クラスターが配置されているネットワークがインターネットにアクセスできない場合は、イントラネットにデータをパックし、インターネットにアクセスできるデバイスを使用してデータ パッケージを Clinic Server にアップロードする必要があります。詳細な操作は次のとおりです。
次のコマンドを実行して、 ステップ 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
ファイルは、クリニック サーバーにアップロードされた後にのみ復号化して表示できます。収集したデータをクリニックサーバーにアップロードせずに直接転送したい場合は、独自の方法でデータを圧縮して転送することができます。インターネットにアクセスできるマシンから、圧縮データ パッケージをアップロードします。
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"アップロードが完了したら、
Download URL
のリンクを開いてアップロードされたデータを表示したり、以前連絡した PingCAP テクニカル サポート スタッフにリンクを送信したりできます。
クラスターのステータスをローカルで簡単に確認する
Diag を使用して、クラスターの状態をローカルで簡単に確認できます。クラスターが今のところ安定して動作している場合でも、クラスターを定期的にチェックして潜在的な安定性リスクを検出する必要があります。 PingCAPクリニックが提供するローカルのクイック チェック機能を使用して、クラスターの潜在的なヘルス リスクを特定できます。ローカル チェックは構成のみをチェックします。メトリクスやログなど、より多くの項目を確認するには、診断データを Clinic Server にアップロードし、Health Report 機能を使用することをお勧めします。
構成データを収集します。
tiup diag collect ${cluster-name} --include="config"構成ファイルのデータは比較的小さいです。収集後、収集されたデータはデフォルトで現在のパスに保存されます。テスト環境では、18 ノードのクラスターの場合、構成ファイルのデータ サイズは 10 KB 未満です。
構成データを診断します。
tiup diag check ${subdir-in-output-data}上記のコマンドの
${subdir-in-output-data}
は、収集されたデータを格納するパスであり、このパスにはmeta.yaml
のファイルがあります。診断結果をビューします。
診断結果はコマンド ラインで返されます。例えば:
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
データのアップロードに失敗した場合、再アップロードできますか?
はい。データのアップロードは、ブレークポイントのアップロードをサポートしています。アップロードに失敗した場合は、直接アップロードし直すことができます。
データをアップロードした後、返されたデータ アクセス リンクを開くことができません。私は何をすべきか?
最初に Clinic Server にログインします。ログインに成功してもリンクを開けない場合は、データにアクセスできるかどうかを確認してください。そうでない場合は、データ所有者に連絡して許可を求めてください。権限を取得したら、Clinic Server にログインし、リンクを再度開きます。
アップロードされたデータはどのくらいの間 Clinic Server に保持されますか?
最長は180日です。 Clinic Server ページにアップロードしたデータはいつでも削除できます。