このページでは、Kubernetes アプリケーションを手動でインストゥルメント化する際に、クラスタエージェントと APM コンテナの関連付けを設定する方法について説明します。「Kubernetes」を参照してください。

APM と関連付けると、クラスタエージェントによってモニタされるアプリケーションコンテナがコントローラの [Application/Container] ビューに表示されます。Cluster Agent Pod ダッシュボードの [Pod Details] ページには、APM Node ダッシュボードへのリンクも表示されます。

この設定は、クラスタエージェントが実行されているクラスタで init コンテナまたは Dockerfile を使用して手動でアプリケーションをインストゥルメント化する場合にのみ必要です。クラスタエージェントの自動インストゥルメンテーションを使用すると、APM コンテナの関連付けが自動的に処理されます。「クラスタエージェントを使用したアプリケーションの自動インストゥルメンテーション」を参照してください。

APM コンテナの関連付けでは、特定の言語エージェントの UNIQUE_HOST_ID ( または APPDYNAMICS_AGENT_UNIQUE_HOST_ID) プロパティを使用します。このプロパティの設定方法の例については、次の言語固有のコンテナインストールページを参照してください。

次の表に、ランタイム、プラットフォーム、およびアプリケーション エージェントのタイプに基づいて UNIQUE_HOST_ID 値の割り当てに必要なコマンドを示します。

プラットフォーム(Platform)コンテナ ランタイムコンテナ ID のコマンド
KubernetesDocker
UNIQUE_HOST_ID=$(sed -rn '1s#.*/##; 1s/(.{12}).*/\1/p' /proc/self/cgroup)

OpenShift 3.11

Docker
UNIQUE_HOST_ID=$(sed -rn '1s#.*/##; 1s/docker-(.{12}).*/\1/p' /proc/self/cgroup)

OpenShift 4.x

CRI-O
UNIQUE_HOST_ID=$(cat /proc/self/cgroup | head -1 | awk -F '/' ' {print $NF}' | awk -F '-' '{print $2}' | cut -c 1-12) ; if [ -z $UNIQUE_HOST_ID]; then UNIQUE_HOST_ID=$(cat /proc/self/cgroup | head -1 | awk -F '/' '{print $NF} ' | cut -c 1-12) ; fi ;

Docker を使用した Kubernetes

エージェントが自動的に UNIQUE_HOST_ID 値を取得するため、Java APM 相関はすぐに機能します。UNIQUE_HOST_ID プロパティを持つ他のエージェントについては、UNIQUE_HOST_ID=$(sed -rn '1s#.*/##; 1s/-(.{12}).*/\1/p' /proc/self/cgroup) コマンドを使用してプロパティを設定する必要があります。

uniqueHostId プロパティを持つすべての言語エージェントに対して、アプリケーションイメージの作成時にこのメソッドを使用してプロパティを設定します。

UNIQUE_HOST_ID=$(sed -rn '1s#.*/##; 1s/(.{12}).*/\1/p' /proc/self/cgroup)
JAVA_OPTS="$JAVA_OPTS -Dappdynamics.agent.uniqueHostId=$UNIQUE_HOST_ID"
YML

アプリケーションイメージを変更できない場合は、command 属性を変更して、Kubernetes の導入仕様に UNIQUE_HOST_ID を割り当てることができます。

command: ["/bin/sh"]
args: ["-c", "UNIQUE_HOST_ID=$(sed -rn '1s#.*/##; 1s/(.{12}).*/\1/p' /proc/self/cgroup) && java -Dappdynamics.agent.uniqueHostId=$UNIQUE_HOST_ID $JAVA_OPTS -jar /java-services.jar"]
YML

このアプローチは、アプリケーションのエントリポイントが既知であることを意味します。この例では、元のエントリポイントは次のとおりです。

java $JAVA_OPTS -jar /java-services.jar
YML

Docker ランタイムを使用した OpenShift 3.11

Docker ランタイムを使用した OpenShift v3.10 および v3.11 で UNIQUE_HOST_ID プロパティを持つすべての言語エージェントに対して、アプリケーションイメージの作成時にこのメソッドを使用してプロパティを設定します。

UNIQUE_HOST_ID=$(sed -rn '1s#.*/##; 1s/docker-(.{12}).*/\1/p' /proc/self/cgroup)
YML

アプリケーションイメージを変更できない場合は、command 属性を変更して、OpenShift v3.10 または v3.11 の導入仕様に UNIQUE_HOST_ID を割り当てることができます。

command: ["/bin/sh"]
args: ["-c", "UNIQUE_HOST_ID=$(sed -rn '1s#.*/##; 1s/docker-(.{12}).*/\1/p' /proc/self/cgroup) && java -Dappdynamics.agent.uniqueHostId=$UNIQUE_HOST_ID $JAVA_OPTS -jar /java-services.jar"]
YML

このアプローチは、アプリケーションのエントリポイントが既知であることを意味します。この例では、元のエントリポイントは次のとおりです。

java $JAVA_OPTS -jar /java-services.jar
YML

CRI-O ランタイムを使用した OpenShift 4.x

CRI-O ランタイムを使用した OpenShift v4.x で UNIQUE_HOST_ID プロパティを持つすべての言語エージェントに対して、アプリケーションイメージの作成時にこのメソッドを使用してプロパティを設定します。

UNIQUE_HOST_ID=$(cat /proc/self/cgroup | head -1 | awk -F '/' '
{print $NF}' | awk -F '-' '{print $2}' | cut -c 1-12) ; if [ -z $UNIQUE_HOST_ID ]; then UNIQUE_HOST_ID=$(cat /proc/self/cgroup | head -1 | awk -F '/' '{print $NF}' | cut -c 1-12) ; fi ;
YML

アプリケーションイメージを変更できない場合は、command 属性を変更して、OpenShift v4.x の導入仕様に UNIQUE_HOST_ID を割り当てることができます。

command: ["/bin/sh"]
args: ["-c", "UNIQUE_HOST_ID=$(cat /proc/self/cgroup | head -1 | awk -F '/' '{print $NF}' | awk -F '-' '{print $2}' | cut -c 1-12) ; if [ -z $UNIQUE_HOST_ID ]; then UNIQUE_HOST_ID=$(cat /proc/self/cgroup | head -1 | awk -F '/' '{print $NF}' | cut -c 1-12) ; fi ;  java -Dappdynamics.agent.uniqueHostId=$UNIQUE_HOST_ID $JAVA_OPTS -jar /java-services.jar"]
YML

このアプローチは、アプリケーションのエントリポイントが既知であることを意味します。この例では、元のエントリポイントは次のとおりです。

java $JAVA_OPTS -jar /java-services.jar
YML