このページでは、cluster-agent.yaml で使用可能なプロパティと、自動インストゥルメンテーションの設定に使用できる Helm values.yaml ファイルについて説明します。

自動インストゥルメンテーションの設定構造

自動インストゥルメンテーションの設定構造は、一連のデフォルトのプロパティに基づいています。1 つまたは複数の instrumentationRules で定義したプロパティを使用して、デフォルトのプロパティをオーバーライドできます。

apiVersion: cluster.appdynamics.com/v1alpha1
kind: Clusteragent
metadata:
  name: k8s-cluster-agent
  namespace: appdynamics
spec:
  # cluster agent properties
  # ...
  # required to enable auto-instrumentation
  instrumentationMethod: Env 
  # default auto-instrumentation properties
  # may be overridden in an instrumentationRule
  nsToInstrumentRegex: dev|stage|prod
  image: "docker.io/appdynamics/java-agent:21.7.0"
  # ...
  # one or more instrumentationRules
  instrumentationRules:
    - nsToInstrumentRegex: dev
      imageInfo:
        image: "docker.io/appdynamics/java-agent:21.3.1"
        agentMountPath: /opt/appdynamics
        imagePullPolicy: Always
      # ...
    - nsToInstrumentRegex: stage
      imageInfo:
        image: "docker.io/appdynamics/java-agent:21.5.0"
        agentMountPath: /opt/appdynamics
        imagePullPolicy: Always
      # ...
YML
deploymentMode: MASTER

# cluster agent properties
# ...
clusterAgent:
  nsToMonitorRegex: .*
# ...
# Instrumentation config
instrumentationConfig:
  enabled: true
  # required to enable auto-instrumentation
  instrumentationMethod: Env 
  # default auto-instrumentation properties
  # may be overridden in an instrumentationRule
  nsToInstrumentRegex: dev|stage|prod
  image: "docker.io/appdynamics/java-agent:21.7.0"
  # ...
  # one or more instrumentationRules
  instrumentationRules:
    - nsToInstrumentRegex: dev
      imageInfo:
        image: "docker.io/appdynamics/java-agent:21.3.1"
        agentMountPath: /opt/appdynamics
        imagePullPolicy: Always
      # ...
    - nsToInstrumentRegex: stage
      imageInfo:
        image: "docker.io/appdynamics/java-agent:21.5.0"
        agentMountPath: /opt/appdynamics
        imagePullPolicy: Always
      # ...
YML

InstrumentationRules によるデフォルトのプロパティのオーバーライド

クラスタエージェントは、namespaceRegexmatchString, および labelMatch プロパティの組み合わせを InstrumentationRule で使用して、自動インストゥルメンテーションの名前空間の DeploymentsDeploymentConfigs および StatefulSets をターゲットにします。最初に一致した InstrumentationRule が使用されます。一致するルールが見つからない場合は、デフォルトのプロパティを使用して自動インストゥルメンテーションを適用するかどうかが決定されます。

  • nsToInstrumentRegex
  • defaultInstrumentationLabelMatch
  • defaultInstrumentMatchString

たとえば、-matchString "<string>" が指定された次の InstrumentationRule が、クラスタエージェントの構成ファイルに追加されたとします。

instrumentationRules:
    - matchString: "<string>"

自動インストゥルメンテーションが機能するには、展開が必要です。

展開名がこの文字列と一致する場合、一致する instrumentationRule にある残りのプロパティが適用され、設定されているデフォルトのプロパティがオーバーライドされます。文字列が一致しない場合、クラスタエージェントはプロパティ nsToInstrumentRegex, defaultInstrumentationLabelMatch および defaultInstrumentMatchString をデフォルト値に設定してインストゥルメンテーション ルールを決定します。

一般的な自動インストゥルメンテーション タスク

次のプロパティは、一般的な自動インストゥルメンテーション設定タスクをサポートするために使用できます。

  • 自動インストゥルメンテーションの範囲内にある名前空間を設定するには、次のプロパティを設定します。

    • nsToInstrument
    • nsToInstrumentRegex
  • (オプション)自動インストゥルメンテーションの範囲内にある名前空間内のアプリケーションのセットをフィルタリングしてターゲットにするには、次のプロパティを設定します。
    • instrumentationMatchString
    • labelMatch
  • インストゥルメント化されたアプリケーションにアプリケーション名と階層名を割り当てるには、次のプロパティを設定します。
  • マルチコンテナ アプリケーションに含まれるコンテナをインストゥルメント化するには、次のプロパティを設定します。
    • instrumentContainer
    • containerMatchString

      デフォルトでは、instrumentContainer が Kubernetes API によって返される順序に基づいて最初のコンテナをインストゥルメント化します。
  • Node.js アプリケーションにトランザクション分析が必要な場合は、分析ホストとポートを指定します。
    • analyticsHost
      analyticsPort

      Analytics エージェントを使用しない分析の展開」を参照してください。トランザクション分析の設定は、.NET および Java アプリケーションには必要ありません。各アプリケーションポッドに分析エージェントコンテナを追加するサイドカーモデルを使用して分析エージェントを展開し、アプリケーションコンテナで開始/停止できます。サイドカーアプローチを使用する場合、アプリケーション サーバ エージェントはデフォルトのホスト localhost とポート 9090 を使用し、自動的に接続します。追加設定は必要ありません。Kubernetes でのエージェント側コンポーネントのインストール」を参照してください。

デフォルトの自動インストゥルメンテーション プロパティ

次の表に、cluster-agent.yaml 仕様で定義されている自動インストゥルメンテーションの設定に使用できるデフォルトプロパティを示します:

パラメータ名

デフォルト値

説明

appNameLabel該当なしこのラベルの値は、AppDynamics アプリケーション名になります。 
appNameStrategy手動

AppDynamics アプリケーションの名前を指定するオプション。このパラメータには、次のいずれかの値を指定できます。

  • 手動
  • 名前空間
  • ラベル

AppDynamics アプリケーションの命名オプション」を参照してください。

defaultAnalyticsHost該当なし

分析エージェントのホスト名。

このパラメータは、Node.js エージェントまたは .NET Core エージェントでデフォルトのトランザクションデータを Analytics エージェントに送信する必要がある場合に必須となります。

デフォルト値は、instrumentationRules 設定によって上書きされない限り、すべてのインストゥルメント化されたリソースに適用されます。

defaultAnalyticsPort該当なし

分析エージェントのリスニングポート。

たとえば、分析エージェントがポート 9090 でリッスンしている場合、このパラメータの値は 9090 です。

デフォルト値は、instrumentationRules 設定によって上書きされない限り、すべてのインストゥルメント化されたリソースに適用されます。

このパラメータは、デフォルトのトランザクションデータを分析エージェントに送信するために Node.js または .NET Core エージェントを必須とする場合に、defaultAnalyticsHost とともに必要となります。

defaultAnalyticsSslEnabled該当なし

この値は、Analytics エージェントポートが SSL 対応かどうかに基づいています。ポートが SSL 対応の場合は値を true として指定し、非対応の場合は false として指定します。

このパラメータは、デフォルトのトランザクションデータを Analytics エージェントに送信するために Node.js または .NET Core エージェントを必須とする場合に、defaultAnalyticsPort および defaultAnalyticsHost とともに必要となります。

デフォルト値 instrumentationRules 設定によって上書きされない限り、すべてのインストゥルメント化されたリソースに適用されます。

defaultAppName

""(必須)コントローラに報告するためにエージェントによって使用されるアプリケーション名。
defaultCustomConfig該当なし

このパラメータは、Java アプリケーションに固有です。

アプリケーション フレームワークでインストゥルメンテーションに特定の設定が必要な場合は、カスタムシステムプロパティを追加できます。

この値は、他の Java エージェントプロパティとともに設定された env or defaultEnv 変数に追加されます。

defaultContainerMatchString該当なし

これは、インストゥルメント化するコンテナを選択するための正規表現値です。このパラメータを使用するには、インストゥルメンテーション ルールで指定された instrumentContainer 内で select オプションを使用する必要があります。

このパラメータとともに select オプションを使用すると、クラスタエージェントは正規表現値に一致するコンテナをインストゥルメント化します。

defaultEnv

JAVA_TOOL_OPTIONS

このパラメータは、Java アプリケーションに固有です。

javaagent 引数とアプリケーション エージェントのシステムプロパティが追加される環境変数。

この変数を上書きして、展開に最適な他の環境変数を使用できます。

defaultInstrumentationLabelMatch


[ ]

インストゥルメンテーションのためのマークが付けられた特定の展開ラベル。

このパラメータは、インストゥルメント化する key-value ペアのリストを受け入れます。

インストゥルメンテーションには、少なくとも 1 つのラベルを一致させる必要があります。

次に例を示します。

defaultInstrumentationLabelMatch:
- label1: value1

- label1: value2

- label2: value2

たとえば、label1: value2 のみが一致する場合、インストゥルメンテーションは期待どおりに機能します。

defaultInstrumentMatchString

.*

インストゥルメンテーションの対象になる展開の名前。

このパラメータは、instrumentationRules 内で指定された matchstring パラメータのデフォルト値として使用されます。matchstring が指定されていない場合、クラスタエージェントはこのパラメータ値を使用します。

このパラメータは、正規表現として展開名を受け入れます。

インストゥルメント化する展開が複数ある場合は、スペースを使用せずに名前を "|" で区切ることができます。

デフォルトでは、このパラメータは nsToInstrumentRegex によって構成されたすべての展開をインストゥルメント化します。したがって、インストゥルメンテーション ルールの matchString に値が指定されておらず、このパラメータに値を指定しない場合、クラスタエージェントはすべての展開をインストゥルメント化します。

imageInfo

java:
  image: "docker.io/appdynamics/java-      agent:latest"
  agentMountPath: "/opt/appdynamics"
  imagePullPolicy: "IfNotPresent"
CODE
dotnetcore:
    image: "docker.io/appdynamics/dotnet-core-agent:latest"
    agentMountPath: /opt/appdynamics
    imagePullPolicy: "IfNotPresent"
CODE
nodejs:
 image: "docker.io/appdynamics/nodejs-agent:20.8.0-stretch-slimv14"
 agentMountPath: /opt/appdynamics
 imagePullPolicy: "IfNotPresent"
CODE

Node.js エージェント、.NET Core for Linux、および Java エージェントがプルされた Docker リポジトリ。

次の値をサポートしています。

  • image:エージェントイメージの場所、およびその tag/version
  • agentMountPath:イメージファイルシステム内のイメージアーティファクトの場所。デフォルトは [/opt/appdynamics] です。
    パスが異なる場合は、この構成を変更する必要があります。
    imagePullPolicy:エージェントの Docker イメージに必要なプルポリシー。要件に基づいて、次のプルポリシーのいずれかを選択できます。
      • Always

      • IfNotPresent

      • Never

    このパラメータは、自動インストゥルメンテーション中に追加される init コンテナで使用されます。

instrumentationMethod

None

アプリケーションのインストゥルメント化に使用されるインストゥルメンテーション方式。

次の値をサポートしています。

  • None:インストゥルメンテーションは無効になります。
  • Env:インストゥルメンテーション プロパティをコンテナ環境変数にアタッチします。値が設定されていない場合、インストゥルメンテーションは開始されません。

instrumentationRules

[ ]

必須です。このパラメータを使用して、自動インストゥルメンテーションを有効にします。
特定のインストゥルメンテーション ルールのリストが記述されています。ルールは 1 つまたは複数の名前空間に適用できます。また、展開名とラベルに基づいてフィルタ処理できます。インストゥルメンテーション ルールは細かく設定でき、特定の展開を対象にすることをサポートできます。

インストゥルメンテーション ルールのためのクラスタエージェントの構成」を参照してください。

nsToInstrumentRegex

""

必須です。値を指定しない場合、自動インストゥルメンテーションは機能しません。

正規表現としてインストゥルメント化される名前空間を指定します。

インストゥルメント化する名前空間が複数ある場合は、スペースを使用せずに "|" を使用して名前空間を区切ります。

デフォルトでは、名前空間はインストゥルメント化されません。

numberOfTaskWorkers2

同時に自動インストゥルメント化される展開数のレート制限を設定します。

この値を大きくすると、クラスタ内でのポッドの同時再起動数が増加する可能性があります。

netvizInfo

bciEnabled: true

port: 3892


ネットワークの可視性のアプリケーション エージェント(netviz,)を構成するには、ネットワークエージェントを個別に展開し、このパラメータを設定する必要があります。
ネットワークエージェントのインストール方法については、「Install Infrastructure Visibility with the Kubernetes CLI」を参照してください。

デフォルトでは、netviz が有効になっています。ネットワークエージェントが存在しない場合、このプロパティは影響を与えません。
netviz エージェントを有効または無効にできます。

次の値をサポートしています。

  1. bciEnablednetviz が有効になっているかどうかを示すブール型のフラグ。
  2. port:ネットワークエージェントがリッスンしているポート(デフォルトは 3892))。デフォルトポート以外のポートでネットワークエージェントを実行している場合にのみ、この値を上書きします。

runAsGroup

0

アプリケーションコンテナを非ルートユーザとして構成した場合は、対応するグループのグループ ID(GID)を提供します。

runAsGroup は、エージェント アーティファクトに適切なファイル権限を設定するために使用されます。

デフォルト値 runAsGroupinstrumentationRules 設定によって上書きされない限り、すべてのインストゥルメント化されたリソースに適用されます。

runAsUser

0

アプリケーションコンテナを非ルートユーザとして構成した場合は、対応するユーザのユーザ ID(UID)を提供します。

runAsUser は、エージェント アーティファクトに適切なファイル権限を設定するために使用されます。

デフォルト値 runAsUser は、instrumentationRules 設定によって上書きされない限り、すべてのインストゥルメント化されたリソースに適用されます。

resourcesToInstrumentDeployment

クラスタエージェントは、このパラメータにリストされているリソースをインストゥルメント化します。サポートされる値は、次のとおりです。

  • Deployment
  • StatefulSet
  • DeploymentConfig

たとえば、Deployments および StatefulSets をインストゥルメント化するには、次のように設定します。

resourcesToInstrument:

- Deployment
- StatefulSet

InstrumentationRule プロパティ

次の表に、InstrumentationRule で自動インストゥルメンテーションを設定するために使用できるプロパティを示します。

パラメータ名

デフォルト値

説明

analyticsHost該当なし

分析エージェントのホスト名。

このパラメータは、Node.js エージェントまたは .NET Core エージェントでデフォルトのトランザクションデータを Analytics エージェントに送信する必要がある場合に必須となります。

analyticsPort該当なし

分析エージェントのリスニングポート。

たとえば、分析エージェントがポート 9090 でリッスンしている場合、このパラメータの値は 9090 です。

このパラメータは、デフォルトのトランザクションデータを分析エージェントに送信するために Node.js または .NET Core エージェントを必須とする場合に、defaultAnalyticsHost とともに必要となります。

analyticsSslEnabled該当なし

この値は、Analytics エージェントポートが SSL 対応かどうかに基づいています。ポートが SSL 対応でない場合は、値を false と指定します。

このパラメータは、デフォルトのトランザクションデータを分析エージェントに送信するために Node.js または .NET Core エージェントを必須とする場合に、defaultAnalyticsPort および defaultAnalyticsHost とともに必要となります。

containerMatchString該当なし

これは、値を満たす名前を持つコンテナを選択するための正規表現値です。このパラメータでは、defaultInstrumentContainer または instrumentContainer 内で select オプションを使用する必要があります。

このパラメータとともに select オプションを使用すると、クラスタエージェントは正規表現値に一致するコンテナをインストゥルメント化します。

このパラメータは、defaultContainerMatchString に指定されたデフォルト値を上書きします。

customAgentConfigSource該当なし

このパラメータは、ConfigMaps を介してインストゥルメント化するエージェントのカスタム設定を使用するオプションを提供します。このパラメータでは、クラスタエージェントの名前空間に必要な ConfigMap を作成する必要があります。このパラメータは、クラスタエージェントの YAML ファイルから動的に設定できます。YAML ファイルに加えた変更は、アプリケーションを再起動することなく、インストゥルメント化されたすべてのエージェントに対して更新されます。同様に、ConfigMap の設定に加えた変更は、アプリケーションを再起動することなく、すべてのインストゥルメント化されたエージェントに対して更新されます。

  • configMapName:ConfigMap の名前を指定します。これにより、エージェントは同じカスタム ConfigMap を使用して、インストゥルメント化されたすべてのエージェント名前空間を更新できます。
  • subDir:(Java エージェントの場合は必須)ConfigMap がマウントされる場所の相対パスを指定します。
    例:/ver20.8.0.3686/conf
    。ここで、20.8.0.3686 は Java エージェントのバージョンです。このディレクトリは、Java エージェントのバージョンによって異なる場合があります。

    例 6 を参照してください。
    ConfigMap の絶対マウントパスは <agent home path>/subDir

    です。この ConfigMap は、ターゲットアプリケーションの名前空間にある同じ名前の ConfigMap を置き換えます。

展開から ConfigMap ファイル(ルールで使用)を削除する必要がある場合は、最初にこのパラメータをクラスタエージェントの YAML ファイルから削除し、次にクラスタエージェントの名前空間から ConfigMap を削除する必要があります。

instrumentContainer

first

このパラメータは、インストゥルメント化する必要があるコンテナを選択するオプションを提供します。次の値のいずれでも指定できます。

  • first:これはデフォルト値です。この値を指定すると、クラスタエージェントはポッド内の最初のコンテナをインストゥルメント化します。
  • all:この値を指定すると、クラスタエージェントはポッド内のすべてのコンテナをインストゥルメント化します。
  • select:この値を指定すると、クラスタエージェントは、defaultContainerMatchString パラメータまたは containerMatchString パラメータで指定された正規表現と一致する名前のコンテナのみをインストゥルメント化します。
language該当なし

インストゥルメント化されるアプリケーションの言語。

サポート対象の言語は次のとおりです。

  • dotnetcore
  • java
  • nodejs
matchString該当なし

ルールが適用される展開名を照合するための正規表現。

このパラメータに値を指定しない場合、クラスタエージェントは defaultInstrumentMatchString, で指定された値を使用し、その値を満たすすべての展開をインストゥルメント化します。

labelMatch{}このルールに含めるラベルの key-value ペアのリスト。 いずれかのラベルと一致すれば満たされます。

例:
labelMatch:
-label1: value1
-label1: value2
-label2: value2
label1: value2 のみが一致する場合、インストゥルメンテーションは期待どおりに機能します。

appName<defaultAppName> に移動してください。

コントローラに報告するために Java エージェントによって使用されるアプリケーション名。defaultAppName を上書きします。

値が指定されていない場合は、構成された defaultAppName が使用されます。

appNameLabel該当なしこのラベルの値は、AppDynamics アプリケーション名になります。 
customAgentConfig該当なし

このパラメータは、Java アプリケーションに固有です。

アプリケーション フレームワークでインストゥルメンテーションに特定の設定が必要な場合は、カスタムシステムプロパティを追加できます。
この値は、defaultCustomConfig パラメータで指定されたデフォルト値よりも優先されます。

この値は、他の Java エージェントプロパティとともに設定された env または defaultEnv 変数に追加されます。

tierName""

コントローラに報告するために Java エージェントによって使用される階層名。

階層名が指定されていない場合は、展開名がデフォルトとして使用されます。

env""

このパラメータは、Java アプリケーションに固有です。

アプリケーション エージェントのシステムプロパティが追加される環境変数。指定すると、このインストゥルメンテーション ルールと一致する展開の defaultEnv を上書きします。

何も指定されていない場合、デフォルトは defaultEnv(構成されている場合)または env JAVA_TOOL_OPTIONS(デフォルトのクラスタレベルで構成されていない場合)になります。

imageInfo
image:  "docker.io/appdynamics/java-agent:latest"
agentMountPath: "/opt/appdynamics"
imagePullPolicy: "IfNotPresent"
CODE
dotnetcore:
image: "docker.io/appdynamics/dotnet-core-agent:latest"
    agentMountPath: /opt/appdynamics
imagePullPolicy: "IfNotPresent"
CODE
nodejs:
 image: "docker.io/appdynamics/nodejs-agent:20.8.0-stretch-slimv14"
 agentMountPath: /opt/appdynamics
imagePullPolicy: "IfNotPresent"
CODE

エージェントイメージの場所。次のプロパティのいずれかを選択できます。

  • image:エージェントイメージの場所、およびそのタグ/バージョン。
  • agentMountPath:イメージファイルシステム内のイメージアーティファクトの場所。デフォルトは [/opt/appdynamics] です。この構成は、パスがデフォルトパスと異なる場合にのみ必要です。
  • imagePullPolicy:エージェントの Docker イメージに必要なプルポリシー。デフォルトは IfNotPresent です。要件に基づいて、次のプルポリシーのいずれかを選択できます。
    • Always
    • IfNotPresent
    • Never
    このパラメータは、自動インストゥルメンテーション中に追加される init コンテナで使用されます。

デフォルト値は IfNotPresent です。

このルールで言及されている特定の言語について、このインストゥルメンテーション ルールと一致する展開の image-info を上書きします。

デフォルトのクラスタレベルの構成を上書きし、この特定の選択したルールにカスタムのエージェントバージョンを使用する場合は、これを構成する必要があります。

netvizInfo

bciEnabled: true

port: 3892


ネットワークの可視性のアプリケーション エージェント(netviz)を構成するには、ネットワークエージェントを個別に展開し、このパラメータを設定する必要があります。
ネットワークエージェントのインストール方法については、「Install Infrastructure Visibility with the Kubernetes CLI」を参照してください。

デフォルトでは、netviz が有効になっています。このプロパティは、ネットワークエージェントがない場合は影響しません。
netviz エージェントを有効または無効にできます。

次の値をサポートしています。

  1. bciEnablednetviz が有効になっているか どうかを示すブール型のフラグ.
  2. port:ネットワークエージェントがリッスンしているポート(デフォルトは 3892))。デフォルトポート以外のポートでネットワークエージェントを実行している場合にのみ、この値を上書きします。

runAsGroup

0

アプリケーションコンテナを非ルートユーザとして構成した場合は、対応するグループの groupId を提供します。

これにより、エージェント アーティファクトに適切なファイル権限が設定されます。

この値は、インストゥルメント化されたすべてのリソースに適用されます。

デフォルトのインストゥルメンテーション用に設定されている runAsGroup のデフォルト値を上書きする必要がある場合、またはこのルールを満たすリソースに特定の値が必要な場合は、このパラメータを追加します。

runAsUser

0

アプリケーションコンテナを非ルートユーザとして構成した場合は、対応するユーザの userId を提供します。

これにより、エージェント アーティファクトに適切なファイル権限が設定されます。

この値は、インストゥルメント化されたすべてのリソースに適用されます。

デフォルトのインストゥルメンテーション用に設定されている runAsUser のデフォルト値を上書きする必要がある場合、またはこのルールを満たすリソースに特定の値が必要な場合は、このパラメータを追加します。