cgroupv2 環境でのコンテナ ID の抽出

注: このドキュメントは、クラスタエージェントを使用していない場合にのみ適用されます。クラスタエージェントを使用している場合は、次のシナリオに基づいてコンテナ 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
重要: Java エージェントは、Kubernetes によって設定された環境変数 KUBERNETES_SERVICE_HOST および KUBERNETES_SERVICE_PORT を使用して、Kubernetes API サーバーの URL を識別します。さらに、Java エージェントは HOSTNAME 環境変数に依存し、クラスタエージェントをクエリするポッド名として使用します。コンテナ ID を正確に抽出するには、これらの変数を変更しないまま保持することが重要です。