Download PDF
Download page コンテナへの .NET Agent for Linux のインストール.
コンテナへの .NET Agent for Linux のインストール
このページでは、Docker または Kubernetes コンテナ化環境に .NET Agent for Linux をインストールする方法について説明します。コンテナを使用して .NET Agent for Linux をインストールするには、次の 3 つの方法があります。
自動インストゥルメンテーションを使用する
このシナリオは、クラスタエージェントがインストールされている Kubernetes で実行されているコンテナに適用されます。
このオプションでは、クラスタエージェントの自動インストゥルメンテーション機能を使用します。これは、最高の自動化レベルと最もシンプルな操作エクスペリエンスを提供することから、Kubernetes クラスタで .NET アプリケーションをインストゥルメント化する場合に推奨されるオプションです。
開始するには、「クラスタエージェントを使用したアプリケーションの自動インストゥルメンテーション」を参照してください。
Init コンテナの使用
Kubernetes の init コンテナを使用して、.NET エージェントをインストゥルメントできます。この方法では、実行時に init コンテナがエージェントバイナリをアプリケーションコンテナにコピーします。アプリケーションで使用される導入仕様では、次の 2 つのコンテナを参照します。
- .NET エージェントバイナリを含まないイメージに基づくアプリケーションコンテナ
- .NET エージェントバイナリのみを含むイメージに基づく 2 番目の init コンテナ
導入仕様は、これらの 2 つのコンテナを参照し、展開時に init コンテナからアプリケーションコンテナにエージェントバイナリをコピーするように更新されます。コピーが実行されると、init コンテナは終了します。
init コンテナを使用して .NET Agent for Linux バイナリをコピーするには、次の手順を実行します。
- .NET Core アプリケーションイメージの構築
- Linux Init コンテナイメージ用の .NET エージェントの構築
- 導入仕様への Init コンテナの追加
- .NET Agent for Linux の環境変数の設定
- APPDYNAMICS_AGENT_UNIQUE_HOST_ID 環境変数の設定
- (オンプレミスコントローラのみ)コンテナへのコントローラ証明書のコピー
- Init コンテナを使用するための設定例
.NET Core アプリケーションイメージの構築
.NET Core アプリケーションイメージを構築します。.NET Agent for Linux のバイナリは含めないでください。
Linux Init コンテナイメージ用の .NET エージェントの構築
.NET Agent for Linux イメージをアプリケーションイメージとは別にビルドします。このイメージは、複数の .NET Core アプリケーション展開環境で再利用できます。
または、init コンテナで Docker Hub の AppDynamics から事前に作成されたイメージを参照できます。
導入仕様への Init コンテナの追加
導入仕様を編集して必要なセクションを追加し、エージェントバイナリを init コンテナからアプリケーションイメージにコピーできるようにします。
導入仕様の次のスニペットは、必須の volumes
、volumeMounts
、および initContainer
の定義を示しています。このコード例では、.NET Core アプリケーションイメージが dotnet-samples:aspnetapp
にパブリッシュされ、init コンテナイメージが事前に構築されたイメージ(docker.io/appdynamics/dotnet-core-agent:<version>
)を使用することを前提としています。ここで、<version>
は .NET エージェントのバージョンです(例:21.5.0)。
kind: Deployment
spec:
containers:
- name: dotnet-app
image: microsoft/dotnet-samples:aspnetapp
volumeMounts:
- mountPath: /opt/appdynamics
name: appd-agent-repo
initContainers:
- name: appd-agent
image: docker.io/appdynamics/dotnet-core-agent:<version>
volumeMounts:
- mountPath: /appdynamics
name: appd-agent-repo
volumes:
- name: appd-agent-repo
emptyDir: {}
.NET Agent for Linux の環境変数の設定
必要な .NET エージェント環境変数をすべて設定するには、「Kubernetes でエージェントを設定するためのベストプラクティス」に示す次の手順を実行する必要があります。
ConfigMap を使用したアプリケーション サーバ エージェントの設定
ConfigMap を使用して、名前空間内のアプリケーション間で共有する .NET Agent for Linux 環境変数を設定します。
apiVersion: v1 data: CORECLR_PROFILER: "{57e1aa68-2229-41aa-9931-a6e93bbc64d8}" CORECLR_ENABLE_PROFILING: "1" CORECLR_PROFILER_PATH: "/opt/appdynamics/libappdprofiler.so" APPDYNAMICS_AGENT_APPLICATION_NAME: "<value>" APPDYNAMICS_AGENT_ACCOUNT_NAME: "<value>" APPDYNAMICS_CONTROLLER_HOST_NAME: "<value>" APPDYNAMICS_CONTROLLER_PORT: "<value>" APPDYNAMICS_CONTROLLER_SSL_ENABLED: "<value>" APPDYNAMICS_AGENT_REUSE_NODE_NAME: "true" APPDYNAMICS_AGENT_REUSE_NODE_NAME_PREFIX: "<value>" # variables required to send transaction analytics data APPDYNAMICS_ANALYTICS_HOST_NAME: "<value>" APPDYNAMICS_ANALYTICS_PORT: "<value>" APPDYNAMICS_ANALYTICS_SSL_ENABLED: "<value>" kind: ConfigMap metadata: name: appd-dotnet-config
CODE分析ホスト、ポート、および ssl の設定は、分析エージェントの展開方法によって異なることに注意してください。オプションについては、「Kubernetes での分析の展開」を参照してください。
(オプション)Alpine Linux コンテナで .NET Core アプリケーションを実行している場合は、ConfigMap で
LD_LIBRARY_PATH
を設定します。apiVersion: v1 data: CORECLR_PROFILER: "{57e1aa68-2229-41aa-9931-a6e93bbc64d8}" CORECLR_ENABLE_PROFILING: "1" CORECLR_PROFILER_PATH: "/opt/appdynamics/libappdprofiler.so" LD_LIBRARY_PATH: "/opt/appdynamics" ... kind: ConfigMap metadata: name: appd-dotnet-config
CODE名前空間に ConfigMap を適用します。
kubectl -n dotnetapp apply -f appd-dotnet-config.yaml
BASH導入仕様を更新して、
ConfigMap
を参照します。spec: containers: - name: dotnet-app envFrom: - configMapRef: name: appd-dotnet-config ...
YML
コントローラのアクセスキーへの秘密の使用
kubectl
を使用して秘密を作成します。kubectl -n dotnetapp create secret generic appd-agent-secret --from-literal=access-key=<access-key>
BASH導入仕様を更新して、秘密を参照します。
spec: containers: - name: dotnet-app env: - name: APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEY valueFrom: secretKeyRef: name: appd-agent-secret key: access-key ...
YML
導入仕様でのアプリケーション固有の設定
導入仕様でアプリケーション固有の階層名環境変数
APPDYNAMICS_AGENT_TIER_NAME
を設定します。spec: containers: - name: dotnet-app env: - name: APPDYNAMICS_AGENT_TIER_NAME value: dotnet-service
CODE
APPDYNAMICS_AGENT_UNIQUE_HOST_ID
環境変数のセットアップ
APPDYNAMICS_AGENT_UNIQUE_HOST_ID
環境変数は、.NET Agent for Linux のバージョン 20.7.0 以降でサポートされています。以前のバージョンでは、ランタイム値に基づいて AppDynamicsConfig.json
でプロパティを設定する必要があります。この導入仕様の例を参照してください。
APPDYNAMICS_AGENT_UNIQUE_HOST_ID
環境変数を設定して、クラスタエージェントとの APM 相関を有効にします。値はランタイム値に依存するため、コンテナ起動コマンドで、このドキュメントに記載されている値を使用してこの環境変数を設定します。アプリケーション エージェントを手動で設定してクラスタエージェントと関連付けるたとえば、Docker ランタイムを使用する Kubernetes 環境では、次のように環境変数を設定します(export
は必須です)。
kind: Deployment
spec:
containers:
image: microsoft/dotnet-samples:aspnetapp
command: ["/bin/sh"]
args: ["-c", "export APPDYNAMICS_AGENT_UNIQUE_HOST_ID=$(sed -rn '1s#.*/##; 1s/(.{12}).*/\\1/p' /proc/self/cgroup) && dotnet aspnetapp.dll"]
...
コンテナへの AppDynamicsConfig.json ファイルのコピー
一部の .NET Agent for Linux オプションは、AppDynamicsConfig.json
ファイルで設定する必要があります。これには、outputtype
を console
に設定することが含まれます。これにより、エージェントログをログ集約ツールに送信しやすくなり、kubectl logs.
を使用してログを表示しやすくなります。
AppDynamicsConfig.json
の内容に基づいて ConfigMap を作成します。$ kubectl -n dotnetapp create configmap appd-config --from-file=AppDynamicsConfig.json
CODE導入仕様を更新して、コンテナファイルシステムに
AppDynamicsConfig.json
ファイルを追加します。ConfigMap の内容を参照するvolumes
とvolumeMounts
を使用します。kind: Deployment spec: containers: image: microsoft/dotnet-samples:aspnetapp command: ["/bin/sh"] args: ["-c", "export APPDYNAMICS_AGENT_UNIQUE_HOST_ID=$(sed -rn '1s#.*/##; 1s/(.{12}).*/\\1/p' /proc/self/cgroup) && dotnet aspnetapp.dll"] volumeMounts: - name: appd-config subPath: AppDynamicsConfig.json mountPath: /opt/appdynamics/AppDynamicsConfig.json volumes: - name: appd-config configMap: name: appd-config
CODE
(オンプレミスコントローラのみ)コンテナへのコントローラ証明書のコピー
.NET Agent for Linux がオンプレミスコントローラと通信する場合は、コントローラ証明書をコンテナにコピーする必要があります。詳細については、.NETエージェント用SSLの有効化を参照してください。
証明書ファイルを参照する ConfigMap を定義します。導入仕様でボリュームマウントを使用して、ConfigMap の内容をコンテナにマウントします。
$ kubectl create configmap appd-cert --from-file=cacerts
CODE導入仕様のスニペットに示すように、
volumes
とvolumeMounts
を使用して、コンテナファイルシステムに証明書ファイルを追加します。kind: Deployment spec: containers: image: microsoft/dotnet-samples:aspnetapp volumeMounts: - name: appd-cert subPath: cacerts mountPath: /opt/appdynamics/cacerts volumes: - name: appd-cert configMap: name: appd-cert
CODEConfigMap で
APPDYNAMICS_CONTROLLER_SSL_ENABLED
およびAPPDYNAMICS_CONTROLLER_SSL_CERTFILE
環境変数を設定します。詳細については、.NET Agent for Linux の環境変数を参照してください。apiVersion: v1 data: CORECLR_PROFILER: "{57e1aa68-2229-41aa-9931-a6e93bbc64d8}" CORECLR_ENABLE_PROFILING: "1" CORECLR_PROFILER_PATH: "/opt/appdynamics/libappdprofiler.so" APPDYNAMICS_CONTROLLER_SSL_ENABLED: true APPDYNAMICS_CONTROLLER_SSL_CERTFILE: /opt/appdynamics/cacerts ... kind: ConfigMap metadata: name: appd-dotnet-config
CODE
Init コンテナを使用するための設定例
この Dockerfile は、マルチステージビルドを使用して .NET Agent for Linux の init コンテナイメージを作成している例です。init コンテナを使用してエージェントバイナリをコピーする導入仕様の完全な例は、Github(dotnet-app.yaml)にあります。
Dockerfile の使用
このシナリオは、Docker および Kubernetes で実行されているコンテナに適用されます。
Dockerfile を使用して、作成時に .NET Agent for Linux を Docker イメージにコピーします。オプションを使用するには、アプリケーションと .NET Agent for Linux の両方のバイナリが含まれた単一のイメージを作成します。
Docker イメージの作成時にエージェントをアプリケーションイメージにコピーするには、次の手順を実行します。
- .NET Agent for Linux のダウンロードと解凍
- イメージへのエージェントバイナリのコピー
- .NET Agent for Linux の環境変数の設定
- APPDYNAMICS_AGENT_UNIQUE_HOST_ID 環境変数の設定
- イメージへの AppDynamicsConfig.json ファイルのコピー
- (オンプレミスコントローラのみ)コントローラ証明書のイメージへのコピー
- Dockerfile を使用するための設定例
.NET Agent for Linux のダウンロードと解凍
プログラムによって、またはダウンロードポータルから .NET Agent for Linux をダウンロードします。エージェントは zip ファイルとしてパッケージ化されます。シェルで、AppDynamics-DotNetCore-linux-x64
フォルダに解凍します。
$ unzip AppDynamics-DotNetCore-linux-x64-<version>.zip -d AppDynamics-DotNetCore-linux-x64
イメージへのエージェントバイナリのコピー
Dockerfile を編集して、パッケージ化されていないエージェントバイナリをターゲットフォルダにコピーします。
COPY AppDynamics-DotNetCore-linux-x64/ /opt/appdynamics/
.NET Agent for Linux の環境変数の設定
非 Kubernetes 環境でアプリケーションを実行している場合(たとえば docker
run
を使用)、Dockerfile でエージェント環境変数を設定します。次に例を示します。
ENV CORECLR_PROFILER="{57e1aa68-2229-41aa-9931-a6e93bbc64d8}"
ENV CORECLR_ENABLE_PROFILING=1
ENV CORECLR_PROFILER_PATH="/opt/appdynamics/libappdprofiler.so"
ENV APPDYNAMICS_AGENT_APPLICATION_NAME=<value>
ENV APPDYNAMICS_AGENT_TIER_NAME=<value>
ENV APPDYNAMICS_AGENT_ACCOUNT_NAME=<value>
ENV APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEY=<value>
ENV APPDYNAMICS_CONTROLLER_HOST_NAME=<value>
ENV APPDYNAMICS_CONTROLLER_PORT=<value>
ENV APPDYNAMICS_CONTROLLER_SSL_ENABLED=<value>
ENV APPDYNAMICS_AGENT_REUSE_NODE_NAME=true
ENV APPDYNAMICS_AGENT_REUSE_NODE_NAME_PREFIX=<value>
# variables required to send transaction analytics data
ENV APPDYNAMICS_ANALYTICS_HOST_NAME=<value>
ENV APPDYNAMICS_ANALYTICS_PORT=<value>
ENV APPDYNAMICS_ANALYTICS_SSL_ENABLED=<value>
Kubernetes アプリケーションの場合は、これらの環境変数を Dockerfile から除外し、ConfigMaps と秘密を使用して設定します。
再利用ノード名とプレフィックス環境変数は、同じアプリケーションイメージの複数のコンテナインスタンスに一意のノード名を付けるようサポートするために必要です。「.NET Agent for Linux の環境変数」を参照してください。分析ホスト、ポート、および ssl の設定は、分析エージェントの展開方法によって異なります。オプションについては、「Kubernetes での分析の展開」を参照してください。
Alpine Linux コンテナで .NET Core アプリケーションを実行している場合は、LD_LIBRARY_PATH
をエージェントバイナリの場所に設定します。Docker アプリケーションの場合は、Dockerfile で LD_LIBRARY_PATH
を設定します。
ENV CORECLR_PROFILER="{57e1aa68-2229-41aa-9931-a6e93bbc64d8}"
ENV CORECLR_ENABLE_PROFILING=1
ENV CORECLR_PROFILER_PATH="/opt/appdynamics/libappdprofiler.so"
ENV LD_LIBRARY_PATH="/opt/appdynamics"
...
Kubernetes アプリケーションの場合は、ConfigMap で LD_LIBRARY_PATH を設定します。
APPDYNAMICS_AGENT_UNIQUE_HOST_ID
環境変数のセットアップ
APPDYNAMICS_AGENT_UNIQUE_HOST_ID
環境変数は、.NET Agent for Linux のバージョン 20.7.0 以降でサポートされています。以前のバージョンでは、ランタイム値に基づいて AppDynamicsConfig.json
でプロパティを設定する必要があります。これは、コンテナの起動スクリプトで実行する必要があります。
Kubernetes アプリケーションの場合は、APPDYNAMICS_AGENT_UNIQUE_HOST_ID
環境変数を設定して、クラスタエージェントとの APM 相関を有効にします。この値はランタイム値に依存するため、「アプリケーション エージェントを手動で設定してクラスタエージェントと関連付ける」 に記載されている値を使用してコンテナのスタートアップコマンドでこの環境変数を設定します。たとえば、Docker ランタイムを使用する Kubernetes 環境では、次のように環境変数を設定します(export
は必須です)。
kind: Deployment
spec:
containers:
image: microsoft/dotnet-samples:aspnetapp
command: ["/bin/sh"]
args: ["-c", "export APPDYNAMICS_AGENT_UNIQUE_HOST_ID=$(sed -rn '1s#.*/##; 1s/(.{12}).*/\\1/p' /proc/self/cgroup) && dotnet aspnetapp.dll"]
...
イメージへの AppDynamicsConfig.json ファイルのコピー
一部の .NET Agent for Linux オプションは、AppDynamicsConfig.json
ファイルで設定する必要があります。これには、outputtype
を console
に設定することが含まれます。これにより、エージェントログをログ集約ツールに送信しやすくなります。AppDynamicsConfig.json
ファイルを作成し、必要な構成を設定します。
AppDynamicsConfig.json
をイメージにコピーするように Dockerfile を編集します。COPY ./AppDynamicsConfig.json /opt/appdynamics/AppDynamicsConfig.json
CODE
(オンプレミスコントローラのみ)コントローラ証明書のイメージへのコピー
オンプレミスコントローラと通信する .NET Agent for Linux エージェントの場合は、コントローラ証明書をイメージにコピーする必要があります。詳細については、.NETエージェント用SSLの有効化を参照してください。
オンプレミス証明書を含むファイルをイメージにコピーするように Dockerfile を編集します。次に例を示します。
COPY ./onprem-cacerts /opt/appdynamics/conf/cacerts
CODEAPPDYNAMICS_CONTROLLER_SSL_ENABLED
およびAPPDYNAMICS_CONTROLLER_SSL_CERTFILE
環境変数を設定します。詳細については、.NET Agent for Linux の環境変数を参照してください。Docker アプリケーションの場合は、Dockerfile でこれらの環境変数を設定します。ENV APPDYNAMICS_CONTROLLER_SSL_ENABLED="true" ENV APPDYNAMICS_CONTROLLER_SSL_CERTFILE="/opt/appdynamics/cacerts"
CODEKubernetes アプリケーションの場合は、ConfigMap でこれらの環境変数を設定します。
Dockerfile を使用するための設定例
この Dockerfile は、アプリケーションとエージェントの両方のバイナリが含まれる単一のイメージを作成し、この Kubernetes 導入仕様はその Docker イメージを参照します。