お使いの Kubernetes クラスタで Datadog Cluster Agent を設定するには、以下の手順に従います。
Datadog Cluster Agent を実行するには、適切な RBAC が必要です。
Datadog Cluster Agent RBAC フォルダーにあるマニフェストを確認します。Cluster Agentを使用する場合、Kubernetes API サーバーと通信できるのは Cluster Agent だけで、Node Agent ではないことにご注意ください。
Cluster Agent に対する RBAC アクセス許可を構成するには、以下のマニフェストを適用します。(Node Agent デーモンセットを設定する際に、すでに行っている可能性があります。)
kubectl apply -f "https://raw.githubusercontent.com/DataDog/datadog-agent/master/Dockerfiles/manifests/cluster-agent/rbac.yaml"
kubectl apply -f "https://raw.githubusercontent.com/DataDog/datadog-agent/master/Dockerfiles/manifests/cluster-agent/cluster-agent-rbac.yaml"
これにより、Cluster Agent に適切な ServiceAccount
、ClusterRole
、ClusterRoleBinding
が作成され、ノード Agent の ClusterRole
が更新されます。
Azure Kubernetes Service (AKS) の場合、追加のアクセス許可が必要になる可能性もあります。DCA のため AKS で RBAC に関する「よくあるご質問」を参照してください。
次のオプションを 1 つ使用して、Datadog Agent と Datadog Cluster Agent 間の通信を保護します。
シークレットを作成せずに値を設定すると、トークンは PodSpec
で読み込み可能となります。
次のコマンドを実行して、シークレットトークンを作成します。トークンは 32 文字以上の長さである必要があります。
echo -n '<ThirtyX2XcharactersXlongXtoken>' | base64
この 1 行コマンドを実行します。
kubectl create secret generic datadog-cluster-agent --from-literal=token='<ThirtyX2XcharactersXlongXtoken>'
または、manifest/cluster-agent ディレクトリにある agent-secret.yaml
ファイルのシークレットの値を変更するか、以下を使い作成します。
kubectl create -f Dockerfiles/manifests/cluster-agent/agent-secret.yaml
Cluster Agent のマニフェスト内で、環境変数 DD_CLUSTER_AGENT_AUTH_TOKEN
を使用して、このシークレットを参照します。詳細は、手順 3 - Cluster Agent とそのサービスの作成) および 手順 2 - Datadog Cluster Agent の有効化をご覧ください。
次のコマンドを実行して、シークレットトークンを作成します。トークンは 32 文字以上の長さである必要があります。
echo -n '<ThirtyX2XcharactersXlongXtoken>' | base64
Cluster Agent とノードベースの Agent のマニフェスト内で、環境変数 DD_CLUSTER_AGENT_AUTH_TOKEN
を使用して、このシークレットを参照します。
- name: DD_CLUSTER_AGENT_AUTH_TOKEN
value: "<ThirtyX2XcharactersXlongXtoken>"
次のコマンドを実行して、シークレットトークンを作成します。トークンは 32 文字以上の長さである必要があります。
echo -n '<ThirtyX2XcharactersXlongXtoken>' | base64
選択した変数を使用して、datadog.yaml
ファイルに datadog-cluster.yaml
を作成し、対応する ConfigMap を作成します。
kubectl create configmap dca-yaml --from-file datadog-cluster.yaml
注: この設定は、Cluster Agent のマニフェストとノードエージェントのマニフェストの両方で必要です。
agent-services.yaml
: Cluster Agent サービスマニフェストsecrets.yaml
: Datadog API キーを含むシークレットcluster-agent-deployment.yaml
: Cluster Agent マニフェストinstall_info-configmap.yaml
: Configmap のインストールsecrets.yaml
マニフェストで、PUT_YOUR_BASE64_ENCODED_API_KEY_HERE
を base64 でエンコードされた Datadog API キーに置き換えます。
echo -n '<Your API key>' | base64
cluster-agent-deployment.yaml
マニフェストで、手順 2 - Cluster Agent - Agent 間通信のセキュリティ保護のトークンを設定します。その形式は、シークレットの設定方法により異なります。手順はマニフェストを参照してください。
実行: kubectl apply -f agent-services.yaml
実行: kubectl apply -f secrets.yaml
実行: kubectl apply -f install_info-configmap.yaml
最後に Datadog Cluster Agent kubectl apply -f cluster-agent-deployment.yaml
をデプロイします。
注: Datadog Cluster Agent で、 <DD_SITE>
を Datadog サイト に設定します。デフォルト値は
datadoghq.com
です。
この時点で、次のような状態になっているはずです。
-> kubectl get deploy
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
datadog-cluster-agent 1 1 1 1 1d
-> kubectl get secret
NAME TYPE DATA AGE
datadog-agent-cluster-agent Opaque 1 1d
-> kubectl get pods -l app=datadog-cluster-agent
datadog-cluster-agent-8568545574-x9tc9 1/1 Running 0 2h
-> kubectl get service -l app=datadog-cluster-agent
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
datadog-cluster-agent ClusterIP 10.100.202.234 none 5005/TCP 1d
注: すでに Datadog Agent を実行中の場合、agent-rbac.yaml マニフェスト を適用しないとCluster Agent が実行されない可能性があります。
Datadog Cluster Agent の設定が終了したら、Datadog Agent と Datadog Cluster Agent が通信するように構成します。
agent-rbac.yaml マニフェストをダウンロードします。注: Cluster Agent を使用する場合、Kubernetes API サーバーと通信できるのは Cluster Agent だけで、Node Agent ではないことにご注意ください。
実行: kubectl apply -f agent-rbac.yaml
daemonset.yaml マニフェストをダウンロードします。
daemonset.yaml
マニフェストで、<DD_SITE>
を Datadog サイト に置き換えます。デフォルトは
datadoghq.com
です。
daemonset.yaml
マニフェストで、手順 2 - Cluster Agent - Agent 間通信のセキュリティ保護のトークンを設定します。その形式は、シークレットの設定方法により異なります。手順はマニフェストを参照してください。
daemonset.yaml
マニフェストで、環境変数 DD_CLUSTER_AGENT_ENABLED
が true
に設定されていることを確認します。
(任意) クラスターが単一環境を含む場合、agent.yaml
で <DD_ENV>
を設定することも可能です。
次のコマンドで DaemonSet を作成します : kubectl apply -f daemonset.yaml
次を実行します。
kubectl get pods | grep agent
次のようになるはずです。
datadog-agent-4k9cd 1/1 Running 0 2h
datadog-agent-4v884 1/1 Running 0 2h
datadog-agent-9d5bl 1/1 Running 0 2h
datadog-agent-dtlkg 1/1 Running 0 2h
datadog-agent-jllww 1/1 Running 0 2h
datadog-agent-rdgwz 1/1 Running 0 2h
datadog-agent-x5wk5 1/1 Running 0 2h
[...]
datadog-cluster-agent-8568545574-x9tc9 1/1 Running 0 2h
Datadog アカウントに Kubernetes イベントが流れ込み始め、Agent によって収集された関連メトリクスに、それぞれに対応するクラスターレベルのメタデータがタグ付けされます。
MSK、ElastiCache、RDS といった AWS の管理型サービスを監視するには、ポッドを作成し、Helm チャートの serviceAccountAnnotation 経由で IAM ロールを割り当てます。
clusterChecksRunner:
enabled: true
rbac:
# clusterChecksRunner.rbac.create -- true の場合は RBAC リソースを作成・使用
create: true
dedicated: true
serviceAccountAnnotations:
eks.amazonaws.com/role-arn: arn:aws:iam::***************:role/ROLE-NAME-WITH-MSK-READONLY-POLICY
clusterAgent:
confd:
amazon_msk.yaml: |-
cluster_check: true
instances:
- cluster_arn: arn:aws:kafka:us-west-2:*************:cluster/gen-kafka/*******-8e12-4fde-a5ce-******-3
region_name: us-west-2