Dockerfile の使用

注: このシナリオは、Docker および Kubernetes で実行されているコンテナに適用されます。

Dockerfile を使用して、作成時に .NET Agent for Linux を Docker イメージにコピーします。オプションを使用するには、アプリケーションと .NET Agent for Linux の両方のバイナリが含まれた単一のイメージを作成します。

Docker イメージの作成時にエージェントをアプリケーションイメージにコピーするには、次の手順を実行します。

  1. .NET Agent for Linux のダウンロードと解凍
  2. イメージへのエージェントバイナリのコピー
  3. .NET Agent for Linux の環境変数の設定
  4. APPDYNAMICS_AGENT_UNIQUE_HOST_ID 環境変数の設定
  5. イメージへの AppDynamicsConfig.json ファイルのコピー
  6. (オンプレミスコントローラのみ)コントローラ証明書のイメージへのコピー
  7. Dockerfile を使用するための設定例

.NET Agent for Linux のダウンロードと解凍

プログラムによって、またはダウンロードポータルから .NET Agent for Linux をダウンロードします。エージェントは zip ファイルとしてパッケージ化されます。シェルで、AppDynamics-DotNetCore-linux-x64 フォルダに解凍します。

CODE
$ unzip AppDynamics-DotNetCore-linux-x64-<version>.zip -d AppDynamics-DotNetCore-linux-x64

イメージへのエージェントバイナリのコピー

Dockerfile を編集して、パッケージ化されていないエージェントバイナリをターゲットフォルダにコピーします。

CODE
COPY AppDynamics-DotNetCore-linux-x64/ /opt/appdynamics/

.NET Agent for Linux の環境変数の設定

非 Kubernetes 環境でアプリケーションを実行している場合(たとえば を使用)、Dockerfile でエージェント環境変数を設定します。例:

CODE
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 を設定します。

CODE
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 環境変数は、Linux 用 .NET Agent のバージョン 20.7.0 以降でサポートされています。以前のバージョンでは、ランタイム値に基づいて AppDynamicsConfig.json でプロパティを設定する必要があります。これは、コンテナの起動スクリプトで実行する必要があります。

Kubernetes アプリケーションの場合は、APPDYNAMICS_AGENT_UNIQUE_HOST_ID 環境変数を設定して、クラスタエージェントとの APM 相関を有効にします。この値はランタイム値に依存するため、「クラスタエージェントと関連付けるアプリケーション エージェントの設定」に記載されている値を使用して、コンテナの起動コマンドでこの環境変数を設定します。たとえば、Docker ランタイムを使用する Kubernetes 環境では、次のように環境変数を設定します( は必須です)。

JSON
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 ファイルのコピー

一部の Linux 用 .NET Agent オプションは、AppDynamicsConfig.json ファイルで設定する必要があります。これには、outputtypeconsole に設定することが含まれます。これにより、エージェントログをログ集約ツールに送信しやすくなります。AppDynamicsConfig.json ファイルを作成し、必要な構成を設定します。

AppDynamicsConfig.json をイメージにコピーするように Dockerfile を編集します。
CODE
COPY ./AppDynamicsConfig.json /opt/appdynamics/AppDynamicsConfig.json

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

オンプレミスコントローラと通信する .NET Agent for Linux エージェントの場合は、コントローラ証明書をイメージにコピーする必要があります。.NETエージェント用SSLの有効化 .NETエージェント用SSLの有効化

  1. オンプレミス証明書を含むファイルをイメージにコピーするように Dockerfile を編集します。例:
    CODE
    COPY ./onprem-cacerts /opt/appdynamics/conf/cacerts
  2. APPDYNAMICS_CONTROLLER_SSL_ENABLED および APPDYNAMICS_CONTROLLER_SSL_CERTFILE 環境変数を設定します。「.NET Agent for Linux の環境変数」を参照してください。Docker アプリケーションの場合は、Dockerfile でこれらの環境変数を設定します。
    CODE
    ENV APPDYNAMICS_CONTROLLER_SSL_ENABLED="true"
    ENV APPDYNAMICS_CONTROLLER_SSL_CERTFILE="/opt/appdynamics/cacerts"
    Kubernetes アプリケーションの場合は、ConfigMap でこれらの環境変数を設定します。

Dockerfile を使用するための設定例

この Dockerfile は、アプリケーションとエージェントの両方のバイナリが含まれる単一のイメージを作成し、この Kubernetes 導入仕様はその Docker イメージを参照します。