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を設定する方法について説明します。

AVAILABILITY
この機能は​ 可用性が制限 ​されています。 これを使用するには、aemcs-apm-beta@adobe.comに電子メールでアクセスをリクエストします。Adobeでは、リクエストに返信した直後に、お客様の環境でOpenTelemetryを有効にします。 現在Adobeの組み込みAPM統合を使用している場合、OpenTelemetryが有効になると、それらの2つを同時に実行できないため、その統合はデータの送信を停止します。
HIPAA スコープの環境、迅速な開発環境(RDE)、およびサンドボックスで使用できる​ not ​であることに注意してください。

OpenTelemetryの理由

OpenTelemetryを使用すると、次のことが可能になります。

  • お使いのプラットフォームを選択してください: HTTPS (OTLP/HTTPS)経由でOpenTelemetry Protocolを受け入れるバックエンドにテレメトリを送信します。現在のプロバイダーを含め、OTLPをサポートしています。
  • 全体像を見る:個別のメカニズムではなく、1つの統合を通じてトレース、指標、ログを取得します。
  • 迅速な調査:遅いリクエストまたは失敗したリクエストを検索し、JVMの状態を経時的に追跡し、インシデント時にAEMの動作を他のサービスと関連付けます。
  • 引き続き管理: Cloud Manager Config パイプラインを使用して、データの送信先を設定し、独自のプラットフォームでダッシュボード、アラート、リテンションを管理します。

Adobeは、AEMで実行されるOpenTelemetry Java エージェントを提供および更新するので、インストールやアップグレードは行いません。 テレメトリーの場所を決めます。

仕組み

次の図は、AEM サービスからオブザーバビリティ プラットフォームへのテレメトリの論理フローを示しています。

AEM サービスからCustomer Obobservability Platformへのテレメトリの論理フロー

OpenTelemetry Java エージェントは、AEM サービスからアプリケーションテレメトリを収集し、AEM環境内で動作するOpenTelemetry Collectorに送信します。 コレクターはテレメトリを処理し、設定されたオブザーバビリティ プラットフォームにOTLP/HTTPS経由で転送します。

AEM アプリケーションで生成されたテレメトリのみが送信されます。 内部ホスト名、アドレス、コンテナ識別子、オペレーティングシステムやプロセスの詳細など、基礎となるランタイムとプラットフォームに関する情報は、データが環境から離れる前に削除されます。

遠隔測定の詳細

シグナル
得られるもの
有効にする方法
トレース
アプリケーションが処理するリクエスト(インバウンド HTTP リクエスト、サーブレット処理、アウトバウンドコール)のスパン。
Cloud Manager Config パイプラインを使用してotel.yaml ファイルを設定およびデプロイします。設定チュートリアル ​を参照してください。
指標
JVM ランタイム指標(メモリ、ガベージコレクション、スレッド、CPU使用率)およびHTTP サーバーリクエスト指標(レート、レイテンシ、エラーレート)。
Cloud Manager Config パイプラインを使用して、metrics: trueを含むotel.yaml ファイルを設定してデプロイします。設定チュートリアル ​を参照してください。
ログ
AEM アプリケーションログエントリ(WARN以降)。OpenTelemetry ログ信号を使用して送信されます。 メモ DispatcherとCDN ログは送信されません。
Cloud Manager Config パイプラインを使用して、logs: trueを含むotel.yaml ファイルを設定してデプロイします。設定チュートリアル ​を参照してください。

いくつかの点に留意する必要があります。

  • トレースをアプリケーションリクエストに集中させるために、ヘルスプローブやスケジューラージョブ(Quartz)などの大量の内部アクティビティがフィルタリングされます。
  • Sling リソース解決、OSGi サービス、JCR アクセスなど、きめ細かいAEM フレームワーク内部スパンは、このリリースでは発行されません。
  • 指標は、標準のOpenTelemetry名(例:jvm.memory.used、jvm.gc.duration、jvm.thread.count、http.server.request.duration)を使用します。
WARNING
OpenTelemetry および ~ Log Forwardingを通じて同じ宛先にログを送信すると、重複したログメッセージが届きます。 宛先ごとに1つのパスのみを有効にするか、各宛先に送信します。
ログ転送は別のメカニズムであり、現在も引き続き機能しています。

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)プラットフォームのどちらかを選択します。

ベンダーホスティング(SaaS)
セルフホスト
セットアップ
インストールまたは操作するものはありません。
プラットフォームをインストールし、アップグレードし、拡張します。
データの場所
テレメトリは環境を離れ、セキュリティまたはプライバシーのレビューが必要になる場合があります。
テレメトリは、制御できるインフラストラクチャ内に残ります。
機能
ダッシュボード、アラート、APM ビューは通常、ビルトインされています。 機能によってはベンダー特有のものもあります。
機能は、選択したソフトウェアによって異なります。
コスト
価格は通常、データ量にもとづいて決定されます。
インフラとエンジニアリングの時間に対して支払いを行います。
可用性
ベンダーがサービスを運用します。
アップタイム、ストレージ、バックアップ、リテンションを管理します。

事前準備

  • 環境:実稼動環境、ステージ環境、開発環境でOpenTelemetryを個別に有効にできます。 ただし、HIPAA スコープの環境、サンドボックスプログラム、および高速開発環境(RDE)はサポートされていません。
  • バージョン:この統合は、OpenTelemetry Java エージェント 2.xとOTLP/HTTPS エクスポート プロトコルをサポートしています。

次の手順

設定チュートリアル ​に従って、AEM WKND サンプルプロジェクトまたは独自のAEM プロジェクトでOpenTelemetryを設定します。

その他のリソース

recommendation-more-help
experience-manager-learn-help-cloud-service