診断情報の取得
Elasticsearch サポート診断ツールは、クラスターの統計とほとんどの設定の時点スナップショットを取得します。すべてのElasticsearchバージョンで動作します。
この情報は、クラスターの問題をトラブルシューティングするために使用できます。サポート診断ツールの出力を使用してトラブルシューティングできる問題の例については、Elasticブログを参照してください。
このツールを使用して診断情報を生成することで、ElasticサポートまたはElastic Discussに連絡する前に、ターンアラウンドタイムを最小限に抑えることができます。
要件
- Java Runtime EnvironmentまたはJava Development Kit v1.8以上
ツールへのアクセス
サポート診断ツールは、一部のElasticデプロイメントにサブライブラリとして含まれています:
- Elastic Cloud Enterprise:Elastic Cloud Enterprise
> デプロイメント
> 操作
> バンドルの準備
> Elasticsearchの下にあります。 - Elastic Cloud on Kubernetes:
eck-diagnostics
として実行します。
最新のサポート診断リリースのために、[diagnostics-X.X.X-dist.zip
]ファイルを直接ダウンロードすることもできます。[support-diagnostic
リポジトリ。
診断情報の取得
Elasticsearch診断を取得するには:
- 1. ターミナルで、クラスターのヘルスをポーリングして、ネットワークとユーザー権限がElasticsearchクラスターに接続するのに十分であることを確認します。
たとえば、パラメータhost:localhost
、port:9200
、およびusername:elastic
を使用して、次のcurlリクエストを使用します:
HTTP 200curl -X GET -k -u elastic -p https://localhost:9200/_cluster/health
OK
レスポンスを受け取った場合、次のステップに進むことができます。異なるレスポンスコードを受け取った場合は、問題を診断する前に進む前に確認してください。 - 2. 同じ環境パラメータを使用して、診断ツールスクリプトを実行します。
ツールに渡すことができるパラメータに関する情報は、診断パラメータリファレンスを参照してください。
次のコマンドオプションが推奨されます:
Unixベースのシステム
Windowssudo ./diagnostics.sh --type local --host localhost --port 9200 -u elastic -p --bypassDiagVerify --ssl --noVerify
sudo .\diagnostics.bat --type local --host localhost --port 9200 -u elastic -p --bypassDiagVerify --ssl --noVerify
スクリプト実行モード
スクリプトは、3つのmodesで実行できます:
local
(デフォルト、推奨):Elasticsearch APIをポーリングし、オペレーティングシステム情報を収集し、クラスターとGCログを取得します。remote
:該当するターゲットサーバーにsshセッションを確立し、local
と同じ情報を取得します。api
:Elasticsearch APIをポーリングします。他のすべてのデータは手動で収集する必要があります。- 3. スクリプトが完了したら、
diagnostic.log
にエラーが記録されていないことを確認します。ログファイルにエラーが含まれている場合は、diagnostic.log
のエラーを診断するを参照してください。 - 4. スクリプトがエラーなしで完了した場合、
<diagnostic type>-diagnostics-<DateTimeStamp>.zip
形式のアーカイブが作業ディレクトリまたは指定した出力ディレクトリに作成されます。必要に応じて診断アーカイブを確認または共有できます。
- 3. スクリプトが完了したら、
非200クラスター健康レスポンスの診断
クラスターのヘルスをポーリングすると、200 0K
以外のレスポンスを受け取った場合、診断ツールが意図した通りに機能しない可能性があります。以下は、考えられるエラーコードとその解決策です:
- HTTP 401
UNAUTHENTICATED
- エラー内の追加情報は通常、
username:password
ペアが無効であるか、.security
インデックスが利用できないことを示し、一時的なfile-based realmユーザーをrole:superuser
で認証する必要があります。 - HTTP 403
UNAUTHORIZED
- あなたの
username
は認識されていますが、診断を実行するのに十分な権限がありません。別のユーザーを使用するか、ユーザーの権限を昇格させてください。 - HTTP 429
TOO_MANY_REQUESTS
(例:circuit_breaking_exception
) - あなたのユーザー名は認証され、承認されていますが、クラスターは十分に高い負荷にあるため、API呼び出しに応答していません。これらのレスポンスは通常、断続的です。診断を実行することはできますが、診断結果が不完全である可能性があります。
- HTTP 504
BAD_GATEWAY
- あなたのネットワークはクラスターに到達するのに問題を抱えています。プロキシやファイアウォールを使用している可能性があります。別の場所から診断ツールを実行することを検討し、ポートを確認するか、URLドメインの代わりにIPを使用してください。
- HTTP 503
SERVICE_UNAVAILABLE
(例:master_not_discovered_exception
) - あなたのクラスターには現在、API応答に必要な選出されたマスターノードがありません。これは、マスターノードが回転している間は一時的な場合があります。問題が続く場合は、原因を調査する前に進む前に確認してください。
diagnostic.logのエラーを診断する
診断ツールを実行する際に遭遇する可能性のある一般的なエラーは次のとおりです:
Error: Could not find or load main class com.elastic.support.diagnostics.DiagnosticApp
これは、リリースページからdiagnostics-X.X.X-dist.zip
ではなくソースコードファイルを誤ってダウンロードしたことを示します。Could not retrieve the Elasticsearch version due to a system or network error - unable to continue.
これは、診断がクラスターに対してコマンドを実行できなかったことを示します。クラスターのヘルスを再度ポーリングし、診断バッチまたはシェルファイルを実行する際に同じパラメータを使用していることを確認してください。security_exception
にis unauthorized for user
を含む:
提供されたユーザーには、診断ツールを実行するのに十分な管理権限がありません。別のユーザーを使用するか、ユーザーにrole:superuser
権限を付与してください。