診断情報の取得

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:localhostport:9200、およびusername:elasticを使用して、次のcurlリクエストを使用します:
    1. curl -X GET -k -u elastic -p https://localhost:9200/_cluster/health
    HTTP 200 OKレスポンスを受け取った場合、次のステップに進むことができます。異なるレスポンスコードを受け取った場合は、問題を診断する前に進む前に確認してください。
  • 2. 同じ環境パラメータを使用して、診断ツールスクリプトを実行します。
    ツールに渡すことができるパラメータに関する情報は、診断パラメータリファレンスを参照してください。
    次のコマンドオプションが推奨されます:
    Unixベースのシステム
    1. sudo ./diagnostics.sh --type local --host localhost --port 9200 -u elastic -p --bypassDiagVerify --ssl --noVerify
    Windows
    1. sudo .\diagnostics.bat --type local --host localhost --port 9200 -u elastic -p --bypassDiagVerify --ssl --noVerify

スクリプト実行モード

スクリプトは、3つのmodesで実行できます:

  • local(デフォルト、推奨):Elasticsearch APIをポーリングし、オペレーティングシステム情報を収集し、クラスターとGCログを取得します。
  • remote:該当するターゲットサーバーにsshセッションを確立し、localと同じ情報を取得します。
  • apiElasticsearch APIをポーリングします。他のすべてのデータは手動で収集する必要があります。
    • 3. スクリプトが完了したら、diagnostic.logにエラーが記録されていないことを確認します。ログファイルにエラーが含まれている場合は、diagnostic.logのエラーを診断するを参照してください。
    • 4. スクリプトがエラーなしで完了した場合、<diagnostic type>-diagnostics-<DateTimeStamp>.zip形式のアーカイブが作業ディレクトリまたは指定した出力ディレクトリに作成されます。必要に応じて診断アーカイブを確認または共有できます。

非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_exceptionis unauthorized for userを含む:
    提供されたユーザーには、診断ツールを実行するのに十分な管理権限がありません。別のユーザーを使用するか、ユーザーにrole:superuser権限を付与してください。