このページでは、ダウンロードポータルからダウンロードしたクラスタ エージェント バンドルの内容と、一般的な構成タスクの実行方法について説明します。

設定オプションの詳細については、「クラスタエージェント YAML ファイル設定リファレンス」を参照してください。

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

クラスタ エージェント バンドルのディレクトリ構造

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

cluster-agent 
├── cluster-agent-operator.yaml 
├── appdynamics-operator-alpine-linux-amd64-21.12.0-88
├── cluster-agent-operator-openshift-1.15-or-less.yaml
├── cluster-agent-operator-openshift.yaml 
├── cluster-agent.yaml 
├── infraviz.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 
├── appdynamics-operator-rhel-linux-amd64-21.12.0-88
├── cluster-agent-operator-openshift-1.15-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

クラスタ エージェント バンドル ファイル

この表では、クラスタエージェントのディレクトリファイルについて説明します。

ファイル名説明
appdynamics-operator-alpine-linux-amd64-21.12.0-88AppDynamics オペレータアーティファクトには、Alpine ベースのオペレータイメージを作成するために使用される、Dockerfile、オペレータバイナリ、ライセンス、およびスクリプトが含まれています。 
appdynamics-operator-rhel-linux-amd64-21.12.0-88AppDynamics オペレータアーティファクトには、Rhel ベースのオペレータイメージを作成するために使用される、Dockerfile-rhel、オペレータバイナリ、ライセンス、およびスクリプトが含まれています。

cluster-agent.yaml

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

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

cluster-agent-operator.yaml

クラスタ エージェント オペレータの展開に使用されるファイル。これらのファイルは、最小限の RBAC 権限を含む、Kubernetes、Amazon EKS、AKS のデフォルト値を設定します。

cluster-agent-operator-openshift.yaml

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

Red Hat OpenShift でのクラスタエージェントの展開に使用されるファイル。これらのファイルは、最小限の RBAC 権限を含む Red Hat OpenShift のデフォルト値を設定します。

docker

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

Dockerfile

Alpine ベースのクラスタ エージェント イメージの作成に使用される dockerfile
Dockerfile-rhelRhel ベースのクラスタ エージェント イメージの作成に使用される dockerfile
infraviz.yaml

InfraViz の構成と展開に使用されるファイル。

  • infrviz.yaml ファイルは、コントローラの詳細を提供し、インフラストラクチャの可視性エージェントとネットワークの可視性エージェントを開始します。
  • AppDynamics オペレータの構成で値が指定されている場合、これらの値は常に内部構成ファイルよりも優先されます。
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 を使用するためのクラスタエージェントの構成

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 つとオンプレミスコントローラに別の 1 つ)がある場合は、これらの両方を次のように 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: cluster.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

クラスタエージェントがコンテナレジストリからイメージをプルするためにシークレットを必要とする場合は、Kubernetes API を使用してシークレットを作成し、cluster-agent.yaml で参照します。

$ kubectl -n appdynamics create secret docker-registry myregcred --docker-server=https://index.docker.io/v1 --docker-username=<docker-username> --docker-password=<docker-password> --docker-email=unused
CODE
$ oc -n appdynamics create secret docker-registry myregcred --docker-server=https://index.docker.io/v1 --docker-username=<docker-username> --docker-password=<docker-password> --docker-email=unused 
$ oc -n appdynamics secrets link appdynamics-operator regcred --for=pull
CODE

cluster-agent.yamlimagePullSecret プロパティを、上記で作成したシークレットの名前(myregcred)に設定します。

kind: Clusteragent
metadata:
  name: k8s-cluster-agent
  namespace: appdynamics
spec:
  appName: "mycluster"
  controllerUrl: "http://<appdynamics-controller-host>:8080"
  account: "<account-name>"
  image: "<your-docker-registry>/appdynamics/cluster-agent:tag"
  serviceAccountName: appdynamics-cluster-agent
  imagePullSecret: "myregcred"
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 の警告および状態変更イベントがコントローラにアップロードされる頻度(秒単位)。Kubernetes イベントのモニタを参照してください。
10
10×整数オプション

httpClientTimeout

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

30

×整数オプション

image

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

いいえ

文字列

必須

imagePullSecret

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

次のラベルはデフォルトで作成され、変更できません。
name:clusterAgent
clusterAgent_cr:<name of agent>
pod-template-hash:<assigned by Kubernetes>

このパラメータに指定したキーと値のペアは、デフォルト値とともにクラスタエージェントポッドに追加されます。

いいえmap[string]stringオプション

logFileSizeMb

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

はい

整数オプション

logFileBackups

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

はい

整数オプション

logLevel

ログの詳細の数。INFOWARNINGDEBUG、または TRACE
"INFO"

INFO

はい文字列オプション
maxPodLogsTailLinesCount

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

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

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

nodeSelector

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

nsToMonitor

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

いいえ


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

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

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

このパラメータは、20.9 以上のクラスタエージェント、および 20.10 以上のコントローラでサポートされます。

名前空間の編集」を参照してください。

nsToMonitorRegex:
.*
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
はい配列オプション

stdoutLogging

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

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

tolerations

ポッドに必要な許容値の配列。「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: cluster.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"
  labels:
	 key1: value1
     key2: value2
CODE