Java エージェント環境変数の設定

ConfigMap を使用したアプリケーション サーバ エージェントの設定

ConfigMap を使用したアプリケーション サーバ エージェントの設定
  1. ConfigMap を使用して、名前空間内のアプリケーション間で共有する Java エージェント環境変数を設定します。
    apiVersion: v1
                            data:
                            APPDYNAMICS_AGENT_APPLICATION_NAME: "eCommerce"
                            APPDYNAMICS_AGENT_ACCOUNT_NAME: "<value>"
                            APPDYNAMICS_CONTROLLER_HOST_NAME: "<value>"
                            APPDYNAMICS_CONTROLLER_PORT: "<value>"
                            APPDYNAMICS_CONTROLLER_SSL_ENABLED: "<value>"
                            APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME: "true"
                            APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME_PREFIX: "<value>"
                            kind: ConfigMap
                            metadata:
                            name: ecommerce-java-config
  2. 名前空間に ConfigMap を適用します。
    kubectl -n ecommerce apply -f ecommerce-java-config.yaml
  3. 導入仕様を更新して ConfigMap を参照します。
    spec:
                            containers:
                            - name: java-app
                            envFrom:
                            - configMapRef:
                            name: ecommerce-java-config
                            ...

コントローラのアクセスキーへの秘密の使用

コントローラのアクセスキーへの秘密の使用
  1. kubectl を使用して秘密を作成します。
    kubectl -n ecommerce create secret generic appd-agent-secret --from-literal=access-key=<access-key>
  2. 導入仕様を更新して、秘密を参照します。
    spec:
                            containers:
                            - name: java-app
                            env:
                            - name: APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEY
                            valueFrom:
                            secretKeyRef:
                            name: appd-agent-secret
                            key: access-key

導入仕様でのアプリケーション固有の設定

導入仕様にアプリケーション固有の階層名環境変数 APPDYNAMICS_AGENT_TIER_NAME を設定します。

spec:
      containers:
      - name: java-app
      env:
      - name: APPDYNAMICS_AGENT_TIER_NAME
      value: ecommerce-service

導入仕様への -javaagent 引数の追加

導入仕様を編集して、次の例に示されているように、アプリケーションコンテナのスタートアップコマンドに -javaagent 引数を追加します。

spec:
      containers:
      command: ["/bin/sh"]
      args: ["-c", "java -javaagent:/opt/appdynamics/javaagent.jar -jar /myapp.jar"]

Spring Boot など一部の Java フレームワークでは、標準的な JAVA_TOOL_OPTIONS 環境変数を利用して -javaagent 引数を含めることができます。

(OpenShift のみ)APPDYNAMICS_AGENT_UNIQUE_HOST_ID 環境変数の設定

APPDYNAMICS_AGENT_UNIQUE_HOST_IDOpenShift で実行する Java アプリケーションの場合は、 環境変数を設定して、クラスタエージェントとの APM 相関を有効にします。APPDYNAMICS_AGENT_UNIQUE_HOST_ID 値はランタイム値に依存するため、コンテナのスタートアップコマンドでこの環境変数を設定します。

たとえば、OpenShift 3.10 または 3.11 環境の場合は、次のように環境変数を設定します。

spec:
      containers:
      command: ["/bin/sh"]
      args: ["-c", "APPDYNAMICS_AGENT_UNIQUE_HOST_ID=$(sed -rn '1s#.*/##; 1s/docker-(.{12}).*/\\1/p' /proc/self/cgroup) && java -javaagent:/opt/appdynamics/javaagent.jar -jar /myapp.jar"]

ユースケースについては、「アプリケーション エージェントを手動で設定してクラスタエージェントと関連付ける」に記載されている値を参照してください。

(オンプレミスコントローラのみ)コンテナへのコントローラ証明書のコピー

オンプレミスのコントローラ証明書が必要な場合は、ConfigMap を定義して cert ファイルを参照し、導入仕様で volume mount を使用して ConfigMap の内容をコンテナにマウントします。

$ kubectl create configmap appd-cert --from-file=cacerts.jks

この例では、 appd-cert導入仕様のスニペットに示されているように、volumes および volumeMounts を使用して証明書ファイルをコンテナファイルシステムに追加します。

kind: Deployment
      spec:
      containers:
      image: myrepo/java-app:v1
      volumeMounts:
      - name: appd-cert
      subPath: cacerts.jks
      mountPath: /opt/appdynamics/ver4.5.11.26665/conf/cacerts.jks
      volumes:
      - name: appd-cert
      configMap:
      name: appd-cert

Init コンテナを使用するための設定例

init コンテナを使用してエージェントバイナリをコピーする導入仕様の完全な例は、Github(java-app.yaml)にあります。