Download PDF
Download page サポートされるアプリケーションの自動インストゥルメンテーションの有効化.
サポートされるアプリケーションの自動インストゥルメンテーションの有効化
Kubernetes クラスタに展開されている Java アプリケーション、.NET コア(Linux)アプリケーション、または Node.js アプリケーションに必須のエージェントを動的に追加するには、自動インストゥルメンテーション オプションを使用します。このオプションを使用するには、Java アプリケーションが実行されているクラスタにクラスタエージェントを展開する必要があります。「クラスタエージェントを使用した Kubernetes のモニターリング」を参照してください。
cluster-agent.yaml
ファイルを編集することにより、名前空間内の特定の名前空間や特定の展開に対して自動インストゥルメンテーションを有効にすることができます。
クラスタエージェントがサポートされているアプリケーションの展開を検出し、その展開が名前空間および展開が設定された自動インストゥルメンテーション ルールと一致すると、クラスタエージェントはアプリケーションの導入仕様を変更します。クラスタエージェントは、AppDynamics .NET、Node.js、または Java エージェントイメージを含む init
コンテナを展開にアタッチします。アプリケーションが再起動すると、必須エージェントがアプリケーションコンテナにコピーされます。これで、アプリケーションコンテナが AppDynamics エージェント(Node.js エージェント、.NET Agent for Linux、または Java エージェント)を参照するようになり、自動インストゥルメント化されたアプリケーションとなります。「サポートされるアプリケーションの自動インストゥルメンテーションの有効化」を参照してください。
(Java の場合)自動インストゥルメンテーション機能は、次の Java フレームワークで動作することがテストおよび認定されています。
- Tomcat
- Spring
- GlassFish
- JBoss Wildfly
自動インストゥルメンテーションは、-javaagent
引数をサポートする環境変数を提供するすべての Java アプリケーションで機能します。「Java の展開要件」を参照してください。
自動インストゥルメンテーションのサポート対象アプリケーション
次の自動インストゥルメンテーションを実行できます。
- Node.js エージェントと Node.js アプリケーション
- Linux での .NET Core アプリケーションと .NET Agent for Linux
- Java アプリケーションと Java エージェント
- .NET Core および Node.js アプリケーションでは、自己署名証明書ではなく、CA によって署名された証明書のみがサポートされます。 コントローラが自己署名証明書を使用している場合は、Java アプリケーションの自動インストゥルメンテーションのみがサポートされます。
- カスタム SSL 証明書を使用するには、クラスタエージェントの構成を確実に行ってオンプレミスのコントローラに SSL を使用します。この証明書は、インストゥルメンテーション エージェントによって使用されます。「オンプレミスのコントローラに SSL を使用するためのクラスタエージェントの構成」を参照してください。
- Node.js アプリケーションの場合は、
shim.js
ファイル内の証明書の次のパスを更新し、customAgentConfigSource
パラメータ内でこの ConfigMap を使用する必要があります。このパラメータの詳細については、「インストゥルメンテーション ルールのためのクラスタエージェントの構成」を参照してください。certificateFile: “/opt/appdynamics-nodejs/custom-ssl.pem”
要件
- クラスタ エージェント バージョン 20.5 以降(「クラスタエージェントの要件およびサポート対象環境」を参照)
Java の展開要件
- 環境変数を使用して Java コマンドに
-javaagent
引数を含めることをサポートする Java アプリケーション。 - 単一の JVM プロセスを実行する単一のコンテナを持つポッドを使用した Java 展開。複数のコンテナを使用している場合、クラスタエージェントは導入仕様で指定された最初のコンテナをインストゥルメント化します。
Node.js の展開要件
- アプリケーションで、Node.js 8.6 以降のバージョンを使用する必要があります。
- 使用しているアプリケーションのバージョンとオペレーティングシステムのディストリビューションに基づいて、Docker リポジトリから正しい Node.js エージェントのイメージを使用していることを確認します。
たとえば、20.5.0 Node.js エージェントが必要で、アプリケーションで Node.js バージョン 10 の Alpine Linux ディストリビューションを使用している場合は、20.5.0-alpinev10
イメージを使用できます。必要なオペレーティングシステムのディストリビューションと必要なバージョンを取得するには、dockerhub を参照してください。 - 自動インストゥルメンテーションの設定時に、デフォルトのトランザクションデータを分析エージェントに送信するように Node.js エージェントを設定する必要がある場合は、分析ホストとポートを設定します。
.NET Core の要件(Linux)
- 自動インストゥルメンテーションの設定時に、デフォルトのトランザクションデータを分析エージェントに送信するように .NET エージェントを設定する必要がある場合は、分析ホストとポートを設定します。
- 使用しているアプリケーションのバージョンとオペレーティングシステムのディストリビューションに基づいて、Docker リポジトリから正しい .NET エージェントイメージを使用していることを確認します。
たとえば、20.5.0 .NET Agent for Linux が必要で、アプリケーションで Alpine Linux ディストリビューションを使用している場合は、20.5.0-alpine
イメージを使用できます。必要なオペレーティングシステムのディストリビューションと必要なバージョンを取得するには、dockerhub を参照してください。
前提条件
- 最新の
cluster-agent-operator.yaml
がクラスタに展開され、クラスタエージェントに必要な権限が付与されている。「Kubernetes での AppDynamics オペレータの展開」または「Red Hat OpenShift での AppDynamics オペレータの展開」を参照してください - クラスタエージェントがクラスタに展開されている(「クラスタエージェントのインストール」を参照)
- 以前に必須エージェントでインストゥルメント化されていない少なくとも 1 つの Java アプリケーションがクラスタに展開されている
- 自動インストゥルメント化されるアプリケーションの数に基づいて、コントローラが十分なエージェントライセンスを持つ
- (Java の場合)Java エージェントのリソース要件に基づいて、ポッドに設定されるメモリの要求または制限を調整する(「Java エージェントのインストール」を参照)
- ポッドの再起動を処理するのに十分なクラスタ容量があることを確認する。特に自動インストゥルメント化するポッドが多数ある場合に、ポッドの削除と再作成をサポートするには、初期フェーズで追加の CPU とメモリ容量が必要になります。自動インストゥルメンテーション中に、影響を受ける展開がローリング更新されます。その結果、新しいポッドが作成され、古いポッドが終了している間、クラスタ内のポッドの数が一時的に増加します。必要な追加キャパシティは、展開する数とローリング更新戦略の設定(最大サージ% など)によって異なります。自動インストゥルメンテーションをオンにする前に、十分な CPU およびメモリ容量があることを確認します。展開のサブセットを対象とするインストゥルメンテーション ルールを段階的に追加することで、インストゥルメンテーションのロールアウトを制御できます。
権限(Permissions)
自動インストゥルメンテーションを実装するために、クラスタエージェントに次の権限が必要になります。
- 導入仕様の変更
- ポッドでのコマンドの実行
- 名前空間のアクセスキーを管理するためのシークレットの作成または更新
デフォルトでは、cluster-agent-operator.yaml
ファイルを展開するときにこれらの権限が追加されます。
サポートされるアプリケーションの自動インストゥルメンテーションの有効化
クラスタに展開された Java アプリケーションの自動インストゥルメンテーションを有効にするには、インストゥルメンテーション ルールを作成し、必要なパラメータを定義する必要があります。
自動インストゥルメンテーションを有効にするには、次の手順を実行します。
コントローラのアクセスキーと API クライアントのログイン情報を使用して、クラスタエージェントのシークレットを作成します。
kubectl -n appdynamics create secret generic cluster-agent-secret --from-literal=controller-key=<access-key> --from-literal=api-user=
"<username>@<customer>:<password>"
ここで、
api-user
は、Administrator として割り当てられたロールでコントローラにアクセスできる任意のユーザーです。api-user
は、ポッドの削除時にノードの履歴をマークするために必要です。api-user
リテラルを使用せずにアクセスキーがすでに作成されている場合は、そのアクセスキーを削除してから再作成します。api-user
は、ポッドの削除時にノードの履歴をマークするために必要です。- 自動インストゥルメンテーション用の
cluster-agent.yaml
ファイルを構成します。次の構成プロパティは必須です。instrumentationMethod
:インストゥルメンテーションを有効にするには、値をEnv
に設定します。nsToInstrumentRegex
:モニターする名前空間を構成します。instrumentationRules
:自動インストゥルメンテーション ルールと子プロパティを指定します。
- 展開が
instrumentationRules
内のプロパティと一致しない場合、自動インストゥルメンテーションは有効になりません。 instrumentationRules
内のルールの選択に使用されるパラメータに値が指定されていない場合、クラスタエージェントは、「自動インストゥルメンテーションのためのクラスタエージェントの構成」で指定される対応するデフォルト値を使用します。対応するデフォルト値がない場合、自動インストゥルメンテーションは有効になりません。
「自動インストゥルメンテーションのためのクラスタエージェントの構成」を参照してください。
kubectl
を使用して、更新されたcluster-agent.yaml
を適用します。kubectl apply -f cluster-agent.yaml
更新された
cluster-agent.yaml
ファイルを適用すると、アプリケーションに関連付けられた展開ロールアウト戦略に基づいて、関連するポッドとコンテナが再起動されます。
インストゥルメンテーションが正常に完了した場合でも、ポッドアノテーションで Node.js および .NET(Linux)アプリケーションの APPD_POD_INSTRUMENTATION_STATE
が failed
と表示されることがあります。インストゥルメンテーションが正常に完了したかどうかを確認するには、導入仕様を参照してください。
AppDynamics アプリケーションの命名オプション
コントローラのアプリケーション ダッシュボードでアプリケーションに名前を付けるには、3 つのアプリケーション命名戦略を使用できます。次のいずれかの値に appNameStrategy
プロパティを割り当てて、戦略を選択します。
manual:
cluster-agent.yaml
ファイル内のdefaultAppName
またはappName
パラメータを使用して、アプリケーション名を設定します。label:アプリケーションの導入仕様のラベルをアプリケーション名として使用します。
- namespace:アプリケーション名として Kubernetes 名前空間を使用します。
手動
デフォルトでは appNameStrategy
が manual
となり、 defaultAppName
または appName
パラメータを使用してアプリケーション名を設定します。
defaultAppName
が指定されている場合は、インストゥルメンテーション ルールで上書きされない限り、これを使用します。appName
がインストゥルメンテーション ルールで指定されている場合は、それを使用します。
たとえば、次の仕様で、ECommerce
は ecom
および groceries
名前空間に適用されるデフォルトのアプリケーション名であり、BookStore
は books
名前空間に適用されるアプリケーション名です。
apiVersion: appdynamics.com/v1alpha1
kind: Clusteragent
metadata:
name: k8s-cluster-agent
namespace: appdynamics
spec:
appName: "<cluster-name>"
# ...
# auto-instrumentation config
instrumentationMethod: Env
nsToInstrumentRegex: ecom|books|groceries
appNameStrategy: manual
defaultAppName: ECommerce
instrumentationRules:
- namespaceRegex: books
appName: BookStore
ラベル
このオプションでは、アプリケーション名の戦略として label
パラメータを使用します。ラベルオプションを使用するには、appNameLabel
パラメータに値を指定します。appNameLabel
値は、アプリケーションの導入仕様で指定されたラベルを参照します。
spec.appNameLabel
が指定されている場合は、インストゥルメンテーション ルールで上書きされない限り、これを使用します。appNameLabel
がインストゥルメンテーション ルールで指定されている場合は、それを使用します。
たとえば、次の仕様では、導入仕様のラベル appname
を使用して ecom
と groceries
名前空間のアプリケーション名を設定し、ラベル app
を books
名前空間で使用します。
apiVersion: appdynamics.com/v1alpha1
kind: Clusteragent
metadata:
name: k8s-cluster-agent
namespace: appdynamics
spec:
appName: "<cluster-name>"
# ...
# auto-instrumentation config
instrumentationMethod: Env
nsToInstrumentRegex: ecom|books|groceries
appNameStrategy: label
appNameLabel: appname
instrumentationRules:
- namespaceRegex: books
appNameLabel: app
次の導入仕様のスニペットに示すようにラベル appname
を設定する ecom
または groceries
名前空間に導入されたアプリケーションの場合、コントローラのアプリケーション ダッシュボードで eCommerce
アプリケーションにレポートされます。
apiVersion: apps/v1
kind: Deployment
metadata:
name: ecom-app
labels:
appname: eCommerce
spec:
...
名前空間
このオプションでは、アプリケーション名の戦略として namespace
パラメータを使用します。このオプションを使用すると、コントローラのアプリケーション ダッシュボードでアプリケーションが展開されている名前空間名をアプリケーション名として使用できます。
次の仕様では、ecom
、books
、および groceries
名前空間の各アプリケーションで、展開先の名前空間に基づいてアプリケーション名を使用します。
apiVersion: appdynamics.com/v1alpha1
kind: Clusteragent
metadata:
name: k8s-cluster-agent
namespace: appdynamics
spec:
appName: "<cluster-name>"
# ...
# auto-instrumentation config
instrumentationMethod: Env
nsToInstrumentRegex: ecom|books|groceries
appNameStrategy: namespace
自動インストゥルメンテーションの無効化
デフォルトでは、アプリケーションの自動インストゥルメンテーションは無効になっています。すでに自動インストゥルメンテーションを有効にしていて、特定の名前空間に対して無効にする場合は、nsToInstrumentRegex
からその名前空間を削除します。自動インストゥルメンテーションを完全に無効にするには、instrumentationMethod
を None
に設定します。
ポッドの再起動の影響を最小化
「enable」の手順を使用して自動インストゥルメンテーションを有効にすると、展開に関連付けられた展開ロールアウト戦略に基づいて、関連するポッドが再起動されます。この再起動により、ポッドが削除および再作成されるため、クラスタに大きな影響を与える可能性があります。多数のポッドの再起動による影響を軽減するため、クラスタエージェントではデフォルトで 2 つの同時自動インストゥルメンテーション タスクのみを許可しています。後続の展開(resourcesToInstrument
)は、インストゥルメント化された展開のロールアウト後に自動インストゥルメント化されます。ただし、パラメータ numberOfTaskWorkers
を設定し、設定に基づいて同時自動インストゥルメンテーション タスクの数を指定できます。
自動インストゥルメンテーションのためのクラスタエージェントの構成
自動インストゥルメンテーション用に、cluster-agent.yaml
ファイルで次の構成パラメータがサポートされています。クラスタエージェントでサポートされているその他の構成パラメータについては、「クラスタエージェントの設定」を参照してください。
パラメータ名 | デフォルト値 | 説明 |
---|---|---|
appNameStrategy | 手動 | AppDynamics アプリケーションの名前を指定するオプション。このパラメータには、次のいずれかの値を指定できます。
このパラメータの使用方法の詳細については、「AppDynamics アプリケーションの命名オプション」を参照してください。 |
appNameLabel | このラベルの値は、AppDynamics アプリケーション名になります。 | |
defaultAnalyticsHost | 分析エージェントのホスト名。 このパラメータは、Node.js エージェントまたは .NET エージェントでデフォルトのトランザクションデータを分析エージェントに送信する必要がある場合に必要となります。 デフォルト値は、 | |
defaultAnalyticsPort | 分析エージェントのリスニングポート。 たとえば、分析エージェントがポート 9090 でリッスンしている場合、このパラメータの値は デフォルト値は、 このパラメータは、デフォルトのトランザクションデータを分析エージェントに送信するために Node.js または .NET エージェントを必要とする場合に、 | |
defaultAnalyticsSslEnabled | この値は、分析エージェントポートが SSL 対応かどうかに基づいています。ポートが SSL 対応の場合は値を Node.js または .NET エージェントでデフォルトのトランザクションデータを分析エージェントに送信する必要がある場合は、 デフォルト値は、 | |
| "" | コントローラに報告するためにエージェントによって使用されるアプリケーション名。これは必須です。 |
defaultCustomConfig | このパラメータは、Java アプリケーションに固有です。 アプリケーション フレームワークでインストゥルメンテーションに特定の設定が必要な場合は、カスタムシステムプロパティを追加できます。 この値は、他の Java エージェントプロパティとともに設定された | |
defaultContainerMatchString | これは、インストゥルメント化するコンテナを選択するための正規表現値です。このパラメータを使用するには、インストゥルメンテーション ルールで指定された このパラメータとともに | |
| JAVA_TOOL_OPTIONS | このパラメータは、Java アプリケーションに固有です。
これを上書きして、展開に最適な他の環境を使用することができます |
| [ ] | インストゥルメンテーションのためのマークが付けられた特定の展開ラベル。 このパラメータは、インストゥルメント化する インストゥルメンテーションには、少なくとも 1 つのラベルを一致させる必要があります。 次に例を示します。
たとえば、 |
| .* | インストゥルメンテーションの対象になる展開の名前。 このパラメータは、instrumentationRules 内で指定された このパラメータは、正規表現として展開名を受け入れます。 インストゥルメント化する展開が複数ある場合は、スペースを使用せずに名前を " デフォルトでは、このパラメータは |
|
CODE
CODE
CODE
| Node.js エージェント、.NET Agent for Linux、および Java エージェントがプルされた Docker リポジトリ。 次の値をサポートしています。
|
| None | アプリケーションのインストゥルメント化に使用されるインストゥルメンテーション方式。 次の値をサポートしています。
|
|
| これは、自動インストゥルメンテーションを有効にするための必須パラメータです。 「インストゥルメンテーション ルールのためのクラスタエージェントの構成」を参照してください。 |
| "" | 必須です。値を指定しない場合、自動インストゥルメンテーションは機能しません。 正規表現としてインストゥルメント化される名前空間を指定します。 インストゥルメント化する名前空間が複数ある場合は、スペースを使用せずに "|" を使用して名前空間を区切ります。 デフォルトでは、名前空間はインストゥルメント化されません。 |
numberOfTaskWorkers | 2 | 同時に自動インストゥルメント化される展開数のレート制限を設定します。 この値を大きくすると、クラスタ内でのポッドの同時再起動数が増加する可能性があります。 |
|
| ネットワークの可視性のアプリケーション エージェント( デフォルトでは、 次の値をサポートしています。
|
| 0 | アプリケーションコンテナを非ルートユーザとして構成した場合は、対応するグループのグループ ID(GID)を提供します。
|
| 0 | アプリケーションコンテナを非ルートユーザとして構成した場合は、対応するユーザのユーザ ID(UID)を提供します。
デフォルト値 |
resourcesToInstrument | Deployment | クラスタエージェントは、このパラメータにリストされているリソースをインストゥルメント化します。デフォルト値は Deployment です。StatefulSet をインストゥルメント化する必要がある場合は、 たとえば、Deployments および StatefulSet をインストゥルメント化するには、次のように設定します。
|
インストゥルメンテーション ルールのためのクラスタエージェントの構成
特定の名前空間または展開の構成をさらにカスタマイズするために、インストゥルメンテーション ルールを使用できます。ルールを作成するには、この表の instrumentationRules
プロパティと子プロパティを使用します。特定の名前空間のデフォルトのインストゥルメンテーション ルールを上書きするには、これらのプロパティを使用します。さらに、これらを使用して、名前空間ごとに異なるコントローラ アプリケーション名とエージェントバージョンを割り当てることができます。
クラスタエージェントは、namespaceRegex
、matchString,
、および labelMatch
の組み合わせを使用して、最初に一致したインストゥルメンテーション ルールを選択します。ルールが一致しない場合、構成はこれらのパラメータで指定されているデフォルト値に戻ります。
nsToInstrumentRegex
defaultInstrumentationLabelMatch
defaultInstrumentMatchString
たとえば、インストゥルメンテーション ルール -matchString
"<string>"
が、クラスタ エージェント コンフィギュレーション ファイルに追加されたとします。
|
展開の名前がこの文字列と一致する場合は、instrumentationRules
の下の残りのパラメータが適用されます。文字列が一致しない場合、自動インストゥルメンテーションは停止します。パラメータがルール内で定義されない場合、クラスタエージェントのデフォルトは、パラメータ nsToInstrumentRegex, defaultInstrumentationLabelMatch,
および defaultInstrumentMatchString
になり、インストゥルメンテーション ルールが決定されます。
パラメータ名 | デフォルト値 | 説明 |
---|---|---|
analyticsHost | 分析エージェントのホスト名。 このパラメータは、Node.js エージェントまたは .NET エージェントでデフォルトのトランザクションデータを分析エージェントに送信する必要がある場合に必要となります。 | |
analyticsPort | 分析エージェントのリスニングポート。 たとえば、分析エージェントがポート 9090 でリッスンしている場合、このパラメータの値は このパラメータは、デフォルトのトランザクションデータを分析エージェントに送信するために Node.js または .NET エージェントを必要とする場合に、 | |
analyticsSslEnabled | この値は、分析エージェントポートが SSL 対応かどうかに基づいています。ポートが SSL 対応でない場合は、値を Node.js または .NET エージェントでデフォルトのトランザクションデータを分析エージェントに送信する必要がある場合は、 | |
containerMatchString | これは、値を満たす名前を持つコンテナを選択するための正規表現値です。このパラメータでは、 このパラメータとともに このパラメータは、 | |
customAgentConfigSource | このパラメータは、ConfigMaps を介してインストゥルメント化するエージェントのカスタム設定を使用するオプションを提供します。このパラメータでは、クラスタエージェントの名前空間に必要な ConfigMap を作成する必要があります。このパラメータは、クラスタエージェントの YAML ファイルから動的に設定できます。YAML ファイルに加えた変更は、アプリケーションを再起動することなく、インストゥルメント化されたすべてのエージェントに対して更新されます。同様に、ConfigMap の設定に加えた変更は、アプリケーションを再起動することなく、すべてのインストゥルメント化されたエージェントに対して更新されます。
展開から ConfigMap ファイル(ルールで使用)を削除する必要がある場合は、最初にこのパラメータをクラスタエージェントの YAML ファイルから削除し、次にクラスタエージェントの名前空間から ConfigMap を削除する必要があります。 | |
| First | このパラメータは、インストゥルメント化する必要があるコンテナを選択するオプションを提供します。次のいずれかの値を指定できます。
|
language | インストゥルメント化されるアプリケーションの言語。 次の言語がサポートされています。
| |
matchString | ルールが適用される展開名を照合するための正規表現 このパラメータに値を指定しない場合、クラスタエージェントは | |
labelMatch | {} | このルールに含めるラベルの key-value ペアのリスト。 いずれかのラベルと一致すれば満たされます。例: |
appName | <defaultAppName > に移動してください。 | コントローラに報告するために Java エージェントによって使用されるアプリケーション名。 値が指定されていない場合は、構成された |
appNameLabel | このラベルの値は、AppDynamics アプリケーション名になります。 | |
customAgentConfig | このパラメータは、Java アプリケーションに固有です。 アプリケーション フレームワークでインストゥルメンテーションに特定の設定が必要な場合は、カスタムシステムプロパティを追加できます。 この値は、他の Java エージェントプロパティとともに設定された | |
tierName | "" | コントローラに報告するために Java エージェントによって使用される階層名。 階層名が指定されていない場合は、展開名がデフォルトとして使用されます。 |
env | "" | このパラメータは、Java アプリケーションに固有です。 アプリケーション エージェントのシステムプロパティが追加される環境変数。指定すると、このインストゥルメンテーション ルールと一致する展開の 何も指定されていない場合、デフォルトは |
imageInfo |
CODE
CODE
CODE
| エージェントイメージの場所。次のいずれかのパラメータを選択できます。
デフォルト値は このルールで言及されている特定の言語について、このインストゥルメンテーション ルールと一致する展開の デフォルトのクラスタレベルの構成を上書きし、この特定の選択したルールにカスタムのエージェントバージョンを使用する場合は、これを構成する必要があります。 |
|
| ネットワークの可視性のアプリケーション エージェント( デフォルトでは、 次の値をサポートしています。
|
| 0 | アプリケーションコンテナを非ルートユーザとして構成した場合は、対応するグループの これにより、エージェント アーティファクトに適切なファイル権限が設定されます。 この値は、インストゥルメント化されたすべてのリソースに適用されます。 デフォルトのインストゥルメンテーション用に設定されている |
| 0 | アプリケーションコンテナを非ルートユーザとして構成した場合は、対応するユーザの これにより、エージェント アーティファクトに適切なファイル権限が設定されます。 この値は、インストゥルメント化されたすべてのリソースに適用されます。 デフォルトのインストゥルメンテーション用に設定されている |
設定例
例 1:ecom
名前空間内のすべての展開をインストゥルメント化します。各ポッドで実行されている Java エージェントは、Ecommerce
アプリケーションでコントローラに登録され、階層名はデフォルトで Kubernetes の展開名になります。
例 2:すべての名前空間の、名前が Payment
で始まり、ラベル module=payment
を持つ展開のみをインストゥルメント化します。
例 3:名前空間 ecom
および books
のすべての展開をインストゥルメント化します。books
名前空間内のアプリケーションの場合は、コントローラで BookStore
というアプリケーション名を使用し、Java エージェントの特定のバージョンを使用します。
例 4:groceries
名前空間が異なるコントローラのアプリケーション名を使用するように例 3 の構成を上書きし、javaagent
Java 引数を挿入するように JAVA_OPTS
環境変数を上書きします。
例 5:名前空間 books
の Node.js アプリケーションと、名前空間 groceries
の .NET コア Linux アプリケーションをインストゥルメント化します。また、Node.js アプリケーションで、分析エージェントにトランザクションデータを送信する必要があります。
例 6:Java アプリケーションの str
で始まる名前のコンテナを、名前空間 ecom でインストゥルメント化します。また、controllerConf
ConfigMap にある controller-info.xml
および
app-agent-config.xml
構成ファイルと logConf
ConfigMap にあるエージェントのロギング設定用の log4j2.xml
ファイルのカスタムエージェント設定を使用します。これらの ConfigMap は、クラスタエージェントの名前空間に存在します。
例 7:groceries
名前空間のすべての展開をインストゥルメント化し、books
および ecom
名前空間の Payment
で始まる名前が付いた展開のみをインストゥルメント化します。
apiVersion: appdynamics.com/v1alpha1
kind: Clusteragent
metadata:
name: k8s-cluster-agent
namespace: appdynamics
spec:
appName: "<app-name>"
controllerUrl: "<protocol>://<appdynamics-controller-host>:8080"
account: "<account-name>"
# docker image info
image: "<your-docker-registry>/appdynamics/cluster-agent:tag"
nsToMonitor:
- "default"
# auto-instrumentation config
instrumentationMethod: Env
nsToInstrumentRegex: ecom
defaultAppName: Ecommerce
instrumentationRules:
imageInfo:
java:
image: "docker.io/appdynamics/java-agent:20.3.0"
agentMountPath: /opt/appdynamics
imagePullPolicy: Always
apiVersion: appdynamics.com/v1alpha1
kind: Clusteragent
metadata:
name: k8s-cluster-agent
namespace: appdynamics
spec:
appName: "<app-name>"
controllerUrl: "<protocol>://<appdynamics-controller-host>:8080"
account: "<account-name>"
# docker image info
image: "<your-docker-registry>/appdynamics/cluster-agent:tag"
nsToMonitor:
- "default"
# auto-instrumentation config
instrumentationMethod: Env
nsToInstrumentRegex: .
*
defaultAppName: Ecommerce
instrumentationRules:
- matchString: ^Payment
labelMatch:
- module: payment
apiVersion: appdynamics.com/v1alpha1
kind: Clusteragent
metadata:
name: k8s-cluster-agent
namespace: appdynamics
spec:
appName: "<app-name>"
controllerUrl: "<protocol>://<appdynamics-controller-host>:8080"
account: "<account-name>"
# docker image info
image: "<your-docker-registry>/appdynamics/cluster-agent:tag"
nsToMonitor:
- "default"
# auto-instrumentation config
instrumentationMethod: Env
nsToInstrumentRegex: ecom|books
defaultAppName: Ecommerce
instrumentationRules:
- namespaceRegex: books
appName: BookStore
imageInfo:
image: "docker.io/appdynamics/java-agent:4.5.19"
agentMountPath: /opt/appdynamics
imagePullPolicy: Always
- namespaceRegex: ecom
apiVersion: appdynamics.com/v1alpha1
kind: Clusteragent
metadata:
name: k8s-cluster-agent
namespace: appdynamics
spec:
appName: "<app-name>"
controllerUrl: "<protocol>://<appdynamics-controller-host>:8080"
account: "<account-name>"
# docker image info
image: "<your-docker-registry>/appdynamics/cluster-agent:tag"
nsToMonitor:
- "default"
# auto-instrumentation config
instrumentationMethod: Env
nsToInstrumentRegex: ecom|books|groceries
defaultAppName: Ecommerce
imageInfo:
java:
image: "docker.io/appdynamics/java-agent:latest"
agentMountPath: /opt/appdynamics
imagePullPolicy: Always
instrumentationRules:
- namespaceRegex: books
appName: BookStore
imageInfo:
image: "docker.io/appdynamics/java-agent:4.5.19"
agentMountPath: /opt/appdynamics
imagePullPolicy: Always
- namespaceRegex: groceries
appName: Groceries
env: JAVA_OPTS
- namespaceRegex: ecom
#no appName and matchstring for this rule so it will take default appName and default matchstring which is .
*
apiVersion: appdynamics.com/v1alpha1
kind: Clusteragent
metadata:
name: k8s-cluster-agent
namespace: appdynamics
spec:
appName: "<app-name>"
controllerUrl: "<protocol>://<appdynamics-controller-host>:8080"
account: "<account-name>"
# docker image info
image: "<your-docker-registry>/appdynamics/cluster-agent:tag"
nsToMonitor:
- "default"
# auto-instrumentation config
instrumentationMethod: Env
nsToInstrumentRegex: ecom|books|groceries
defaultAppName: Ecommerce
appNameStrategy: namespace
imageInfo:
java:
image: "docker.io/appdynamics/java-agent:latest"
agentMountPath: /opt/appdynamics
imagePullPolicy: Always
instrumentationRules:
- namespaceRegex: groceries
language: dotnetcore
imageInfo:
image: "docker.io/appdynamics/dotnet-core-agent:latest"
agentMountPath: /opt/appdynamics
imagePullPolicy: Always
- namespaceRegex: books
matchString: openmct
language: nodejs
imageInfo:
image: "docker.io/appdynamics/nodejs:20.6.0"
agentMountPath: /opt/appdynamics
imagePullPolicy: Always
analyticsHost: <hostname of the Analytics Agent>
analyticsPort: 443
analyticsSslEnabled: true
apiVersion: appdynamics.com/v1alpha1
kind: Clusteragent
metadata:
name: k8s-cluster-agent
namespace: appdynamics
spec:
appName: "<app-name>"
controllerUrl: "<protocol>://<appdynamics-controller-host>:8080"
account: "<account-name>"
# docker image info
image: "<your-docker-registry>/appdynamics/cluster-agent:tag"
nsToMonitor:
- "default"
# auto-instrumentation config
instrumentationMethod: Env
nsToInstrumentRegex: ecom
defaultAppName: Ecommerce
instrumentationRules:
- namespaceRegex: ecom
matchString: ^Payment
appName: <application-name>
language: <language>
customAgentConfigSource:
- configMapName: controllerConf
subDir: /ver20.8.0.3686/conf/
- configMapName: logConf
subDir: /ver20.8.0.3686/conf/logging
instrumentContainer: select
containerMatchString: ^str
imageInfo:
image: <image-repo>
imagePullPolicy: IfNotPresent
apiVersion: appdynamics.com/v1alpha1
kind: Clusteragent
metadata:
name: k8s-cluster-agent
namespace: appdynamics
spec:
appName: "<app-name>"
controllerUrl: "<protocol>://<appdynamics-controller-host>:8080"
account: "<account-name>"
# docker image info
image: "<your-docker-registry>/appdynamics/cluster-agent:tag"
nsToMonitor:
- "default"
# auto-instrumentation config
instrumentationMethod: Env
nsToInstrumentRegex: ecom|books|groceries
defaultAppName: Ecommerce
appNameStrategy: namespace
defaultMatchString: ^payment
imageInfo:
java:
image: "docker.io/appdynamics/java-agent:latest"
agentMountPath: /opt/appdynamics
imagePullPolicy: Always
instrumentationRules:
- namespaceRegex: groceries
matchString: .
*
- namespaceRegex: ecom|books
#no matchstring so it will take default matchstring which is ^payment