Amazon OpenSearch Service のトレース分析 - Amazon OpenSearch サービス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon OpenSearch Service のトレース分析

OpenSearch Observability プラグインの一部であるトレース分析を使用して、分散アプリケーションからのトレースデータを分析できます。ISM では、OpenSearch または Elasticsearch 7.9 以降が必要です。

分散アプリケーションでは、ユーザーがボタンをクリックするなどの単一のオペレーションで、一連の拡張イベントをトリガーできます。例えば、アプリケーションのフロントエンドがバックエンドサービスを呼び出し、バックエンドサービスはデータベースのクエリを実行し、クエリを処理して結果を返します。次に、最初のバックエンドサービスがフロントエンドに確認を送信し、フロントエンドは UI を更新します。

トレース分析を使用すると、このイベントのフローを可視化し、パフォーマンスの問題を特定できます。

注記

このドキュメントでは、Trace Analytics の概要を説明します。包括的なドキュメントについては、オープンソースの OpenSearch ドキュメントの「Trace Analytics」を参照してください。

Trace analytics dashboard showing time spent by service and span detail for various operations.

前提条件

トレース分析では、計測をアプリケーションに追加し、OpenTeleMetry がサポートするライブラリ (JaegerZipkin など) を使用してトレースデータを生成します。このステップは、OpenSearch Service の外部で完全に実行されます。「AWS Distro for OpenTelemetry ドキュメント」には、Java、Python、Go、JavaScript など、開始するのに役立つ多くのプログラミング言語のアプリケーション例が含まれています。

アプリケーションに計測を追加すると、OpenTelemetry Collector は、アプリケーションからデータを受け取り、OpenTelemetry データにそれをフォーマットします。「GitHubでのレシーバーのリスト」を参照してください。AWSOpenTelemetry の分散には、[AWS X-Ray のレシーバー] が含まれます。

最後に、Amazon OpenSearch Ingestion を使用して OpenSearch で使用する OpenTelemetry データをフォーマットできます。

OpenTelemetry Collector の設定例

Amazon OpenSearch Ingestion とともに OpenTelemetry Collector を使用するには、次の設定例を試してください。

extensions: sigv4auth: region: "us-east-1" service: "osis" receivers: jaeger: protocols: grpc: exporters: otlphttp: traces_endpoint: "https://pipeline-endpoint.us-east-1.osis.amazonaws.com/opentelemetry.proto.collector.trace.v1.TraceService/Export" auth: authenticator: sigv4auth compression: none service: extensions: [sigv4auth] pipelines: traces: receivers: [jaeger] exporters: [otlphttp]

OpenSearch Ingestion の設定例

OpenSearch Service ドメインにトレースデータを送信するには、次の OpenSearch Ingestion パイプラインの設定例を試します。パイプラインの作成手順については、「Amazon OpenSearch Ingestion パイプラインの作成」を参照してください。

version: "2" otel-trace-pipeline: source: otel_trace_source: "/${pipelineName}/ingest" processor: - trace_peer_forwarder: sink: - pipeline: name: "trace_pipeline" - pipeline: name: "service_map_pipeline" trace-pipeline: source: pipeline: name: "otel-trace-pipeline" processor: - otel_traces: sink: - opensearch: hosts: ["https://domain-endpoint"] index_type: trace-analytics-raw aws: # IAM role that OpenSearch Ingestion assumes to access the domain sink sts_role_arn: "arn:aws:iam::{account-id}:role/pipeline-role" region: "us-east-1" service-map-pipeline: source: pipeline: name: "otel-trace-pipeline" processor: - service_map: sink: - opensearch: hosts: ["https://domain-endpoint"] index_type: trace-analytics-service-map aws: # IAM role that the pipeline assumes to access the domain sink sts_role_arn: "arn:aws:iam::{account-id}:role/pipeline-role" region: "us-east-1"

sts_role_arn オプションで指定するパイプラインロールには、シンクへの書き込み許可が必要です。パイプラインロールのアクセス許可を設定する手順については、「Amazon OpenSearch Ingestion のロールとユーザーの設定」を参照してください。

トレースデータの探索

Dashboards ビューでは、HTTP メソッドとパス別にトレースをグループ化して、特定のオペレーションに関連付けられた平均レイテンシー、エラー率、傾向を確認できるようにします。より焦点を絞ったビューについては、トレースグループ名でフィルタリングを試みてください。

Dashboard showing latency metrics for HTTP GET /dispatch trace group with 717.58 ms average latency.

トレースグループを構成するトレースをドリルダウンするには、右側の列でトレースの数を選択します。次に、詳細な概要については、個々のトレースを選択します。

Services ビューでは、アプリケーション内のすべてのサービスと、さまざまなサービスが相互に接続する方法を示す対話型マップを一覧表示します。ダッシュボード (オペレーションごとに問題を特定するのに役立つ) とは対照的に、サービスマップはサービスごとに問題を特定するのに役立ちます。エラー率またはレイテンシーでソートを試みて、アプリケーションの潜在的な問題領域を把握してください。

Services dashboard showing performance metrics for 6 microservices, including latency and error rates.