cgroupv2 環境でのコンテナ ID の抽出
アプリケーションが自動的にインストゥルメント化される場合は、「例 3:クラスタエージェントの自動インストルメンテーションの有効化」を参照してください。
アプリケーションが自動的にインストゥルメント化されない場合は、Java エージェント アプリケーションをクラスタエージェントと関連付けてコンテナ ID を取得するように設定します。「アプリケーション エージェントを手動で設定してクラスタエージェントと関連付ける」を参照してください。
Kubernetes 1.25 以降にアップグレードすると、 Java エージェントがアプリケーションコンテナのコンテナ ID を正しく識別できない場合があります。検出されたコンテナ ID には正しい形式とシンタックス がありますが、Kubernetes で使用される実際のコンテナ ID とは異なります。この不一致により、APM データとインフラストラクチャの関連付けが中断されます。Kubernetes 1.25 以降で正しいコンテナ ID を抽出するには、Kubernetes API サーバーをクエリする必要があります。
-
バージョン 25.1.0 より前では、Java エージェントが 3 回の試行後にコンテナ ID を取得できなかった場合、そのエージェントはすべてゼロ(
00000)のコンテナ ID でコントローラに登録され、エラーがログに記録されます。問題を解決するには、コンテナまたはエージェントログを確認してください。 -
バージョン 25.1.0 以降の Java エージェントは、有効なコンテナ ID を検出した場合にのみコンテナ ID を割り当てます。15 回(約 10 分間)試行してもコンテナ ID を取得できない場合は、エラーをログに記録し、コントローラへの登録は行いません。ただし、アプリケーションはデフォルトの 1 分間のタイムアウト後、通常どおり起動します。このような場合は、コンテナまたはエージェントログを確認して問題を解決してください。
バージョン 25.3.0 以降では、
APPDYNAMICS_AGENT_FAIL_IF_INVALID_CONTAINER_ID環境変数またはappdynamics.agent.fail.if.invalid.container.idシステムプロパティのいずれかを false に設定することにより、このデフォルトの動作を変更できます。これにより、Java エージェントが無効なコンテナ ID でもアプリケーション モニタリングを登録して提供できるようになります。Java エージェントは、Kubernetes によって設定された環境変数
KUBERNETES_SERVICE_HOSTおよびKUBERNETES_SERVICE_PORTを使用して、Kubernetes API サーバーの URL を識別します。さらに、Java エージェントはHOSTNAME環境変数に依存し、クラスタエージェントをクエリするポッド名として使用します。コンテナ ID を正確に抽出するには、これらの変数を変更しないまま保持することが重要です。バージョン 25.3.0 以降では、
HOSTNAME環境変数を変更する場合、APPDYNAMICS_POD_NAME環境変数をポッド名に設定することが重要です。これにより、Java エージェントがコンテナ ID を正常に抽出できるようになります。次の Kubernetes の設定を使用して、ポッドの属性に基づいて環境変数を動的に設定できます。- name: APPDYNAMICS_POD_NAME valueFrom: fieldRef: fieldPath: metadata.name
KUBERNETES_SERVICE_HOST および KUBERNETES_SERVICE_PORT を使用して、Kubernetes API サーバーの URL を識別します。さらに、Java エージェントは HOSTNAME 環境変数に依存し、クラスタエージェントをクエリするポッド名として使用します。コンテナ ID を正確に抽出するには、これらの変数を変更しないまま保持することが重要です。