自動インストルメンテーションの設定
このページでは、自動インストゥルメンテーションを設定するために使用できる cluster-agent.yaml および Helm の values.yaml ファイルで利用可能なプロパティについて説明します。
自動インストルメンテーションの設定構造
cluster-agent.yaml(CLI)または values.yaml(Helm)ファイルで、instrumentationConfig.instrumentationVersion パラメータを v2 に設定します。- cluster-agent.yaml
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 enableInstallationReport: false 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 # ...- values.yaml
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 # ...
InstrumentationRules によるデフォルトのプロパティのオーバーライド
クラスタエージェントは、InstrumentationRule 内の namespaceRegex、matchString,、および labelMatch プロパティの組み合わせを使用して、自動インストゥルメンテーションの名前空間内の Deployments、DeploymentConfigs、および StatefulSets をターゲットにします。最初に一致した InstrumentationRule が使用されます。一致するルールが見つからない場合は、デフォルトのプロパティを使用して自動インストルメンテーションを適用するかどうかが決定されます。
-
nsToInstrumentRegex -
defaultInstrumentationLabelMatch -
defaultInstrumentMatchString
InstrumentationRule -matchString "<string>" がクラスタエージェント構成ファイルに追加されています。instrumentationRules:
- matchString: "<string>"展開名がこの文字列と一致する場合、一致する instrumentationRule にある残りのプロパティが適用され、設定されているデフォルトのプロパティがオーバーライドされます。文字列が一致しない場合、クラスタエージェントはプロパティ nsToInstrumentRegex, defaultInstrumentationLabelMatch および defaultInstrumentMatchString をデフォルト値に設定してインストゥルメンテーション ルールを決定します。
Use Custom Access Key
You can create custom access key and use for a specific license rule that you create in Controller for the instrumenting applications. Perform the following to use Custom Access Key based on the rules you have defined for a tenant:
Common Auto-Instrumentation Tasks
These properties are available to support common auto-instrumentation configuration tasks:
-
To set the namespaces that are in scope for auto-instrumentation:
-
nsToInstrument -
nsToInstrumentRegex
-
- (Optional) To filter and target the set of applications within a namespace that are in scope for auto-instrumentation:
instrumentationMatchStringlabelMatch
- To assign an application and tier name to an instrumented application:
appNameStrategytierNameStrategytierNameSee Application Naming Strategies.
- To instrument which containers are in a multi-container application:
instrumentContainercontainerMatchStringTheinstrumentContainerdefault is to instrument the first container based on the ordering returned by the Kubernetes API.
- If transaction analytics is required for Node.js applications, then specify the analytics host and port:
analyticsHostanalyticsPortSee Deploy Analytics Without the Analytics Agent. Configuration of transaction analytics is not required for .NET and Java applications. You can deploy the Analytics Agent using the sidecar model where you add an Analytics Agent container to each application pod, and then start/stop with the application container. If you use the sidecar approach, the App Server Agent uses the default host
localhostand port9090and connects automatically. No additional configuration is required. See Install Agent Side Components in Kubernetes.
デフォルトの自動インストゥルメンテーション プロパティ
次の表に、cluster-agent.yaml 仕様で定義されている自動インストルメンテーションの設定に使用できるデフォルトプロパティを示します。
| パラメータ | デフォルト | 説明 |
|---|---|---|
appNameLabel | N/A | このラベルの値は、Splunk AppDynamics アプリケーション名になります。 |
appNameStrategy | 手動 | Splunk AppDynamics アプリケーションの名前を指定するオプション。このパラメータには、次のいずれかの値を指定できます。
「アプリケーションの命名方法」を参照してください。 |
defaultAnalyticsHost | N/A | 分析エージェントのホスト名。 このパラメータは、Node.js エージェントでデフォルトのトランザクションデータを分析エージェントに送信する必要がある場合に必要となります。 デフォルト値は、instrumentationRules 設定によって上書きされない限り、すべてのインストルメント化されたリソースに適用されます。 |
defaultAnalyticsPort | N/A | 分析エージェントのリスニングポート。 たとえば、分析エージェントがポート 9090 でリッスンしている場合、このパラメータの値は 9090 です。 デフォルト値は、instrumentationRules 設定によって上書きされない限り、すべてのインストルメント化されたリソースに適用されます。 このパラメータは、Node.js エージェントでデフォルトのトランザクションデータを分析エージェントに送信する必要がある場合に、 |
defaultAnalyticsSslEnabled | N/A | この値は、Analytics エージェントポートが SSL 対応かどうかに基づいています。ポートで SSL が有効になっている場合は、値を このパラメータは、Node.js エージェントでデフォルトのトランザクションデータを分析エージェントに送信する必要がある場合に、 デフォルト値は、 |
defaultAppName | "" | (必須)コントローラに報告するためにエージェントによって使用されるアプリケーション名。 |
defaultCustomConfig | N/A | このパラメータは、Java アプリケーションに固有です。 アプリケーション フレームワークでインストゥルメンテーションに特定の設定が必要な場合は、カスタムシステムプロパティを追加できます。 この値は、他の Java エージェントプロパティとともに設定された Helm を使用して展開をアップグレードする場合、defaultEnv の代わりにこのパラメータを使用すると、再インストゥルメンテーションの問題を回避できます。「自動インストゥルメンテーションの検証」の「アップグレードされた展開の再インストゥルメンテーションの問題のトラブルシューティング」を参照してください。 |
defaultContainerMatchString | N/A | これは、インストゥルメント化するコンテナを選択するための正規表現値です。このパラメータを使用するには、インストゥルメンテーション ルールで指定された このパラメータとともに |
defaultEnv | JAVA_TOOL_OPTIONS | このパラメータは、Java アプリケーションに固有です。 - この変数を上書きして、展開に最適な他の環境変数を使用できます。 ただし、展開をアップグレードするためにこの値をオーバーライドすると、クラスタエージェントは再インストゥルメントしません。これは、Java エージェントと展開の両方で トラブルシューティングの詳細については、「自動インストゥルメンテーションの検証」の「アップグレードされた展開の再インストゥルメンテーションの問題のトラブルシューティング」を参照してください。 |
defaultInstrumentationLabelMatch | [ ] | インストゥルメンテーションのためのマークが付けられた特定の展開ラベル。 このパラメータは、インストゥルメント化する key-value ペアのリストを受け入れます。 インストゥルメンテーションには、少なくとも 1 つのラベルを一致させる必要があります。 例:
たとえば、 |
defaultInstrumentMatchString | .* | インストゥルメンテーションの対象になる展開の名前。 このパラメータは、instrumentationRules 内で指定された このパラメータは、正規表現として展開名を受け入れます。 インストゥルメント化する展開が複数ある場合は、スペースを使用せずに名前を " デフォルトでは、このパラメータは |
enableForceReInstrumentation | false | 新しく展開されたインストゥルメンテーション プロパティで、正常にインストゥルメント化されたポッドの古い設定を上書きする必要がある場合は、このプロパティを true に設定する必要があります。 デフォルトでは、このプロパティは false に設定されています。 クラスタエージェントのアップグレード中に、インストルメンテーション構成を正常にインストルメント化された展開に更新する必要がある場合は、値を true に設定します。 正常にインストゥルメント化された展開にインストゥルメンテーション構成を保持する必要がある場合は、値を false に設定します。ただし、既存の展開のインストゥルメンテーション状態が失敗または新規の場合は、更新された構成が適用されます。 注: クラスタエージェントをアップグレードする場合、正常にインストゥルメント化された展開に更新された構成を適用するには、この値を true に設定する必要があります。 |
enableInstallationReport | "false" | インストール情報の収集を有効または無効にします。次の詳細を含む要約レポートが生成されます。
インストールレポートを表示するには、「インストールレポートの表示」を参照してください。 |
imageInfo | | Node.js エージェント、.NET Core for Linux、および Java エージェントがプルされた Docker リポジトリ。 サポートされる値は以下の通りです:
このパラメータは、自動インストゥルメンテーション中に追加される init コンテナで使用されます。 |
instrumentationMethod | なし(None) | アプリケーションのインストゥルメント化に使用されるインストゥルメンテーション方式。 サポートされる値は以下の通りです:
|
| v1 | これは、複数コンテナ環境でアプリケーションを自動インストゥルメント化するために必要です。1 つまたは複数のアプリケーションタイプを含めることができます。 値を v2 として指定すると、異なる構成の単一言語または複数言語のいずれかを使用するマルチコンテナポッドでアプリケーションを自動インストゥルメント化できます。ただし、v2 では構成ファイルを使用したカスタムエージェント構成はサポートされていません。 |
instrumentationRules | [ ] | 必須です。このパラメータは、自動インストゥルメンテーションを有効にするために使用されます。これには、特定のインストゥルメンテーション ルールのリストが含まれます。ルールは 1 つまたは複数の名前空間に適用できます。また、展開名とラベルに基づいてフィルタ処理できます。インストゥルメンテーション ルールは細かく設定でき、特定の展開を対象にすることをサポートできます。 「インストルメンテーション ルールのためのクラスタエージェントの構成」を参照してください。 |
javaAgentCustomSSLKeystore | N/A | Java エージェント SSL キーストアファイルのシークレット名。詳細については、「Java エージェント自動インストルメンテーションのカスタム SSL の使用」を参照してください。 |
javaAgentCustomSSLKeystorePasswordSecret | N/A | Java エージェント SSL キーストアパスワードのシークレット名。詳細については、「Java エージェント自動インストルメンテーションのカスタム SSL の使用」を参照してください。 |
nsToInstrumentRegex | "" | 必須です。値を指定しない場合、自動インストゥルメンテーションは機能しません。 正規表現としてインストゥルメント化される名前空間を指定します。 インストゥルメント化する名前空間が複数ある場合は、スペースを使用せずに "|" を使用して名前空間を区切ります。 デフォルトでは、名前空間はインストゥルメント化されません。 |
numberOfTaskWorkers | 2 | 同時に自動インストゥルメント化される展開数のレート制限を設定します。 注: この値を大きくすると、クラスタ内でのポッドの同時再起動数が増加する可能性があります。 |
netvizInfo | bciEnabled;true ポート:3892 | ネットワークの可視性アプリケーション エージェントの netviz を設定するには、「Kubernetes CLI を使用したインフラストラクチャの可視性のインストール 」のネットワークエージェントのインストール方法を参照してください。 デフォルトでは、 サポートされる値は以下の通りです:
|
runAsGroup | 0 | アプリケーションコンテナを非ルートユーザとして構成した場合は、対応するグループのグループ ID(GID)を提供します。 デフォルトの |
runAsUser | 0 | アプリケーションコンテナを非ルートユーザーとして構成した場合は、対応するユーザーのユーザー ID(UID)を指定します。 デフォルトの |
resourcesToInstrument | 導入 | クラスタエージェントは、このパラメータにリストされているリソースをインストゥルメント化します。サポートされる値は、次のとおりです。
たとえば、 resourcesToInstrument:
|
tierNameLabel | N/A | このラベルの値は、Splunk AppDynamics 階層名になります。 |
tierNameStrategy | 手動 | 階層の名前を指定するオプション。このパラメータには、次のいずれかの値を指定できます。
|
インストールレポートの表示
cluster-agent.yaml ファイルで enableInstallationReport パラメータを有効にしている場合は、要約されたインストールレポートを表示できます。「デフォルトの自動インストゥルメンテーション プロパティ」を参照してください。インストールレポートを表示するには、次の手順を実行します。
kubectl exec の実行
kubectl exec -it <cluster-agent-pod-name> -n <namespace> sh- ログのディレクトリに移動します。
InstallationReport.csvファイルを開き、レポートを確認します。
Java エージェント自動インストゥルメンテーションのカスタム SSL の使用
デフォルトの cluster-agent.yaml ファイルで次のプロパティを使用して、キーストアファイルのシークレットとパスワードを指定できます。これにより、カスタム SSL を使用した Java エージェントの自動インストゥルメンテーションが有効になります。
- javaAgentCustomSSLKeystore
- javaAgentCustomSSLKeystorePasswordSecret
custom-ssl.jks という名前を付ける必要があります。証明書の作成については、次を参照してください。 .次のコマンドを実行して、カスタム SSL を使用した Java エージェントの自動インストゥルメンテーションに使用されるシークレットを作成します。
- キーストアファイルのシークレットを作成します。
kubectl -n appdynamics create secret generic <secret name> --from-file=<path to custom-ssl.jks file> - キーストアパスワードのシークレットを作成します。
kubectl -n appdynamics create secret generic <secret name> --from-literal=keystore-password=‘<keystorePassword>’
証明書更新後のシークレットの更新
カスタム SSL キーストアファイルまたはキーストアパスワードを変更する場合は、次の手順を実行する必要があります。
- Java アプリケーションのインストゥルメント化を解除します。
- キーストアファイルとキーストアパスワードの新しいシークレットを作成します。「Java エージェント自動インストルメンテーションのカスタム SSL の使用」を参照してください。
- Java アプリケーションを再インストゥルメント化します。
InstrumentationRule プロパティ
次の表に、InstrumentationRule で自動インストゥルメンテーションを設定するために使用できるプロパティを示します。
| パラメータ名 | デフォルト値 | 説明 |
|---|---|---|
analyticsHost | N/A | 分析エージェントのホスト名。 このパラメータは、Node.js エージェントまたは .NET Core エージェントでデフォルトのトランザクションデータを Analytics エージェントに送信する必要がある場合に必須となります。 |
analyticsPort | N/A | 分析エージェントのリスニングポート。 たとえば、分析エージェントがポート 9090 でリッスンしている場合、このパラメータの値は 9090 です。 このパラメータは、Node.js エージェントでデフォルトのトランザクションデータを分析エージェントに送信する必要がある場合に、defaultAnalyticsHost で必要となります。 |
analyticsSslEnabled | N/A | この値は、Analytics エージェントポートが SSL 対応かどうかに基づいています。ポートが SSL 対応でない場合は、値を false と指定します。 このパラメータは、Node.js エージェントでデフォルトのトランザクションデータを分析エージェントに送信する必要がある場合に、 |
containerMatchString | N/A | これは、値を満たす名前を持つコンテナを選択するための正規表現値です。このパラメータを使用するには、 このパラメータとともに このパラメータは、 |
customAgentConfigSource | N/A | このパラメータは、ConfigMaps を介してインストゥルメント化するエージェントのカスタム設定を使用するオプションを提供します。このパラメータでは、クラスタエージェントの名前空間に必要な ConfigMap を作成する必要があります。このパラメータは、クラスタエージェントの YAML ファイルから動的に設定できます。YAML ファイルに加えた変更は、アプリケーションを再起動することなく、インストゥルメント化されたすべてのエージェントに対して更新されます。同様に、ConfigMap の設定に加えた変更は、アプリケーションを再起動することなく、すべてのインストゥルメント化されたエージェントに対して更新されます。
注: 展開から ConfigMap ファイル(ルールで使用)を削除する必要がある場合は、最初にこのパラメータをクラスタエージェントの YAML ファイルから削除し、次にクラスタエージェントの名前空間から ConfigMap を削除する必要があります。 |
customSecretName | N/A | カスタムシークレット名。これは、ライセンスルールを定義するときに生成される名前と同じです。 |
customSecretKey | N/A | カスタムシークレットキー。これは、ライセンス ルールを定義するときに生成されるキーと同じです。 |
instrumentContainer | 第1 | このパラメータは、インストゥルメント化する必要があるコンテナを選択するオプションを提供します。次の値のいずれでも指定できます。
|
言語 | N/A | インストゥルメント化されるアプリケーションの言語。 サポート対象の言語は次のとおりです。
|
matchString | N/A | ルールが適用される展開名を照合するための正規表現。 このパラメータに値を指定しない場合、クラスタエージェントは defaultInstrumentMatchString で指定された値を使用し、その値を満たすすべての展開をインストゥルメント化します。 |
namespaceRegex | "" | このルールの一部としてインストゥルメント化される名前空間を指定する正規表現。名前空間は、パイプ記号(|)を使用してスペースを使用せずに区切ることができます。 |
labelMatch | {} | このルールに含めるラベルの key-value ペアのリスト。 いずれかのラベルと一致すれば満たされます。例:labelMatch:
たとえば、 |
appName | <defaultAppName> | コントローラに報告するために Java エージェントによって使用されるアプリケーション名。これは defaultAppName を上書きします。 値が指定されていない場合は、構成された defaultAppName が使用されます。 |
appNameLabel | N/A | Splunk AppDynamicsこのラベルの値は、 アプリケーション名になります。 |
customAgentConfig | N/A | このパラメータは、Java および Node.js アプリケーションに固有です。 アプリケーション フレームワークでインストゥルメンテーションに特定の設定が必要な場合は、カスタムシステムプロパティを追加できます。 Java アプリケーションの場合:この値は、他の Java エージェントプロパティとともに設定された または 変数に追加されます。 Node.js アプリケーションの場合:この値は NODE_OPTIONS に追加されます。 |
tierName | "" | コントローラに報告するために Java エージェントによって使用される階層名。 階層名が指定されていない場合は、階層の名前戦略が手動のとき、展開名がデフォルトとして使用されます。 |
tierNameLabel | N/A | このラベルの値は、AppDynamics 階層名になります。 |
nodeName | "" | このパラメータは、階層の下のノードに順番に名前を付けるために使用されます。ノード名が指定されていない場合は、展開名がデフォルトとして使用されます。たとえば、階層内で使用される 2 つのノードがあり、アプリケーション環境の展開名が abc であるとします。構成ファイルでノード名の値を指定しない場合、クラスタエージェントは次をノード名とします。
|
| reuseNodeName | true | このパラメータは、 Java エージェントにのみ適用されます。 ノード名を再利用する必要がない場合は、このプロパティを |
env | "" | このパラメータは、Java アプリケーションに固有です。 アプリケーション エージェントのシステムプロパティが追加される環境変数。指定すると、このインストゥルメンテーション ルールと一致する展開の defaultEnv を上書きします。 何も指定されていない場合、デフォルトは |
imageInfo | | 次のプロパティのいずれかを選択できます。
このルールで言及されている特定の言語について、このインストゥルメンテーション ルールと一致する展開の image-info を上書きします。 デフォルトのクラスタレベルの構成を上書きし、この特定の選択したルールにカスタムのエージェントバージョンを使用する場合は、これを構成する必要があります。 |
netvizInfo | bciEnabled;true ポート:3892 | ネットワーク可視性アプリケーション エージェントの netviz を設定するには、「Kubernetes CLI を使用したインフラストラクチャの可視性のインストール」に記載されているネットワークエージェントのインストール方法を参照してください。 デフォルトでは、netviz netviz です。 サポートされる値は以下の通りです:
|
runAsGroup | 0 | アプリケーションコンテナを非ルートユーザーとして構成した場合は、対応するグループの これにより、エージェント アーティファクトに適切なファイル権限が設定されます。 この値は、インストゥルメント化されたすべてのリソースに適用されます。 デフォルトのインストゥルメンテーション用に設定されている |
runAsUser | 0 | アプリケーションコンテナを非ルートユーザーとして構成した場合は、対応するユーザーの これにより、エージェント アーティファクトに適切なファイル権限が設定されます。 この値は、インストゥルメント化されたすべてのリソースに適用されます。 デフォルトのインストゥルメンテーション用に設定されている |
securityContext | 該当なし | 必要なセキュリティコンテキスト制約パラメータを指定します。securityContext 内で使用できるパラメータのリストについては、「securityContext パラメータ」を参照してください。 |
SecurityContext パラメータ
securityContext パラメータ内で次のパラメータを使用できます。
| パラメータ名 | デフォルト値 | 説明 |
|---|---|---|
runAsGroup | 0 | アプリケーションコンテナを非ルートユーザーとして構成した場合は、対応するグループの groupId を指定します。 これにより、エージェント アーティファクトに適切なファイル権限が設定されます。 この値は、インストゥルメント化されたすべてのリソースに適用されます。 デフォルトのインストゥルメンテーション用に設定されている runAsGroup のデフォルト値を上書きする必要がある場合、またはこのルールを満たすリソースに特定の値が必要な場合は、このパラメータを追加します。 |
runAsUser | 0 | アプリケーションコンテナを非ルートユーザーとして構成した場合は、対応するユーザーの userId を提供します。 これにより、エージェント アーティファクトに適切なファイル権限が設定されます。 この値は、インストゥルメント化されたすべてのリソースに適用されます。 デフォルトのインストゥルメンテーション用に設定されている runAsUser のデフォルト値を上書きする必要がある場合、またはこのルールを満たすリソースに特定の値が必要な場合は、このパラメータを追加します。 |
allowPrivilegeEscalation | 該当なし | プロセスが親プロセスよりも多くの権限を取得できるかどうかを制御します。次のコンテナとして実行されている場合、この値は true です。
注:
|
capabilities | 該当なし | 実行中のコンテナの POSIX 機能を追加または削除します。これは、コンテナランタイムにデフォルトの機能セットを使用します。 注:
|
privileged | いいえ | ホストでのルートに相当する特権モードでコンテナを実行します。 注:
|
procMount | DefaultProcMount | コンテナに使用する proc マウントのタイプ。 注: このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。 |
readOnlyRootFilesystem | いいえ | このコンテナに読み取り専用のルートファイルシステムがあるかどうかを指定します。 注:
|
runAsNonRoot | いいえ | コンテナを非ルートユーザーとして実行する必要があるかどうかを指定します。 この値が true の場合、Kubelet は実行時にイメージを検証して、ルートとして実行したときにコンテナの開始が失敗することを確認します。このパラメータが指定されていない場合、または値が false の場合、検証は行われません。 注: このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。 |
seLinuxOptions | 該当なし | SELinux コンテキストをコンテナに適用します。このパラメータが指定されていない場合、コンテナランタイムは各コンテナにランダムな SELinux コンテキストを割り当てます。 注:
|
seccompProfile | 該当なし | コンテナで使用される seccomp オプションを指定します。ポッドレベルとコンテナレベルの両方で seccomp オプションが指定されている場合、コンテナオプションはポッドオプションをオーバーライドします。 注:
|
windowsOptions | 該当なし | すべてのコンテナに Windows 固有のオプションを指定します。 注: このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。 |