OpenTelemetryによる可観測性
AEM as a Cloud ServiceがOpenTelemetryを使用して、トレース、指標、ログを選択したApplication Performance Monitoring (APM)プラットフォームに送信する方法を説明します。
Adobeは、AEM as a Cloud Serviceの組み込みのApplication Performance Monitoring (APM)統合を、トレース、指標、ログの収集とエクスポートのためのオープンスタンダードであるOpenTelemetryに置き換えます。 OpenTelemetryを使用すると、独自の APM エンドポイントを使用して、AEMを他のアプリケーションと一緒にモニタリングし、チームが既に知っているツールを使用します。 詳しくは、OpenTelemetry ドキュメント を参照してください。
この記事では、統合が提供する内容、テレメトリがAEMからAPM プラットフォームに流れる方法、制御する内容、および有効にする前に考慮すべき事項について説明します。 設定チュートリアル では、AEM環境にOpenTelemetryを設定する方法について説明します。
OpenTelemetryの理由
OpenTelemetryを使用すると、次のことが可能になります。
- お使いのプラットフォームを選択してください: HTTPS (OTLP/HTTPS)経由でOpenTelemetry Protocolを受け入れるバックエンドにテレメトリを送信します。現在のプロバイダーを含め、OTLPをサポートしています。
- 全体像を見る:個別のメカニズムではなく、1つの統合を通じてトレース、指標、ログを取得します。
- 迅速な調査:遅いリクエストまたは失敗したリクエストを検索し、JVMの状態を経時的に追跡し、インシデント時にAEMの動作を他のサービスと関連付けます。
- 引き続き管理: Cloud Manager Config パイプラインを使用して、データの送信先を設定し、独自のプラットフォームでダッシュボード、アラート、リテンションを管理します。
Adobeは、AEMで実行されるOpenTelemetry Java エージェントを提供および更新するので、インストールやアップグレードは行いません。 テレメトリーの場所を決めます。
仕組み
次の図は、AEM サービスからオブザーバビリティ プラットフォームへのテレメトリの論理フローを示しています。
OpenTelemetry Java エージェントは、AEM サービスからアプリケーションテレメトリを収集し、AEM環境内で動作するOpenTelemetry Collectorに送信します。 コレクターはテレメトリを処理し、設定されたオブザーバビリティ プラットフォームにOTLP/HTTPS経由で転送します。
AEM アプリケーションで生成されたテレメトリのみが送信されます。 内部ホスト名、アドレス、コンテナ識別子、オペレーティングシステムやプロセスの詳細など、基礎となるランタイムとプラットフォームに関する情報は、データが環境から離れる前に削除されます。
遠隔測定の詳細
otel.yaml ファイルを設定およびデプロイします。設定チュートリアル を参照してください。いくつかの点に留意する必要があります。
- トレースをアプリケーションリクエストに集中させるために、ヘルスプローブやスケジューラージョブ(Quartz)などの大量の内部アクティビティがフィルタリングされます。
- Sling リソース解決、OSGi サービス、JCR アクセスなど、きめ細かいAEM フレームワーク内部スパンは、このリリースでは発行されません。
- 指標は、標準のOpenTelemetry名(例:
jvm.memory.used、jvm.gc.duration、jvm.thread.count、http.server.request.duration)を使用します。
AEMのサービスの特定方法
すべてのトレース、指標、ログエントリには、プラットフォームが環境と階層を区別できるようにするリソース属性が含まれています。
-
service.nameは、次のパターンに従って、プログラム、環境、層、環境タイプを識別します。code language-text cm-p<program>-e<environment>-aem-<author|publish|preview>-<environment-type>例えば、
cm-p12345-e67890-aem-publish-prodは、実稼動環境で実行されている、プログラム 12345ード内の環境67890の公開サービスです。 -
deployment.environmentは、prodやstageなどの環境タイプを識別します。
これらの属性を使用して、テレメトリをフィルタリングおよびグループ化し、同じサービスのトレースおよび指標とログを関連付けます。
制御するもの
Cloud Manager Config パイプラインを使用してconfig/otel.yaml ファイルをデプロイすることにより、統合を設定します。
設定ファイルの例は次のとおりです。
kind: "Otel"
version: "v1"
metadata:
envTypes:
- "dev"
- "stage"
- "prod"
data:
enabled: true
type: "generic"
endpoint: "<YOUR_OTLP_HTTPS_ENDPOINT>"
authHeaderName: "Authorization"
authHeaderValue: "${{secrets.OTEL_CUSTOMER_AUTH}}"
metrics: true
logs: true
advancedNetworking: false
設定によって次の項目が決定されます。
- 適用される環境タイプ (
prod、stage、dev) - 宛先タイプ (
newrelic、dynatrace、genericなど) OTLP/HTTPS エンドポイントを使用して - Cloud Manager secret環境変数
OTEL_CUSTOMER_AUTHとして参照される認証資格情報(authHeaderNameおよびauthHeaderValue) - トレースに加えて、指標(
metrics: true)とログ(logs: true)をエクスポートするかどうか - 高度なネットワーク (
advancedNetworking: true)が宛先に使用されているかどうか
認証資格情報(authHeaderValue)は、OTEL_CUSTOMER_AUTHという名前のCloud Manager secret環境変数として保存され、設定ファイルから参照する必要があります。 資格情報をプレーンテキストとしてリポジトリに絶対に保存しないでください。
OTLP/HTTPS エンドポイントがプライベートである場合、または既知の安定したIP アドレスからのアウトバウンドトラフィックが必要な場合は、専用エグレスで アドバンストネットワーク を有効にします。 advancedNetworking設定は、Cloud Managerが環境に対してアドバンスドネットワークを既にプロビジョニングしていない限り効果がありません。 パブリック SaaS エンドポイントは、標準のアウトバウンドネットワークパスを使用します。
サポートされる宛先
次のようなOTLP/HTTPS エンドポイントを公開する任意のAPM プラットフォームにテレメトリを送信できます。
- New Relic
- Dynatrace
- Datadog
- Grafana Cloud
- Splunk Observability Cloud
- Dash0
- ハニカム
- 弾性観察可能性
- Sumo Logic
- ServiceNow Cloud Observability
このリストがすべてではありません。 OpenTelemetryは、テレメトリ形式とエクスポートプロトコルを定義し、選択したプラットフォームは、データのクエリ、ビジュアライゼーション、保持、およびアラート方法を決定します。
観察可能なプラットフォームの選択
テレメトリを受信するには、OTLP/HTTPSを受け入れるプラットフォームが必要です。 Adobeは提供していないので、独自のオブザーバビリティ基盤を持ち込む必要があります。
上記のいずれかのプラットフォームをすでに利用している場合は、ここから始めてください。 そうでない場合は、ベンダーホスト(SaaS)プラットフォームとセルフホスト(Self-hosted)プラットフォームのどちらかを選択します。
事前準備
- 環境:実稼動環境、ステージ環境、開発環境でOpenTelemetryを個別に有効にできます。 ただし、HIPAA スコープの環境、サンドボックスプログラム、および高速開発環境(RDE)はサポートされていません。
- バージョン:この統合は、OpenTelemetry Java エージェント 2.xとOTLP/HTTPS エクスポート プロトコルをサポートしています。
次の手順
設定チュートリアル に従って、AEM WKND サンプルプロジェクトまたは独自のAEM プロジェクトでOpenTelemetryを設定します。