Download PDF
Download page アプリケーション エージェントを手動で設定してクラスタエージェントと関連付ける.
アプリケーション エージェントを手動で設定してクラスタエージェントと関連付ける
このページでは、Kubernetes アプリケーションを手動でインストゥルメント化するときに、APM コンテナとクラスタエージェントの相関関係を設定する方法について説明します。「Kubernetes」を参照してください。
APM 相関を確立すると、クラスタエージェントによってモニターされるアプリケーションコンテナが、[Application/Container] ビューの下のコントローラに表示されます。[Cluster Agent Pod] ダッシュボードでは、[APM Node] ダッシュボードへのリンクも [Pod Details] ページで提供されます。
Kubernetes 1.25 以降の場合
次の設定は、Kubernetes 1.25
以降の場合にのみ必要です。
エージェントをクラスタエージェントと関連付ける必要がある場合は、自動インストゥルメンテーションを有効にして、containerAppCorrelationMethod
を proxy
に設定する必要があります。これは、エージェントがアプリケーションコンテナのコンテナ ID を取得するために必要です。
前述の手順を使用して自動インストゥルメンテーションを有効にすると、自動インストゥルメンテーションはアプリケーションをインストゥルメント化しませんが、コンテナメタデータサーバーを起動してコンテナ ID を取得します。nsToExcludeRegex
パラメータを使用して、特定の名前空間を無視することを選択できます。
アプリケーション エージェントを Kubernetes 1.25
以降のクラスタエージェントと関連付けるには、次の手順を実行する必要があります。
- クラスタエージェントをバージョン
23.9
以降にアップグレードします - アプリケーションが実行されているポッドに次の環境変数(env)を追加します。
APPDYNAMICS_CONTAINER_NAME
:<インストゥルメント化されたコンテナの名前>APPDYNAMICS_CONTAINERINFO_FETCH_SERVICE
:'cluster-metadata-service.<namespace of the cluster agent>:<metadataServerPort(default 9090)>'
APPDYNAMICS_POD_NAMESPACE
:<アプリケーションポッドの名前空間>
- 構成ファイルの
spec
セクションで、containerAppCorrelationMethod
パラメータの値をproxy
として設定します。このパラメータの詳細については、「Correlate Application Containers with AppAgents (For Kubernetes version >=1.25)」を参照してください。 - 構成ファイルを編集して、インストゥルメンテーション方式を
Env
として含めます。これにより、アプリケーションコンテナとクラスタエージェントの関連付けが有効になります。手動インストゥルメンテーションでは、これらのプロパティを設定する必要があります。これらのプロパティを適用すると、アプリケーションは、手動アプリケーション インストゥルメンテーション用にクラスタエージェントと関連付けることができます。これにより、自動インストゥルメンテーション機能が有効になることはありません。
(cluster-agent.yaml 内)
instrumentationMethod: None
Sample cluster-agent.yaml
apiVersion: cluster.appdynamics.com/v1alpha1 kind: Clusteragent metadata: name: k8s-cluster-agent namespace: appdynamics spec: instrumentationMethod: Env
YML(values.yaml 内)
のinstrumentationConfig
enabled: true
Sample values.yaml
deploymentMode: MASTER clusterAgent: nsToMonitorRegex: .* instrumentationConfig: enabled: true instrumentationMethod: Env
YML自動インストゥルメンテーションの有効化の詳細については、「自動インストゥルメンテーションの設定」を参照してください。
Kubernetes 1.25 未満の場合
次の設定は、Kubernetes 1.25 未満の場合にのみ適用されます。
この構成は、クラスタエージェントが実行されているクラスタ内のアプリケーションを手動でインストゥルメント化するために init コンテナまたは Dockerfile を使用する場合にのみ必要です。クラスタエージェントの自動インストゥルメンテーションを使用すると、APM コンテナの関連付けが自動的に処理されます。「クラスタエージェントを使用したアプリケーションの自動インストゥルメンテーション」を参照してください。
APM コンテナの関連付けでは、特定の言語エージェントの UNIQUE_HOST_ID (
または APPDYNAMICS_AGENT_UNIQUE_HOST_ID)
プロパティを使用します。このプロパティの設定方法の例については、次の言語固有のコンテナインストールページを参照してください。
次の表に、ランタイム、プラットフォーム、およびアプリケーション エージェントのタイプに基づいて UNIQUE_HOST_ID
値の割り当てに必要なコマンドを示します。
プラットフォーム(Platform) | コンテナ ランタイム | コンテナ ID のコマンド |
---|---|---|
Kubernetes | Docker | 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"
アプリケーションイメージを変更できない場合は、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"]
このアプローチは、アプリケーションのエントリポイントが既知であることを意味します。この例では、元のエントリポイントは次のとおりです。
java $JAVA_OPTS -jar /java-services.jar
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)
アプリケーションイメージを変更できない場合は、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"]
このアプローチは、アプリケーションのエントリポイントが既知であることを意味します。この例では、元のエントリポイントは次のとおりです。
java $JAVA_OPTS -jar /java-services.jar
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 ;
アプリケーションイメージを変更できない場合は、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"]
このアプローチは、アプリケーションのエントリポイントが既知であることを意味します。この例では、元のエントリポイントは次のとおりです。
java $JAVA_OPTS -jar /java-services.jar