クラスタエージェントの設定

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

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

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

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

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

Alpine Linux AMD
cluster-agent 
├── cluster-agent-operator.yaml 
├── appdynamics-operator-alpine-linux-amd64-<version>
├── 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
Alpine Linux ARM
cluster-agent 
├── cluster-agent-operator.yaml 
├── appdynamics-operator-alpine-linux-arm64-<version>
├── 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
Rhel Linux 7
cluster-agent 
├── cluster-agent-operator.yaml 
├── appdynamics-operator-rhel-linux-amd64-<version>
├── 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

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

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

ファイル名説明
appdynamics-operator-alpine-linux-amd64-<version>

Splunk AppDynamics オペレータアーティファクトには、Alpine AMD ベースのオペレータイメージを作成するために使用される、Dockerfile、オペレータバイナリ、ライセンス、およびスクリプトが含まれています。

appdynamics-operator-alpine-linux-arm64-<version>

Splunk AppDynamics オペレータアーティファクトには、Alpine ARM ベースのオペレータイメージを作成するために使用される、Dockerfile、オペレータバイナリ、ライセンス、およびスクリプトが含まれています。

appdynamics-operator-rhel-linux-amd64-<version>

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

cluster-agent.yaml

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

  • cluster-agent.yaml ファイルによりコントローラの詳細が記録され、クラスタエージェントが起動します。
  • Splunk 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-rhel Rhel ベースのクラスタ エージェント イメージの作成に使用される dockerfile
infraviz.yaml

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

  • infrviz.yaml ファイルは、コントローラの詳細を提供し、インフラストラクチャの可視性エージェントとネットワークの可視性エージェントを開始します。
  • ここで、値は Splunk AppDynamics オペレータの設定で指定されており、これらの値は常に内部構成ファイルよりも優先されます。
LICENSE クラスタ エージェント イメージに添付された最新の EULA ファイル。

cluster-agent.zip

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

README-rhel.md

README-alpine.md

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

start-appdynamics

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

プロキシサポートの構成

Kubernetes のプロキシを理解するには、Kubernetes のドキュメント(「Proxies in Kubernetes」)を参照してください。

  1. cluster-agent.yaml ファイルを見つけて編集します。
  2. proxyUrl cluster-agent.yaml を追加します。
    proxyUrl: <protocol>://<host>:<port>
  3. (オプション)プロキシサーバで認証が必要な場合は、次の手順を実行します。
    1. proxyUser を追加します。
      proxyUser: <user>
    2. proxy-password を使用して secret を作成します。
      kubectl -n appdynamics create secret generic cluster-agent-proxy-secret --from-literal=proxy-password='<password>'
  4. (オプション)プロキシにのみ SSL を使用する場合は、次の手順を実行します。
    1. シークレット.pem proxy-ssl.pem を作成します
      kubectl -n appdynamics create secret generic ssl-cert --from-file=proxy-ssl.pem
    2. cluster-agent.yaml ファイルでシークレットファイル名を設定します。
      customSSLSecret: “ssl-cert”
プロキシおよびコントローラで SSL を使用するには、「プロキシ証明書とオンプレミス証明書の組み合わせ」を参照してください。

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

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

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

パブリック証明書または自己署名証明書を使用して SSL を構成するには、kubectl を使用します。

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

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

秘密が作成されたら、customSSLSecret cluster-agent.yaml を追加する必要があります。

customSSLSecret: “ssl-cert”

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

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

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

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

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>"

シークレットの作成

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

Kubernetes
$ 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
OpenShift
$ 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

imagePullSecret cluster-agent.yaml 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"

クラスタエージェント YAML ファイル設定リファレンス

クラスタエージェントを設定するには、cluster-agent.yaml を使用します。

パラメータ説明デフォルト動的に構成可能タイプ必須かどうか

管理する

Splunk AppDynamics アカウント名。

admin
N/A

いいえ

文字列必須

appName

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

注: この名前は、同じクラスタまたは同じコントローラの一部である別のクラスタにインストールされているクラスタエージェントごとに一意であることを確認します。
k8s-cluster
N/A

いいえ

文字列必須

controllerUrl

プロトコルおよびポートを含む完全な Splunk AppDynamics コントローラ URL。

HTTP: http://appd-controller.com:8090/
HTTPS: https://appd-controller.com:443

N/A

いいえ

文字列必須

customSSLSecret

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

eventUploadInterval

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

httpClientTimeout

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

30

いいえ整数オプション

画像

クラスタ エージェント イメージ。
your-docker-registry/appdynamics/cluster-agent:latest
N/A

いいえ

文字列

必須

imagePullPolicy

クラスタエージェントのイメージプルポリシー。

IfNotPresent

常に(Always)

いいえ

文字列

オプション

imagePullSecret

プライベート Docker レジストリまたはリポジトリからイメージをプルする場合の認証に使用されるクレデンシャルファイル。Docker レジストリ構成に基づいて、クラスタエージェントのイメージをプルする場合に Splunk AppDynamics オペレータが使用するシークレットファイルの作成が必要になる場合があります。「コマンドラインでログイン情報を入力してシークレットを作成する」を参照してください。

regcred
N/Aいいえ文字列オプション
instrumentationMaxPollingAttemptsクラスタエージェントがインストルメンテーションのロールアウトが成功したかどうかをチェックしてから失敗とマークするまでの最大回数。instrumentationMaxPollingAttempts: 1510あり整数オプション
instrumentationNsStatusPollingIntervalMinutesAPPD_INSTRUMENT_CLUSTER_AGENT 注釈を追加または削除するためのポーリング間隔。これは、同じクラスターの一部であるエージェントに適用されます。名前空間がクラスタエージェントから非インストゥルメント化されている場合、このパラメータは定義された間隔で定期的にチェックを行って、そのクラスタエージェントから注釈を削除します。instrumentationNsStatusPollingIntervalMinutes: 105あり整数オプション
labels必要なポッドラベルをクラスタエージェントポッドに追加します。これらのラベルは、クラスタエージェントの展開にも追加されます。
labels:   key1: value1   key2: value2

次のラベルはデフォルトで作成され、変更できません。name:clusterAgentclusterAgent_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あり整数オプション

nodeSelector

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

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

複数の名前空間をモニターする必要がある場合は、スペースを使用せずに | を使用して名前空間を区切ります。

ターゲットアロケータを使用する場合は、モニタする必要があるすべての名前空間を指定する必要があります。ターゲットアロケータは、これらの名前空間を各クラスタエージェントのレプリカに自動的に割り当てます。

名前空間の編集」を参照してください。
注: UI での名前空間の変更は、yaml 設定よりも優先されます。
  • nsToMonitorRegex:.*
  • nsToMonitorRegex: namespace1|namespace2
N/Aあり[正規表現(Regular expression)]オプション
nsToExcludeRegex

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

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

  • UI での名前空間の変更は、yaml 設定よりも優先されます。

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

nsToExcludeRegex: ns.*

N/Aあり[正規表現(Regular expression)]オプション

podFilter

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

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

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

これにより、「release=v1' podname」というラベルを持つすべてのポッドがブロックされます。

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

ポッドの仕様で優先順位を設定するために使用される、ポッド優先順位クラスの名前。

priorityClassName: system-node-criticalN/Aいいえ文字列オプション

proxyUrl

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

https://myproxy.example.com:8080
N/A

いいえ

文字列オプション

proxyUser

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

"user1"
N/A

いいえ

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

stdoutLogging

デフォルトでは、クラスタエージェントは logs ディレクトリ内のログファイルに書き込みます。

"true", "false"
true
あり文字列オプション
targetAllocator
  • enabled:使用可能なクラスタエージェントのレプリカに対する名前空間の自動割り当ての使用を有効化します。デフォルトでは、無効になっています。このプロパティを有効にするには、 enabled を trueに設定します。ターゲットアロケータの詳細については、 「ターゲットアロケータ」を参照してください。

  • clusterAgentReplicas:クラスタエージェントのレプリカの数。ターゲットアロケータが有効になっている場合、デフォルト値は 3 です。要件に基づいてレプリカ数を設定します。必要なレプリカ数を判断するには、「クラスタエージェントの要件およびサポート対象環境」を参照してください。

  • enabled:true

  • clusterAgentReplicas5

autoScaling
  • enabled:デフォルト値は false です。レプリカを作成するための自動スケーリングを有効にするには、true を指定します。

  • replicaProfile:使用されるプロファイル。現在、Default プロファイルのみ使用可能です。Default プロファイルは 1550mi メモリと 3750m CPU を使用して、2500 のポッドをモニターします。

  • maxClusterAgentReplicas:自動スケールに必要なレプリカの最大数を指定します。

  • scaleDown.stabilizationWindowSeconds:ターゲットアロケータがレプリカをスケールダウンできるまでの時間を秒単位で指定します。

    スケールダウンするとメトリックがドロップすることがあります。デフォルトでは、このパラメータは無効になっています。

autoScaling:
      enabled: true
      replicaProfile: Default 
      maxclusterAgentReplicas: 12
      scaleDown:
          stabilizationWindowSeconds: 86400
  • enabled: false

  • replicaProfile:デフォルト

  • maxclusterAgentReplicas:該当なし

  • scaleDown:該当なし

あり
  • 文字列

  • 整数

オプション。

自動スケーリングが有効になっている場合は必須です。

tolerations

ポッドに必要な許容値の配列。「Taint and Tolerations」を参照してください。

tolerations: 
- effect: NoSchedule
   key: type
   value: test
- effect: NoExecute
   key: node.kubernetes.io/not-ready
   operator: Exists
   tolerationSeconds: 600
N/Aいいえ配列オプション

securityContext

注: OpenShift バージョンが 4.14 より新しい場合は、securityContext 内のすべての子パラメータが、セキュリティコンテキスト制約(SCC)で概説されている許容値に基づいて指定されていることを確認します。たとえば、RunAsUser プロパティを使用する場合、ユーザー ID(UID)は許容範囲である必要があります。UID の SCC の許容範囲は 1000 ~ 9001 です。したがって、RunAsUser 値はこの範囲内でのみ追加できます。他のセキュリティ コンテキスト パラメータについても同様です。

securityContext の下に次のパラメータを含めることができます。

runAsGroup groupId

これにより、エージェント アーティファクトに適切なファイル権限が設定されます。

この値は、インストゥルメント化されたすべてのリソースに適用されます。

runAsGroup のデフォルト値をオーバーライドする必要がある場合は、このパラメータを追加します。

securityContext:
  runAsUser: 1001  
  runAsGroup: 1001
  readOnlyRootFilesystem: false
  allowPrivilegeEscalation: "false"
  runAsNonRoot: false
  privileged: "false"
  seLinuxOptions:
    level: "s0:c123,c456"
  capabilities:
    drop: [ "ALL" ]
  seccompProfile:
   type: RuntimeDefault
  procMount: Default
  windowsOptions:
N/A いいえ配列オプション

runAsUser userId

これにより、エージェント アーティファクトに適切なファイル権限が設定されます。

この値は、インストゥルメント化されたすべてのリソースに適用されます。

runAsUser のデフォルト値をオーバーライドする必要がある場合は、このパラメータを追加します。

allowPrivilegeEscalation

  • 特権コンテナ
  • CAP_SYS_ADMIN

このパラメータを設定しない場合、Helm はデフォルト値 true を使用します。

注: このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。

capabilities

注: このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。

権限を

このパラメータを設定しない場合、Helm はデフォルト値 true を使用します。

注: このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。

procMount

注: このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。

readOnlyRootFilesystem

注: このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。

runAsNonRoot

この値が true の場合、Kubelet は実行時にイメージを検証して、ルートとして実行したときにコンテナの開始が失敗することを確認します。このパラメータが指定されていない場合、または値が false の場合、検証は行われません。

注: このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。

seLinuxOptions

注: このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。

seccompProfile

注: このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。

windowsOptions

注: このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。
注: 特定の自動インストルメンテーションの設定については、「クラスタエージェントを使用した自動インストルメンテーション アプリケーション」を参照してください。また、.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

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

次に、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"
  nsToMonitorRegex: namespace1|namespace2
  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