- 重要な情報
- はじめに
- 用語集
- ガイド
- エージェント
- インテグレーション
- OpenTelemetry
- 開発者
- API
- CoScreen
- アプリ内
- Service Management
- インフラストラクチャー
- アプリケーションパフォーマンス
- 継続的インテグレーション
- ログ管理
- セキュリティ
- UX モニタリング
- 管理
Helm chart v2.7.0+ または Datadog Operator v0.7.0+ を使用して Datadog Agent をデプロイした場合、Cluster Agent はデフォルトで有効化されます。
Helm チャート v2.7.0 以降、Cluster Agent はデフォルトで有効になっています。
古いバージョンで有効にする場合、または clusterAgent
キーを上書きするカスタム datadog-values.yaml を使用する場合、以下の Cluster Agent コンフィギュレーションで datadog-values.yaml ファイルを更新します。
clusterAgent:
# clusterAgent.enabled -- これを false に設定すると、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 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 文字の英数字である必要があります。
DaemonSet を使用して 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 に関する「よくあるご質問」を参照してください。
Datadog Agent と Cluster Agent は、通信を保護するためにトークンを必要とします。このトークンは、Datadog Agent と Cluster Agent の両方が環境変数 DD_CLUSTER_AGENT_AUTH_TOKEN
で参照できる Secret
に保存することをお勧めします。これは、一貫性を維持し、トークンが PodSpec
で読み取り可能になることを防ぐのに役立ちます。
このトークンを作成するには、この 1 行のコマンドを実行して、token
が設定された datadog-cluster-agent
という名前の Secret
を生成します。<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 の構成で (同じセットアップを使用して) 構成する必要があります。
以下のマニフェストをダウンロードします。
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 Deployment が使用するために、これらのリソースをデプロイします。
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 Cluster Agent と通信するために、Datadog Agent の構成を変更します。
既存の DaemonSet マニフェストファイルで、環境変数 DD_CLUSTER_AGENT_ENABLED
を true
に設定します。次に、Secure Cluster-Agent-to-Agent Communication で使用されているのと同じ構文を使用して 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 ポッドと Cluster Agent ポッドが実行されていることを確認できます。
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
Datadog アカウントに Kubernetes イベントが流れ込み始め、Agent によって収集された関連メトリクスに、それぞれに対応するクラスターレベルのメタデータがタグ付けされます。
Datadog Cluster Agent は、Linux ノードにのみデプロイ可能です。
Windows コンテナを監視するには、混在クラスターに 2 つの Helm チャートをインストールします。最初の Helm チャートは、Linux ノード用に Datadog Cluster Agent と Agent DaemonSet をデプロイします (targetSystem: linux
を使用)。2 つ目の Helm チャート (targetSystem: windows
を使用) は、Windows ノードにのみ Agent をデプロイし、最初の Helm チャートの一部としてデプロイされた既存の Cluster Agent に接続します。
Windows ノードにデプロイされた Agent と Cluster Agent 間の通信を構成するには、次の values.yaml
ファイルを使用します。
targetSystem: windows
existingClusterAgent:
join: true
serviceName: "<EXISTING_DCA_SECRET_NAME>" # Datadog Helm の最初のチャートから
tokenSecretName: "<EXISTING_DCA_SERVICE_NAME>" # Datadog Helm の最初のチャートから
# datadogMetrics は最初のチャートで既にデプロイされているはずなので、デプロイを無効にします。
datadog-crds:
crds:
datadogMetrics: false
# kube-state-metrics のデプロイメントを無効にします
datadog:
kubeStateMetricsEnabled: false
詳しくは、Windows コンテナの問題のトラブルシューティングをご覧ください。
MSK、ElastiCache、RDS などの AWS マネージドサービスを監視するには、clusterChecksRunner
を設定して、Helm チャートの serviceAccountAnnotation を介して割り当てられた IAM ロールを持つポッドを作成します。次に、clusterAgent.confd
の下にインテグレーションコンフィギュレーションを設定します。
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