Dockerfile の使用

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

このオプションでは、Dockerfile を使用して、作成時に Node.js エージェントバイナリを Docker イメージに含めます。アプリケーションと Node.js エージェントバイナリを含む単一のイメージが構築されることを前提としています。

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

  1. Node.js エージェントのインストール手順の実行
  2. イメージへのアプリケーションフォルダのコピー
  3. Node.js エージェント環境変数の設定
  4. UNIQUE_HOST_ID 環境変数の設定
  5. (オンプレミスコントローラのみ)コントローラ証明書のイメージへのコピー

Node.js エージェントのインストール手順の実行

Node.js エージェントのインストール手順の実行Node.js エージェントのインストール

  1. NPM コマンドを実行して、アプリケーションフォルダの appdynamics パッケージを含めます。

    $ cd nodejsapp
    $ npm install appdynamics@next
  2. アプリケーションのソースコードに require ステートメントを追加し、reuseNode および reuseNodePrefix プロパティを含めます。後の手順で設定する環境変数を参照するように reuseNodePrefix プロパティを設定します。

    require("appdynamics").profile({
    reuseNode: true,
    reuseNodePrefix: process.env.APPDYNAMICS_AGENT_REUSE_NODE_NAME_PREFIX
    });

    再利用ノード名とプレフィックスのプロパティは、同じアプリケーションイメージの複数のコンテナインスタンスに一意の名前を付けることをサポートするために必要です。Node.js設定参考資料Node.js設定参考資料

  3. Node.js エージェントがトランザクション分析データを報告する必要がある場合は、require ステートメントに分析プロパティを追加し、後の手順で設定される環境変数に値を設定します。Node.js設定参考資料Node.js設定参考資料

    require("appdynamics").profile({
    reuseNode: true,
    reuseNodePrefix: process.env.APPDYNAMICS_AGENT_REUSE_NODE_NAME_PREFIX,
    analytics: {
    host: process.env.APPDYNAMICS_ANALYTICS_HOST_NAME,
    port: process.env.APPDYNAMICS_ANALYTICS_PORT,
    ssl: process.env.APPDYNAMICS_ANALYTICS_SSL_ENABLED
    }
    });

イメージへのアプリケーションフォルダのコピー

アプリケーションフォルダをイメージにコピーするように Docker ファイルを編集します。

COPY nodejsapp/ /nodejsapp/

Node.js エージェント環境変数の設定

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

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_PREFIX=<value>
ENV APPDYNAMICS_AGENT_NODE_NAME=<value> # not used in node name but required by Node.js agent
ENV APPDYNAMICS_LOGGER_OUTPUT_TYPE=console
# 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 から除外し、「Init コンテナを使用する」の説明に従って、ConfigMap、秘密、および導入仕様を使用して設定します。分析ホスト、ポート、および ssl の設定は、分析エージェントの展開方法によって異なります。オプションについては、「Kubernetes での分析の展開」を参照してください。

UNIQUE_HOST_ID 環境変数の設定

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

startup.shDocker ランタイムを使用する Kubernetes 環境では、次の例のように Docker イメージに次のスタートアップスクリプト を追加します。

#!/bin/bash
# OpenShift 3.10 or 3.11:
UNIQUE_HOST_ID=$(sed -rn '1s#.*/##; 1s/(.{12}).*/\\1/p' /proc/self/cgroup)
exec node /nodejsapp/myapp.js

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

オンプレミスのコントローラと通信する Node.js エージェントの場合は、Dockerfile を編集して、オンプレミスの証明書を含む証明書ファイルをイメージにコピーします。

例:

COPY ./onprem-cacerts /opt/appdynamics/cacerts

アプリケーションのソースコードを更新して、require ステートメントに certificateFile プロパティを追加します。certificateFile パスを証明書ファイルの場所に設定します。

require("appdynamics").profile({
reuseNode: true,
reuseNodePrefix: process.env.APPDYNAMICS_AGENT_REUSE_NODE_NAME_PREFIX,
certificateFile: /opt/appdynamics/cacerts
});