Download PDF
Download page 自動インストゥルメンテーションの設定.
自動インストゥルメンテーションの設定
このページでは、自動インストゥルメンテーションを設定するために使用できる 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
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
# ...
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>"
がクラスタエージェント構成ファイルに追加されています。
|
自動インストゥルメンテーションが機能するには、展開が必要です。
展開名がこの文字列と一致する場合、一致する instrumentationRule
にある残りのプロパティが適用され、設定されているデフォルトのプロパティがオーバーライドされます。文字列が一致しない場合、クラスタエージェントはプロパティ nsToInstrumentRegex, defaultInstrumentationLabelMatch
および defaultInstrumentMatchString
をデフォルト値に設定してインストゥルメンテーション ルールを決定します。
カスタムアクセスキーの使用
カスタムアクセスキーを作成して、インストゥルメント化するアプリケーション用にコントローラで作成する特定のライセンスルールに使用することができます。テナントに定義したルールに基づいてカスタムアクセスキーを使用するには、次の手順を実行します。
- 必要なライセンスルールを作成します。
これにより、キーが生成されます。 次のコマンドを実行して、ステップ 1 で生成したキーを使用してカスタムシークレットを作成します。
kubectl -n appdynamics create secret generic <secret-name> --from-literal=<custom-Controller-key-name>=<key-value>
CODEインストゥルメンテーション ルールに次の設定を追加します。
customSecretName: <generated-secret-name> customSecretKey: <generated-key>
CODE
自動インストゥルメンテーション用の cluster-agent.yaml
ファイルで、正しいシークレット名とキー値を指定していることを確認します。値が正しくない場合、アプリケーションをモニターできません。
アプリケーションを自動インストゥルメント化していて、後からシークレットを更新する必要が生じた場合は、再インストゥルメンテーション プロセス中に enableForceReInstrumentation
パラメータを true
に設定する必要があります。
これにより、クラスタエージェントが再起動します。
一般的な自動インストゥルメンテーション タスク
次のプロパティは、一般的な自動インストゥルメンテーション設定タスクをサポートするために使用できます。
自動インストゥルメンテーションの範囲内にある名前空間を設定するには、次のプロパティを設定します。
nsToInstrument
nsToInstrumentRegex
- (オプション)自動インストゥルメンテーションの範囲内にある名前空間内のアプリケーションのセットをフィルタリングしてターゲットにするには、次のプロパティを設定します。
instrumentationMatchString
labelMatch
- インストゥルメント化されたアプリケーションにアプリケーション名と階層名を割り当てるには、次のプロパティを設定します。
appNameStrategy
tierNameStrategy
tierName
「アプリケーションの命名方法」を参照してください。
- マルチコンテナ アプリケーションに含まれるコンテナをインストゥルメント化するには、次のプロパティを設定します。
instrumentContainer
containerMatchString
instrumentContainer
のデフォルトでは、Kubernetes API によって返される順序に基づいて最初のコンテナがインストゥルメント化されます。
- Node.js アプリケーションにトランザクション分析が必要な場合は、分析ホストとポートを指定します。
analyticsHost
analyticsPort
「分析エージェントを使用しない分析の展開」を参照してください。トランザクション分析の設定は、.NET および Java アプリケーションには必要ありません。各アプリケーションポッドに分析エージェントコンテナを追加し、アプリケーションコンテナで開始および停止するサイドカーモデルを使用して、分析エージェントを展開できます。サイドカー方法を使用する場合、アプリケーション サーバー エージェントはデフォルトのホストlocalhost
とポート9090
を使用し、自動的に接続します。追加設定は必要ありません。「Kubernetes でのエージェント側コンポーネントのインストール」を参照してください。
デフォルトの自動インストゥルメンテーション プロパティ
次の表に、cluster-agent.yaml
仕様で定義されている自動インストゥルメンテーションの設定に使用できるデフォルトプロパティを示します:
パラメータ名 | デフォルト値 | 説明 |
---|---|---|
appNameLabel | 該当なし | このラベルの値は、Splunk AppDynamics アプリケーション名になります。 |
appNameStrategy | 手動 | Splunk AppDynamics アプリケーションの名前を指定するオプション。このパラメータには、次のいずれかの値を指定できます。
「アプリケーションの命名方法」を参照してください。 |
defaultAnalyticsHost | 該当なし | 分析エージェントのホスト名。 このパラメータは、Node.js エージェントでデフォルトのトランザクションデータを分析エージェントに送信する必要がある場合に必要となります。 デフォルト値は、 |
defaultAnalyticsPort | 該当なし | 分析エージェントのリスニングポート。 たとえば、分析エージェントがポート 9090 でリッスンしている場合、このパラメータの値は デフォルト値は、 このパラメータは、Node.js エージェントでデフォルトのトランザクションデータを分析エージェントに送信する必要がある場合に、 |
defaultAnalyticsSslEnabled | 該当なし | この値は、Analytics エージェントポートが SSL 対応かどうかに基づいています。ポートが SSL 対応の場合は値を このパラメータは、Node.js エージェントでデフォルトのトランザクションデータを分析エージェントに送信する必要がある場合に、 デフォルト値は、 |
| "" | (必須)コントローラに報告するためにエージェントによって使用されるアプリケーション名。 |
defaultCustomConfig | 該当なし | このパラメータは、Java アプリケーションに固有です。 アプリケーション フレームワークでインストゥルメンテーションに特定の設定が必要な場合は、カスタムシステムプロパティを追加できます。 この値は、他の Java エージェントプロパティとともに設定された Helm を使用して展開をアップグレードする場合、defaultEnv の代わりにこのパラメータを使用すると、再インストゥルメンテーションの問題を回避できます。「自動インストゥルメンテーションの検証」の「アップグレードされた展開の再インストゥルメンテーションの問題のトラブルシューティング」を参照してください。 |
defaultContainerMatchString | 該当なし | これは、インストゥルメント化するコンテナを選択するための正規表現値です。このパラメータを使用するには、インストゥルメンテーション ルールで指定された このパラメータとともに |
| JAVA_TOOL_OPTIONS | このパラメータは、Java アプリケーションに固有です。
この変数を上書きして、展開に最適な他の環境変数を使用できます。 ただし、展開をアップグレードするためにこの値をオーバーライドすると、クラスタエージェントは再インストゥルメントしません。これは、Java エージェントと展開の両方が トラブルシューティングの詳細については、「自動インストゥルメンテーションの検証」の「アップグレードされた展開の再インストゥルメンテーションの問題のトラブルシューティング」を参照してください。 |
| [ ] | インストゥルメンテーションのためのマークが付けられた特定の展開ラベル。 このパラメータは、インストゥルメント化する インストゥルメンテーションには、少なくとも 1 つのラベルを一致させる必要があります。 次に例を示します。
たとえば、 |
| .* | インストゥルメンテーションの対象になる展開の名前。 このパラメータは、instrumentationRules 内で指定された このパラメータは、正規表現として展開名を受け入れます。 インストゥルメント化する展開が複数ある場合は、スペースを使用せずに名前を " デフォルトでは、このパラメータは |
enableForceReInstrumentation | false | 新しく展開されたインストゥルメンテーション プロパティで、正常にインストゥルメント化されたポッドの古い設定を上書きする必要がある場合は、このプロパティを true に設定する必要があります。 デフォルトでは、このプロパティは false に設定されています。 クラスタエージェントのアップグレード中に、 正常にインストゥルメント化された展開にインストゥルメンテーション構成を保持する必要がある場合は、値を false に設定します。ただし、既存の展開のインストゥルメンテーション状態が失敗または新規の場合は、更新された構成が適用されます。 クラスタエージェントをアップグレードする場合、正常にインストゥルメント化された展開に更新された構成を適用するには、この値を true に設定する必要があります。 |
enableInstallationReport | "false" | インストール情報の収集を有効または無効にします。次の詳細を含む要約レポートが生成されます。
インストールレポートを表示するには、「インストールレポートの表示」を参照してください。 |
|
CODE
CODE
CODE
| Node.js エージェント、.NET Core for Linux、および Java エージェントがプルされた Docker リポジトリ。 次の値をサポートしています。
|
| None | アプリケーションのインストゥルメント化に使用されるインストゥルメンテーション方式。 次の値をサポートしています。
|
|
| 必須です。このパラメータを使用して、自動インストゥルメンテーションを有効にします。 「インストゥルメンテーション ルールのためのクラスタエージェントの構成」を参照してください。 |
| なし | Java エージェント SSL キーストアファイルのシークレット名。詳細については、「Java エージェント自動インストゥルメンテーションのカスタム SSL の使用」を参照してください。 |
| なし | Java エージェント SSL キーストアパスワードのシークレット名。詳細については、「Java エージェント自動インストゥルメンテーションのカスタム SSL の使用」を参照してください。 |
| "" | 必須です。値を指定しない場合、自動インストゥルメンテーションは機能しません。 正規表現としてインストゥルメント化される名前空間を指定します。 インストゥルメント化する名前空間が複数ある場合は、スペースを使用せずに "|" を使用して名前空間を区切ります。 デフォルトでは、名前空間はインストゥルメント化されません。 |
numberOfTaskWorkers | 2 | 同時に自動インストゥルメント化される展開数のレート制限を設定します。 この値を大きくすると、クラスタ内でのポッドの同時再起動数が増加する可能性があります。 |
|
| ネットワークの可視性のアプリケーション エージェント( デフォルトでは、 次の値をサポートしています。
|
| 0 | アプリケーションコンテナを非ルートユーザとして構成した場合は、対応するグループのグループ ID(GID)を提供します。
デフォルト値 |
| 0 | アプリケーションコンテナを非ルートユーザとして構成した場合は、対応するユーザのユーザ ID(UID)を提供します。
デフォルト値 |
resourcesToInstrument | Deployment | クラスタエージェントは、このパラメータにリストされているリソースをインストゥルメント化します。サポートされる値は、次のとおりです。
たとえば、
|
tierNameLabel | 該当なし | このラベルの値は、Splunk AppDynamics 階層名になります。 |
tierNameStrategy | 手動 | 階層の名前を指定するオプション。このパラメータには、次のいずれかの値を指定できます。
|
インストールレポートの表示
cluster-agent.yaml
ファイルで enableInstallationReport
パラメータを有効にしている場合は、要約されたインストールレポートを表示できます。「デフォルトの自動インストゥルメンテーション プロパティ」を参照してください。インストールレポートを表示するには、次の手順を実行します。
kubectl
exec
コマンドを実行して、クラスタエージェントポッドにアクセスします。kubectl exec -it <cluster-agent-pod-name> -n <namespace> sh
CODE- ログのディレクトリに移動します。
InstallationReport.csv
ファイルを開き、レポートを確認します。
Java エージェント自動インストゥルメンテーションのカスタム SSL の使用
デフォルトの cluster-agent.yaml ファイルで次のプロパティを使用して、キーストアファイルのシークレットとパスワードを指定できます。これにより、カスタム SSL を使用した Java エージェントの自動インストゥルメンテーションが有効になります。
- javaAgentCustomSSLKeystore
- javaAgentCustomSSLKeystorePasswordSecret
これらのプロパティを使用するには、カスタム SSL 証明書に JKS フォーマットを使用し、ファイルに custom-ssl.jks
という名前を付ける必要があります。証明書の作成については、「Java エージェント用 SSL の有効化」を参照してください。
次のコマンドを実行して、カスタム SSL を使用した Java エージェントの自動インストゥルメンテーションに使用されるシークレットを作成します。
- キーストアファイルのシークレットを作成します。
kubectl -n appdynamics create secret generic <secret name> --from-file=<path to custom-ssl.jks file>
CODE - キーストアパスワードのシークレットを作成します。
kubectl -n appdynamics create secret generic <secret name> --from-literal=keystore-password=‘<keystorePassword>’
CODE
証明書更新後のシークレットの更新
カスタム SSL キーストアファイルまたはキーストアパスワードを変更する場合は、次の手順を実行する必要があります。
- Java アプリケーションのインストゥルメント化を解除します。
- キーストアファイルとキーストアパスワードの新しいシークレットを作成します。「Java エージェント自動インストゥルメンテーションのカスタム SSL の使用」を参照してください。
- Java アプリケーションを再インストゥルメント化します。
InstrumentationRule プロパティ
次の表に、InstrumentationRule
で自動インストゥルメンテーションを設定するために使用できるプロパティを示します。
パラメータ名 | デフォルト値 | 説明 |
---|---|---|
analyticsHost | N/A | 分析エージェントのホスト名。 このパラメータは、Node.js エージェントまたは .NET Core エージェントでデフォルトのトランザクションデータを Analytics エージェントに送信する必要がある場合に必須となります。 |
analyticsPort | 該当なし | 分析エージェントのリスニングポート。 たとえば、分析エージェントがポート 9090 でリッスンしている場合、このパラメータの値は このパラメータは、Node.js エージェントでデフォルトのトランザクションデータを分析エージェントに送信する必要がある場合に、 |
analyticsSslEnabled | 該当なし | この値は、Analytics エージェントポートが SSL 対応かどうかに基づいています。ポートが SSL 対応でない場合は、値を このパラメータは、Node.js エージェントでデフォルトのトランザクションデータを分析エージェントに送信する必要がある場合に、 |
containerMatchString | 該当なし | これは、値を満たす名前を持つコンテナを選択するための正規表現値です。このパラメータでは、 このパラメータとともに このパラメータは、 |
customAgentConfigSource | 該当なし | このパラメータは、ConfigMaps を介してインストゥルメント化するエージェントのカスタム設定を使用するオプションを提供します。このパラメータでは、クラスタエージェントの名前空間に必要な ConfigMap を作成する必要があります。このパラメータは、クラスタエージェントの YAML ファイルから動的に設定できます。YAML ファイルに加えた変更は、アプリケーションを再起動することなく、インストゥルメント化されたすべてのエージェントに対して更新されます。同様に、ConfigMap の設定に加えた変更は、アプリケーションを再起動することなく、すべてのインストゥルメント化されたエージェントに対して更新されます。
展開から ConfigMap ファイル(ルールで使用)を削除する必要がある場合は、最初にこのパラメータをクラスタエージェントの YAML ファイルから削除し、次にクラスタエージェントの名前空間から ConfigMap を削除する必要があります。 |
customSecretName | 該当なし | カスタムシークレット名。これは、ライセンスルールを定義するときに生成される名前と同じです。 |
customSecretKey | 該当なし | カスタムシークレットキー。これは、ライセンス ルールを定義するときに生成されるキーと同じです。 |
| first | このパラメータは、インストゥルメント化する必要があるコンテナを選択するオプションを提供します。次の値のいずれでも指定できます。
|
language | 該当なし | インストゥルメント化されるアプリケーションの言語。 サポート対象の言語は次のとおりです。
|
matchString | 該当なし | ルールが適用される展開名を照合するための正規表現。 このパラメータに値を指定しない場合、クラスタエージェントは |
namespaceRegex | "" | このルールの一部としてインストゥルメント化される名前空間を指定する正規表現。名前空間は、パイプ記号(|) を使用してスペースを使用せずに区切ることができます。 |
labelMatch | {} | このルールに含めるラベルの key-value ペアのリスト。 いずれかのラベルと一致すれば満たされます。例: |
appName | <defaultAppName > に移動してください。 | コントローラに報告するために Java エージェントによって使用されるアプリケーション名。 値が指定されていない場合は、構成された |
appNameLabel | 該当なし | このラベルの値は、Splunk AppDynamics アプリケーション名になります。 |
customAgentConfig | 該当なし | このパラメータは、Java および Node.js アプリケーションに固有です。 アプリケーション フレームワークでインストゥルメンテーションに特定の設定が必要な場合は、カスタムシステムプロパティを追加できます。 Java アプリケーションの場合:この値は、他の Java エージェントプロパティとともに設定された Node.js アプリケーションの場合:この値は |
tierName | "" | コントローラに報告するために Java エージェントによって使用される階層名。 階層名が指定されていない場合は、階層の名前戦略が手動のとき、展開名がデフォルトとして使用されます。 |
tierNameLabel | 該当なし | このラベルの値は、Splunk AppDynamics 階層名になります。 |
nodeName | "" | このパラメータは、階層の下のノードに順番に名前を付けるために使用されます。 ノード名が指定されていない場合は、展開名がデフォルトとして使用されます。 たとえば、階層内で使用される 2 つのノードがあり、アプリケーション環境の展開名は abc とします。構成ファイルでノード名の値を指定しない場合、クラスタエージェントは次をノード名とします。
|
env | "" | このパラメータは、Java アプリケーションに固有です。 アプリケーション エージェントのシステムプロパティが追加される環境変数。指定すると、このインストゥルメンテーション ルールと一致する展開の 何も指定されていない場合、デフォルトは |
imageInfo |
CODE
CODE
CODE
| 次のプロパティのいずれかを選択できます。
このルールで言及されている特定の言語について、このインストゥルメンテーション ルールと一致する展開の デフォルトのクラスタレベルの構成を上書きし、この特定の選択したルールにカスタムのエージェントバージョンを使用する場合は、これを構成する必要があります。 |
|
| ネットワークの可視性のアプリケーション エージェント( デフォルトでは、 次の値をサポートしています。
|
| 0 | アプリケーションコンテナを非ルートユーザとして構成した場合は、対応するグループの これにより、エージェント アーティファクトに適切なファイル権限が設定されます。 この値は、インストゥルメント化されたすべてのリソースに適用されます。 デフォルトのインストゥルメンテーション用に設定されている |
| 0 | アプリケーションコンテナを非ルートユーザとして構成した場合は、対応するユーザの これにより、エージェント アーティファクトに適切なファイル権限が設定されます。 この値は、インストゥルメント化されたすべてのリソースに適用されます。 デフォルトのインストゥルメンテーション用に設定されている |
| 該当なし | 必要なセキュリティコンテキスト制約パラメータを指定します。securityContext 内で使用できるパラメータのリストについては、「securityContext パラメータ」を参照してください。 |
SecurityContext パラメータ
securityContext
パラメータ内で次のパラメータを使用できます。
OpenShift バージョンが 4.14
以降の場合は、securityContext 内のすべての子パラメータが、セキュリティコンテキスト制約(SCC)で概説されている許容値に基づいて指定されていることを確認します。Red Hat OpenShift ドキュメントの「セキュリティコンテキスト上の制約」を参照してください。
たとえば、インストゥルメンテーション ルールの RunAsUser
プロパティを使用する場合、ユーザー ID(UID)は許容範囲内である必要があります。UID の SCC の許容範囲は 1000
~ 9001 です。したがって、RunAsUser
値はこの範囲内でのみ追加できます。他のセキュリティ コンテキスト パラメータについても同様です。
パラメータ名 | デフォルト値 | 説明 |
---|---|---|
| 0 | アプリケーションコンテナを非ルートユーザとして構成した場合は、対応するグループの これにより、エージェント アーティファクトに適切なファイル権限が設定されます。 この値は、インストゥルメント化されたすべてのリソースに適用されます。 デフォルトのインストゥルメンテーション用に設定されている |
| 0 | アプリケーションコンテナを非ルートユーザーとして構成した場合は、対応するユーザーの userId を提供します。 これにより、エージェント アーティファクトに適切なファイル権限が設定されます。 この値は、インストゥルメント化されたすべてのリソースに適用されます。 デフォルトのインストゥルメンテーション用に設定されている |
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 固有のオプションを指定します。
|