クラスタエージェントは、Linux 上で実行され、AppDynamics オペレータを使用して展開されるように設計されています。このページでは、クラスタエージェントのディレクトリと、次の方法について説明します。

このページには、Kubernetes のマニュアルへのリンクが含まれています。Kubernetes で自身のマニュアルを管理しているため、AppDynamics では Kubernetes のマニュアルの精度については一切保証しません。

クラスタ エージェント ディレクトリ

解凍されたクラスタエージェントには、次のディレクトリ構造が含まれています。

cluster-agent 
├── cluster-agent-operator.yaml 
├── cluster-agent-operator-1.14-or-less.yaml
├── cluster-agent-operator-openshift-1.14-or-less.yaml
├── cluster-agent-operator-openshift.yaml 
├── cluster-agent.yaml 
├── README-alpine.md 
└── docker 
	├── cluster-agent.zip 
	├── Dockerfile
	├── LICENSE 
	└── start-appdynamics
└── helm-charts
	├── Chart.yaml
    ├── README.md
    ├── crds
    ├── templates
    └── values.yaml
TEXT
cluster-agent 
├── cluster-agent-operator.yaml 
├── cluster-agent-operator-1.14-or-less.yaml
├── cluster-agent-operator-openshift-1.14-or-less.yaml
├── cluster-agent-operator-openshift.yaml 
├── cluster-agent.yaml 
├── README-rhel.md 
└── docker 
	├── cluster-agent.zip 
	├── Dockerfile-rhel 
	├── LICENSE 
	└── start-appdynamics
└── helm-charts
	├── Chart.yaml
    ├── README.md
    ├── crds
    ├── templates
    └── values.yaml
TEXT

クラスタエージェントのディレクトリの概要

次の表に、クラスタエージェントのディレクトリファイルの概要とその目的の説明を示します。

ファイル名説明

cluster-agent.yaml

クラスタエージェントの構成と展開に使用されるファイル。

  • cluster-agent.yaml ファイルによりコントローラの詳細が記録され、クラスタエージェントが起動します。
  • AppDynamics オペレータの設定で値が指定されている場合、これらの値は常に内部コンフィギュレーション ファイルよりも優先されます。

cluster-agent-operator.yaml

cluster-agent-operator-1.14-or-less.yaml

これらのファイルは、AppDynamics オペレータの展開に使用されます。

これらのファイルは、最小限の RBAC 権限を含む、Kubernetes、Amazon EKS、AKS のすべてのデフォルト値を設定します。

cluster-agent-operator-openshift.yaml

cluster-agent-operator-openshift-1.14-or-less.yaml

これらのファイルは、Red Hat OpenShift での AppDynamics オペレータの展開に使用されます。

これらのファイルは、最小限の RBAC 権限を含む Red Hat OpenShift のデフォルト値を設定します。

docker

Docker ディレクトリには、クラスタ エージェント イメージを作成するために必要なすべてのファイルが含まれています

Dockerfile

dockerfile :Alpine ベースのクラスタ エージェント イメージの作成に使用
Dockerfile-rheldockerfile :Rhel ベースのクラスタ エージェント イメージの作成に使用
LICENSEクラスタ エージェント イメージに添付された最新の EULA ファイル

cluster-agent.zip

クラスタエージェントのバイナリと構成ファイルを含む zip アーカイブ。
helm-chartsKubernetes で Helm を使用してクラスタエージェントを展開するためのチャートの作成に使用されるフォルダ

README-rhel.md

README-alpine.md

優先オペレーティングシステムを使用してクラスタエージェントを起動する方法に関する指示が含まれています。

start-appdynamics

Docker 内でクラスタエージェントを実行するために使用するスクリプト。

プロキシサポートの構成

  1. cluster-agent.yaml ファイルを見つけて編集します。

  2. cluster-agent.yaml ファイルに proxyUrl パラメータを追加します。

    proxyUrl: <protocol>://<host>:<port>
    TEXT
  3. (オプション)プロキシサーバで認証が必要な場合は、次の手順を実行します。

    1. proxyUser を追加します。

      proxyUser: <user>
      CODE
    2. proxy-password を使用して secret を作成します。

      kubectl -n appdynamics create secret generic cluster-agent-proxy-secret --from-literal=proxy-password='<password>'
      CODE
  4. (オプション)プロキシにのみ SSL を使用する場合は、次の手順を実行します。
    1. .pem 証明書ファイルから secret を作成します(証明書ファイルの名前は proxy-ssl.pem) にする必要があります)。

      kubectl -n appdynamics create secret generic ssl-cert --from-file=proxy-ssl.pem
      TEXT
    2. cluster-agent.yaml ファイルでシークレットファイル名を設定します。

      customSSLSecret: “ssl-cert”
      TEXT

プロキシで SSL を使用し、コントローラで SSL を使用するには、「プロキシ証明書とオンプレミス証明書の組み合わせ」を参照してください。

オンプレミスのコントローラに SSL を使用するためのクラスタエージェントの構成

SaaS コントローラでは、クラスタエージェント SSL が自動的に処理されます。

パブリック証明書と自己署名証明書を持つコントローラ

パブリック証明書または自己署名証明書を使用して SSL を構成するために、kubectl を使用してシークレットを生成します。次の kubectl コマンドを入力して、パブリック証明書または自己署名証明書へのパスを含めます。

kubectl -n appdynamics create secret generic ssl-cert --from-file=<path-to-your-self-signed-certs>/custom-ssl.pem
CODE

証明書ファイルには、次の名前を付ける必要があります。custom-ssl.pem

秘密が作成されたら、前の手順で指定した秘密名を使用して  customSSLSecret プロパティを cluster-agent.yaml ファイルに追加する必要があります。

customSSLSecret: “ssl-cert”
CODE

プロキシ証明書とオンプレミス証明書の組み合わせ

プロキシサーバーとオンプレミスコントローラに 2 つの異なる SSL 証明書がある場合は、これらの両方を次のように 1 つのシークレットにカプセル化できます。

kubectl -n appdynamics create secret generic ssl-cert --from-file=proxy-ssl.pem --from-file=<path-to-your-self-signed-certs>/custom-ssl.pem
TEXT

クラスタエージェントは、customSSLSecret 属性で指定されたシークレットから各証明書をプルし、適切に使用します。 

この例は、 customSSLSecret 属性が定義された cluster-agent.yaml  ファイルを示しています。

apiVersion: appdynamics.com/v1alpha1
kind: Clusteragent
metadata:
  name: k8s-cluster-agent-manual
  namespace: appdynamics
spec:
  # init agent configuration
  appName: "test-k8s-cluster-agent"
  controllerUrl: "https://<controller-url>:443" # always schema and port
  account: "<account-name>" # account
  # agent related properties
  # custom SSL secret name
  customSSLSecret: "ssl-cert"
  # logging properties
  logLevel: INFO
  logFileSizeMb: 7
  logFileBackups: 6
  # docker image info
  image: "<image-url>" 
CODE

クラスタエージェント YAML ファイルの構成

クラスタエージェントを構成するには、ダウンロードパッケージに含まれている cluster-agent.yaml ファイルをテンプレートとして使用します。次のパラメータを変更できます。

パラメータ説明Default動的に構成可能タイプ(Type)要否

account

AppDynamics のアカウント名
admin
該当なし

 いいえ

文字列必須

appName

クラスタの名前。クラスタ名としてコントローラ UI に表示されます。
k8s-cluster
該当なし

なし

文字列必須

controllerUrl

プロトコルおよびポートを含むフル AppDynamics コントローラ URL。
HTTP: http://appd-controller.com:8090
HTTPS: https://appd-controller.com:443

該当なし

なし

文字列必須

customSSLSecret

クラスタエージェントに自己署名証明書またはパブリック証明書を提供します。
"ssl-cert"
該当なしなし文字列オプション

eventUploadInterval

Kubernetes の警告および状態変更イベントがコントローラにアップロードされる頻度(秒単位)。「 クラスタイベントのモニター」を参照してください
10
10×整数オプション

httpClientTimeout

コントローラから応答を受信しなかった場合にサーバーコールが終了するまでの秒数。
30

30

×整数オプション

image

クラスタ エージェント イメージ
your-docker-registry/appdynamics/cluster-agent:latest
該当なし

なし

文字列

必須

imagePullSecret

プライベート Docker レジストリまたはリポジトリからイメージを取得する場合の認証に使用されるクレデンシャルファイル。Docker レジストリ構成に基づいて、クラスタエージェントのイメージをプルする場合に AppDynamics オペレータが使用するシークレットファイルの作成が必要になる場合があります。Kubernetes マニュアルの「Create a Secret by providing credentials on the command line」を参照してください
regcred
該当なしなし文字列オプション

logFileSizeMb

ログの最大ファイルサイズ(MB 単位)。
5
5

はい

整数オプション

logFileBackups

ログに保存するバックアップの最大数。最大バックアップ数に達すると、最初のログファイルの次に最も古いログファイルが削除されます。
3
3

はい

整数オプション

logLevel

ログの詳細の数。INFOWARNINGDEBUG, OR TRACE.
"INFO"

INFO

はい文字列オプション
maxPodLogsTailLinesCount

ログの収集中に tail される行数。

このパラメータを使用するには、ログキャプチャ機能を有効にします。「ポッドログの管理」を参照してください

500500[はい(Yes)] に設定整数オプション

nodeSelector

クラスタエージェントポッドは、その labels プロパティ内に指定されたキーと値のペアを含むノードで実行されます。nodeSelector の機能の詳細については、「nodeSelector」を参照してください。
nodeSelector:
  kubernetes.io/e2e-az-name: az1
該当なしいいえmap [string] [string]オプション

nsToMonitor

クラスタ内でモニターされる名前空間。
nsToMonitor:
  - "default"
- "appdynamics"
default

いいえ


文字列リスト(シーケンス)オプション
nsToMonitorRegex

クラスタでモニタする必要のある名前空間を選択するための正規表現。

このパラメータは、nsToMonitor. より優先します。このパラメータに値を指定しない場合、クラスタエージェントではデフォルト値の nsToMonitor を使用します。

このパラメータは、クラスタ エージェント バージョン 20.9 以降およびコントローラバージョン 20.10 以降で動作します。

詳細については、「名前空間の編集」を参照してください。

nsToMonitoRegex:

.*

N/AYes正規表現オプション
nsToExcludeRegex

nsToMonitorRegex に指定された正規表現に一致する、選択した名前空間から除外する必要がある名前空間の正規表現。

このパラメータは、クラスタ エージェント バージョン 20.9 以降およびコントローラバージョン 20.10 以降で動作します。

このパラメータは、nsToMonitorRegex パラメータの値を指定した場合にのみ使用できます。

nsToExcludeRegex:

ns.*

N/AYes正規表現オプション

podFilter

次に基づいたブロックリストまたは許可リストポッド
  • ポッド名の正規表現
  • ポッドラベル

名前によるブロックリストまたは許可リストの登録は、ラベルによるブロックリストまたは許可リストの登録よりも優先されます。たとえば、podFilter が次のように設定されているとします。

 podFilter:
 blocklistedLabels:
- release: v1
 allowlistedNames:
- ^podname

これにより、名前が「podname'.」で始まるものを除いて、ラベル「release=v1' 」を持つすべてのポッドがブロックされます。

  • ポッドが名前別に許可リストおよびブロックリストに登録されている場合は、許可リストに登録されます。
  • ポッドがラベル別に許可リストおよびブロックリストに登録されている場合は、許可リストに登録されます。
podFilter:
blocklistedLabels:
- label1: value1
allowlistedLabels:
- label1: value1
- label2: value2
allowlistedNames:
- name1
blocklistedNames:
- name2
該当なしはい文字列オプション

proxyUrl

プロキシのパブリックにアクセス可能なホスト名

https://myproxy.example.com:8080
該当なし

なし

文字列オプション

proxyUser

基本認証クレデンシャルに関連付けられているユーザー名

"user1"
該当なし

なし

文字列オプション
resourcesクラスタエージェントに対する CPU リソースとメモリリソースの要求と制限。
resources:
limits:
cpu: 300m
memory: "200Mi"
requests:
cpu: 200m
memory: "100Mi"
  • CPU
    • 要求: 750m
    • 制限: 1250m
  • メモリ
    • 要求:150Mi
      制限:300Mi
配列(Array)オプション

stdoutLogging

デフォルトでは、クラスタエージェントはログディレクトリ内のログファイルに書き込みます。さらに、コンテナ stdout にログを送信できるように、stdoutLogging パラメータが用意されています。

"true", "false"
true
はい文字列 オプション

tolerations

ポッドに必要な許容値の配列。許容値の詳細については、Kubernetes ドキュメントの「Taint and Tolerations」を参照してください。

tolerations: 
- effect: NoSchedule

key:type value:test

- effect: NoExecute

key:node.kubernetes.io/not-ready operator:Exists tolerationSeconds:600

該当なしいいえ配列オプション

自動インストゥルメンテーションには固有の構成があります。「サポートされるアプリケーションの自動インストゥルメンテーションの有効化」を参照してください。また、.yaml ファイルには、自動インストゥルメンテーションのための権限が含まれています。これは、デフォルトで有効になっています。自動インストゥルメンテーションを使用しない場合は、.yaml ファイルから次のテキストを削除します。

kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
 name: appdynamics-cluster-agent-instrumentation
subjects:
 - kind: ServiceAccount
 name: appdynamics-cluster-agent
 namespace: appdynamics
roleRef:
 kind: ClusterRole
 name: appdynamics-cluster-agent-instrumentation
 apiGroup: rbac.authorization.k8s.io
CODE

クラスタ エージェント ファイルの例

次に、cluster-agent.yaml 構成ファイルの例を示します。

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"
  eventUploadInterval: 10
  containerRegistrationInterval: 120
  httpClientTimeout: 30
  customSSLSecret: "<secret-name>"
  proxyUrl: "<protocol>://<domain>:<port>"
  proxyUser: "<proxy-user>"
  metricsSyncInterval: 30
  clusterMetricsSyncInterval: 60
  metadataSyncInterval: 60
  containerBatchSize: 25
  containerParallelRequestLimit: 3
  podBatchSize: 30
  metricUploadRetryCount: 3
  metricUploadRetryIntervalMilliSeconds: 5
  podFilter:
    # blocklistedLabels:
    #   - label1: value1
    # allowlistedLabels:
    #   - label1: value1
    #   - label2: value2
    # allowlistedNames:
    #   - name1
    # blocklistedNames:
    #   - name2
  logLevel: "INFO"
  logFileSizeMb: 5
  logFileBackups: 3
  stdoutLogging: "true"
  resources:
	limits:
		cpu: 300m
		memory: "200Mi"
	requests:
		cpu: 200m
		memory: "100Mi"
CODE

AppDynamics オペレータを使用したクラスタエージェントの動的な構成

クラスタ エージェント コンテナを再起動せずに、クラスタエージェントの属性の一部を動的に更新できます。「クラスタエージェント YAML ファイルの構成」を参照してください

cluster-agent.yaml 仕様内のこれらのプロパティを変更して、次を適用できます。

kubectl -n appdynamics apply -f cluster-agent.yaml
CODE

ファイルを動的に更新するには、次の手順を実行します。

  1. コマンドプロンプトを開き、cluster-agent.yaml ファイルに移動します。
  2. [Save ] をクリックして、cluster-agent.yaml 構成ファイルを保存します。
  3. 構成を適用するために、コマンドラインから次のように入力します。kubectl apply -f cluster-agent.yaml

クラスタエージェントの構成の確認

クラスタエージェントは、1 分に 1 回構成の変更を確認します。構成が適用されていることを確認し、クラスタエージェントが新しい値を使用していることを確認するには、次の場所を確認します。

  • AppDynamics オペレータ
  • クラスタエージェントのログ

AppDynamics オペレータが構成の変更を処理したことを確認するには、コマンドプロンプトを開き、次のように入力します。

kubectl -n appdynamics describe cm cluster-agent-mon cluster-agent-log
CODE

クラスタエージェントが構成の変更を処理したことを確認するには、「クラスタエージェントのログの表示」を参照してください。 

クラスタエージェントのログの表示

stdout ロギングが有効になっている場合は、コマンドプロンプトを開き、次のように入力します。

kubectl -n appdynamics logs <pod-name>
CODE

stdout ロギングが有効になっていない場合、コンテナにアクセスするには、コマンドラインプロンプトを開き、次のように入力します。

kubectl -n appdynamics exec -it <pod-name> -- <shell-type>
CODE


予想される出力:

$ kubectl -n appdynamics exec -it k8s-cluster-agent-77f99774bc-pd2vr -- /bin/bash 
appdynamics@k8s-cluster-agent-77f99774bc-pd2vr:/opt/appdynamics/cluster-agent$
CODE


クラスタエージェントのディレクトリの内容:

appdynamics@k8s-cluster-agent-77f99774bc-pd2vr:/opt/appdynamics/cluster-agent$ ll 
total 49296 
drwxr-xr-x 1 appdynamics appdynamics 4096 Dec 4 14:04 ./ 
drwxr-xr-x 1 appdynamics appdynamics 4096 Dec 4 14:04 ../ 
-rwxr-xr-x 1 appdynamics appdynamics 50443680 Dec 4 14:03 cluster-agent* 
-rw-r--r-- 1 appdynamics appdynamics 198 Dec 4 14:03 cluster-agent.asc 
drwxr-xr-x 1 appdynamics appdynamics 4096 Dec 10 18:15 config/ 
drwxrwxr-- 1 appdynamics appdynamics 4096 Dec 10 18:15 logs/ 
-rwxr--r-- 1 appdynamics appdynamics 2624 Dec 4 14:04 start-appdynamics*
CODE

コンテナに移動したら、logs ディレクトリに対して cd を実行し、cluster-agent.log ファイルを表示します。

appdynamics@k8s-cluster-agent-77f99774bc-pd2vr:/opt/appdynamics/cluster-agent$ cd logs/
appdynamics@k8s-cluster-agent-77f99774bc-pd2vr:/opt/appdynamics/cluster-agent/logs$ ll
total 480
drwxrwxr-- 1 appdynamics appdynamics   4096 Dec 10 18:15 ./
drwxr-xr-x 1 appdynamics appdynamics   4096 Dec  4 14:04 ../
-rw-r--r-- 1 appdynamics appdynamics 471339 Dec 11 21:46 cluster-agent.log
CODE