Datadog Cluster Agent のセットアップ Helm チャート v2.7.0 以降または Datadog Operator v0.7.0 以降を使用して Datadog Agent をデプロイする場合、Cluster Agent はデフォルトで有効になっています。
Datadog Operator v1.0.0 以降、Cluster Agent はデフォルトで有効になっています。Operator は必要な RBAC を作成し、Cluster Agent をデプロイして、Agent DaemonSet の設定を変更します。
これにより、通信を保護するために Cluster Agent と Datadog Agent の両方で共有される Secret 内のランダムなトークンも自動的に生成されます。global.clusterAgentToken フィールドを設定することで、このトークンを手動で指定できます。あるいは、既存の Secret の名前と、このトークンを含むデータキーを参照することで設定することも可能です。
apiVersion : datadoghq.com/v2alpha1
kind : DatadogAgent
metadata :
name : datadog
spec :
global :
credentials :
apiKey : <DATADOG_API_KEY>
clusterAgentTokenSecret :
secretName : <SECRET_NAME>
keyName : <KEY_NAME>
手動で設定する場合、このトークンは 32 文字の英数字である必要があります。
Cluster Agent は、Helm チャート v2.7.0 以降、デフォルトで有効になっています。
古いバージョンで有効にする場合、または clusterAgent キーを上書きするカスタム datadog-values.yaml を使用している場合は、datadog-values.yaml ファイルを以下の Cluster Agent 設定で更新してください。
clusterAgent :
# clusterAgent.enabled -- Set this to false to disable Datadog Cluster Agent
enabled : true
次に、Datadog Helm チャートをアップグレードします。
これにより、Cluster Agent と Datadog Agent に必要な RBAC ファイルが自動的に更新されます。両方の Agent は同じ API キーを使用します。
これにより、通信を保護するために Cluster Agent と Datadog Agent の両方で共有される Secret 内のランダムなトークンも自動的に生成されます。このトークンは、clusterAgent.token 構成を使用して手動で指定できます。また、clusterAgent.tokenExistingSecret 構成を使用して、token 値を含む既存の Secret の名前を参照することで設定することもできます。
手動で設定する場合、このトークンは 32 文字の英数字である必要があります。
Datadog Cluster Agent を DaemonSet でセットアップするには:
Cluster Agent の RBAC 権限を構成します 。Cluster Agent と Agent の通信を保護します 。Cluster Agent とそのサービスを作成します 。ノード Agent が Cluster Agent と通信するように構成します 。Datadog Cluster Agent が稼働するには、適切な RBAC が必要です。
Datadog Cluster Agent RBAC フォルダー のマニフェストを確認してください。注 : Cluster Agent を使用する場合、ノード Agent は Kubernetes API サーバーとやり取りできず、Cluster Agent のみがやり取りできます。
Cluster Agent の RBAC 権限を構成するには、以下のマニフェストを適用します。(ノード Agent の DaemonSet をセットアップした際に、すでに実施済みの場合があります。)
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) を使用している場合は、追加の権限が必要になることがあります。AKS での DCA の RBAC FAQ を参照してください。
Cluster Agent と Agent 間の通信を保護 Datadog Agent と Cluster Agent は、通信を保護するためにトークンが必要です。このトークンは、Datadog Agent と Cluster Agent の両方が環境変数 DD_CLUSTER_AGENT_AUTH_TOKEN で参照できる Secret に保存することを推奨します。これは一貫性を保ち、PodSpec でトークンが読み取られるのを防ぐのに役立ちます。
このトークンを作成するには、次のワンライナーコマンドを実行して、token が設定された Secret という名前の datadog-cluster-agent を生成します。<TOKEN> を 32 文字の英数字に置き換えてください。
kubectl create secret generic datadog-cluster-agent --from-literal= token = '<TOKEN>' --namespace= "default"
注: これにより、デフォルトの名前空間に Secret が作成されますカスタム名前空間を使用している場合は、コマンドを実行する前に名前空間パラメータを更新してください。
Cluster Agent 用に提供されているデフォルトの cluster-agent-deployment.yaml は、環境変数構成を使用してこの Secret を参照するようにすでに構成されています。
- name : DD_CLUSTER_AGENT_AUTH_TOKEN
valueFrom :
secretKeyRef :
name : datadog-cluster-agent
key : token
Datadog Agent の構成 を行う際は、この環境変数を (同じ構成を使用して) 構成する必要があります。
Cluster Agent とそのサービスの作成 以下のマニフェストをダウンロードします。
secret-api-key.yaml マニフェストで、PUT_YOUR_BASE64_ENCODED_API_KEY_HERE を base64 でエンコードした Datadog API キー に置き換えます。API キーの base64 バージョンを取得するには、次のコマンドを実行します。
echo -n '<Your API key>' | base64
secrets-application-key.yaml マニフェストで、PUT_YOUR_BASE64_ENCODED_APP_KEY_HERE を base64 でエンコードした Datadog アプリケーションキー に置き換えます。
デフォルトでは、cluster-agent-deployment.yaml マニフェストは Secret datadog-cluster-agent で以前に作成されたトークンを参照します。このトークンを別の方法で保存している場合は、それに応じて DD_CLUSTER_AGENT_AUTH_TOKEN 環境変数を構成してください。
Cluster Agent デプロイメントで使用する以下のリソースをデプロイします。
kubectl apply -f agent-services.yaml
kubectl apply -f secret-api-key.yaml
kubectl apply -f secret-application-key.yaml
kubectl apply -f install_info-configmap.yaml
最後に、Datadog Cluster Agent をデプロイします。
kubectl apply -f cluster-agent-deployment.yaml
注 : Datadog Cluster Agent で、環境変数 DD_SITE を Datadog サイトに設定します。デフォルトは US サイト 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-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 がすでに実行されている場合は、Cluster Agent を起動する前に Agent の rbac.yaml マニフェスト を適用する必要がある場合があります。
Datadog Agent の構成を変更して、Datadog Cluster Agent と通信できるようにします。
既存の DaemonSet マニフェストファイル で、環境変数 DD_CLUSTER_AGENT_ENABLED を true に設定します。次に、Cluster Agent と Agent 間の通信の保護 で使用されているのと同じ構文を使用して、DD_CLUSTER_AGENT_AUTH_TOKEN を設定します。
- name : DD_CLUSTER_AGENT_ENABLED
value : "true"
- name : DD_CLUSTER_AGENT_AUTH_TOKEN
valueFrom :
secretKeyRef :
name : datadog-cluster-agent
key : token
これらの構成を適用して DaemonSet を再デプロイすると、Datadog Agent は Cluster Agent と通信できるようになります。完全な例については、提供されている Cluster Agent daemonset.yaml マニフェスト を参照してください。
検証 次のコマンドを実行して、Datadog Agent Pod と Cluster Agent Pod が実行されていることを確認できます。
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
さらに、Agent ステータス出力 を使用して、Datadog Agent が Cluster Agent に正常に接続されたことを確認できます。
kubectl exec -it <AGENT_POD_NAME> agent status
[ ...]
=====================
Datadog Cluster Agent
=====================
- Datadog Cluster Agent endpoint detected: https://10.104.246.194:5005
Successfully connected to the Datadog Cluster Agent.
- Running: 1.11.0+commit.4eadd95
Kubernetes のイベントが Datadog アカウントに流れ始め、Agent によって収集された関連メトリクスには、対応するクラスターレベルのメタデータがタグ付けされます。
Windows コンテナ Datadog Cluster Agent は、Linux ノード上にのみデプロイできます。
Windows コンテナを監視するには、混合クラスターで Helm チャートを 2 つインストールします。最初の Helm チャートは、Datadog Cluster Agent と Linux ノード用の Agent DaemonSet をデプロイします (targetSystem: linux を使用)。2 番目の Helm チャート (targetSystem: windows を使用) は、Windows ノード上にのみ Agent をデプロイし、最初の Helm チャートの一部としてデプロイされた既存の Cluster Agent に接続します。
Windows ノードにデプロイされた Agent と Cluster Agent 間の通信を構成するには、次の datadog-values.yaml ファイルを使用してください。
targetSystem : windows
existingClusterAgent :
join : true
serviceName : "<EXISTING_DCA_SECRET_NAME>" # from the first Datadog Helm chart
tokenSecretName : "<EXISTING_DCA_SERVICE_NAME>" # from the first Datadog Helm chart
# Disable datadogMetrics deployment since it should have been already deployed with the first chart.
datadog-crds :
crds :
datadogMetrics : false
# Disable kube-state-metrics deployment
datadog :
kubeStateMetricsEnabled : false
詳細については、Windows コンテナの問題のトラブルシューティング を参照してください。
AWS マネージドサービスの監視 Amazon Managed Streaming for Apache Kafka (MSK)、ElastiCache、Relational Database Service (RDS) などの AWS マネージドサービスを監視するには、Helm チャートで clusterChecksRunner を設定し、serviceAccountAnnotation を通じて IAM ロールが割り当てられた Pod を作成します。次に、clusterAgent.confd の下にインテグレーションの設定を行います。
Copy
clusterChecksRunner :
enabled : true
rbac :
# clusterChecksRunner.rbac.create -- If true, create & use RBAC resources
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 詳細情報