Cluster Agentのドキュメント

Cluster Agentのドキュメント

お使いの Kubernetes クラスタで Datadog Cluster Agent を設定するには、以下の手順に従います。

  1. Datadog Cluster Agent の設定
  2. Agent を構成し、Datadog Cluster Agent と通信します。

Datadog Cluster Agent を構成する

RBAC アクセス許可の構成

Datadog Cluster Agent を実行するには、適切な RBAC が必要です。

  1. Datadog Cluster Agent RBAC フォルダーにあるマニフェストを確認します。Cluster Agentを使用する場合、Kubernetes API サーバーと通信できるのは Cluster Agent だけで、Node Agent ではないことにご注意ください。

  2. 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 に適切な ServiceAccountClusterRoleClusterRoleBinding が作成され、ノード Agent の ClusterRole が更新されます。

Azure Kubernetes Service (AKS) の場合、追加のアクセス許可が必要になる可能性もあります。DCA のため AKS で RBAC に関する「よくあるご質問」を参照してください。

Cluster Agent - Agent 間通信のセキュリティ保護

次のオプションを 1 つ使用して、Datadog Agent と Datadog Cluster Agent 間の通信を保護します。

  • シークレットを作成して、環境変数でアクセスします。
  • 環境変数にトークンを設定します。
  • ConfigMap でシークレットを管理します。

シークレットを作成せずに値を設定すると、トークンは PodSpec で読み込み可能となります。

  1. 次のコマンドを実行して、シークレットトークンを作成します。トークンは 32 文字以上の長さである必要があります。

    echo -n '<ThirtyX2XcharactersXlongXtoken>' | base64
    
  2. この 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

  3. Cluster Agent のマニフェスト内で、環境変数 DD_CLUSTER_AGENT_AUTH_TOKEN を使用して、このシークレットを参照します。詳細は、手順 3 - Cluster Agent とそのサービスの作成) および 手順 2 - Datadog Cluster Agent の有効化をご覧ください。

  1. 次のコマンドを実行して、シークレットトークンを作成します。トークンは 32 文字以上の長さである必要があります。

    echo -n '<ThirtyX2XcharactersXlongXtoken>' | base64
    
  2. Cluster Agent とノードベースの Agent のマニフェスト内で、環境変数 DD_CLUSTER_AGENT_AUTH_TOKEN を使用して、このシークレットを参照します。

              - name: DD_CLUSTER_AGENT_AUTH_TOKEN
                value: "<ThirtyX2XcharactersXlongXtoken>"
    
  1. 次のコマンドを実行して、シークレットトークンを作成します。トークンは 32 文字以上の長さである必要があります。

    echo -n '<ThirtyX2XcharactersXlongXtoken>' | base64
    
  2. 選択した変数を使用して、datadog.yaml ファイルに datadog-cluster.yaml を作成し、対応する ConfigMap を作成します。

    kubectl create configmap dca-yaml --from-file datadog-cluster.yaml
    

: この設定は、Cluster Agent のマニフェストとノードエージェントのマニフェストの両方で必要です。

Cluster Agent とそのサービスの作成

  1. 以下のマニフェストをダウンロードします。
  1. secrets.yaml マニフェストで、PUT_YOUR_BASE64_ENCODED_API_KEY_HERE を base64 でエンコードされた Datadog API キーに置き換えます。

    echo -n '<Your API key>' | base64
    
  2. cluster-agent-deployment.yaml マニフェストで、手順 2 - Cluster Agent - Agent 間通信のセキュリティ保護のトークンを設定します。その形式は、シークレットの設定方法により異なります。手順はマニフェストを参照してください。

  3. 実行: kubectl apply -f agent-services.yaml

  4. 実行: kubectl apply -f secrets.yaml

  5. 実行: kubectl apply -f install_info-configmap.yaml

  6. 最後に 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 Agent の構成

Datadog Cluster Agent の設定が終了したら、Datadog Agent と Datadog Cluster Agent が通信するように構成します。

セットアップ

ノードベースの Agent に対する RBAC アクセス許可の設定

  1. agent-rbac.yaml マニフェストをダウンロードします。: Cluster Agent を使用する場合、Kubernetes API サーバーと通信できるのは Cluster Agent だけで、Node Agent ではないことにご注意ください。

  2. 実行: kubectl apply -f agent-rbac.yaml

Datadog Agent の有効化

  1. daemonset.yaml マニフェストをダウンロードします。

  2. daemonset.yaml マニフェストで、<DD_SITE> を Datadog サイト に置き換えます。デフォルトは datadoghq.com です。

  3. daemonset.yaml マニフェストで、手順 2 - Cluster Agent - Agent 間通信のセキュリティ保護のトークンを設定します。その形式は、シークレットの設定方法により異なります。手順はマニフェストを参照してください。

  4. daemonset.yaml マニフェストで、環境変数 DD_CLUSTER_AGENT_ENABLEDtrue に設定されていることを確認します。

  5. (任意) クラスターが単一環境を含む場合、agent.yaml<DD_ENV> を設定することも可能です。

  6. 次のコマンドで 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 によって収集された関連メトリクスに、それぞれに対応するクラスターレベルのメタデータがタグ付けされます。

AWS の管理型サービスを監視

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      

その他の参考資料