Agent v5 と Kubernetes での基本的な Agent の利用方法
Datadog Agent v5 は、バージョン 1.8 以前の Kubernetes をサポートしています。最新バージョンの Kubernetes には Datadog Agent v6 をご使用ください。
概要
Kubernetes からメトリクスをリアルタイムに取得すると、以下のことが可能になります。
- Kubernetes の状態を視覚化および監視できます。
- Kubernetes のフェイルオーバーとイベントの通知を受ける
Kubernetes の場合は、DaemonSet で Agent を実行することをお勧めします。Docker と Kubernetes 両方のインテグレーションを有効にして、Docker イメージを利用可能です。
ホストで Datadog Agent を実行して構成するだけで、Kubernetes メトリクスを収集できます。
Kubernetes のセットアップ
インストール
コンテナのインストール
Kubernetes では、DaemonSet を利用して、すべてのノード (または nodeSelectors を使用して特定のノード) に Datadog Agent を自動的にデプロイできます。
DaemonSet がご使用の Kubernetes クラスターのオプションになっていない場合は、各 Kubernetes ノードにデプロイとして Datadog Agent をインストールします。
Kubernetes で RBAC が有効になっている場合は、Datadog-Kubernetes インテグレーションで RBAC アクセス許可を設定する方法を参照してください。
- 次の dd-agent.yamlマニフェストを作成します。
apiVersion: extensions/v1beta1
metadata:
  name: dd-agent
spec:
  template:
    metadata:
      labels:
        app: dd-agent
      name: dd-agent
    spec:
      containers:
      - image: gcr.io/datadoghq/docker-dd-agent:latest
        imagePullPolicy: Always
        name: dd-agent
        ports:
          - containerPort: 8125
            name: dogstatsdport
            protocol: UDP
        env:
          - name: API_KEY
            value: "DATADOG_API_KEY"
          - name: KUBERNETES
            value: "yes"
        volumeMounts:
          - name: dockersocket
            mountPath: /var/run/docker.sock
          - name: procdir
            mountPath: /host/proc
            readOnly: true
          - name: cgroups
            mountPath: /host/sys/fs/cgroup
            readOnly: true
      volumes:
        - hostPath:
            path: /var/run/docker.sock
          name: dockersocket
        - hostPath:
            path: /proc
          name: procdir
        - hostPath:
            path: /sys/fs/cgroup
          name: cgroups
DATADOG_API_キー を独自の API キーに置き換えるか、Kubernetes シークレットを使用して API キーを環境変数として設定します。
- 次のコマンドで DaemonSet をデプロイします。kubectl create -f dd-agent.yaml
 
注: このマニフェストは、オートディスカバリーの自動構成機能を有効にします。無効にするには、SD_BACKEND 環境変数の定義を削除します。オートディスカバリーの構成方法については、オートディスカバリーのドキュメントを参照してください。
ホストのインストール
dd-check-kubernetes パッケージを手動または任意の構成マネージャーを使用してインストールします。
構成
kubernetes.yaml ファイルを編集して、サーバーとポートを指定し、監視するマスターを設定します。
instances:
    host: localhost
    port: 4194
    method: http
使用可能なすべての構成オプションの詳細については、kubernetes.yaml のサンプル を参照してください。
検証
コンテナの実行
現在の環境で Datadog Agent が DaemonSet として動作していることを検証するには、次を実行します。
Agent がデプロイされている場合は、以下のような出力が表示されます。ここで、desired と current は、クラスター内で実行中のノードの数と一致します。
NAME       DESIRED   CURRENT   NODE-SELECTOR   AGE
dd-agent   3         3         <none>          11h
Agent チェックの実行
Agent の info サブコマンドを実行し、Checks セクションの kubernetes を探します。
Checks
======
    kubernetes
    -----------
      - instance #0 [OK]
      - Collected 39 metrics, 0 events & 7 service checks
Kubernetes State のセットアップ
インストール
コンテナのインストール
Kubernetes 1.2.0 以降を実行している場合は、kube-state-metrics プロジェクトを使用して、追加のメトリクス (下のメトリクスリストでは kubernetes_state プレフィックスで識別) を Datadog に提供できます。
kube-state-metrics を実行するには、次のマニフェストを使用して kube-state-metrics.yaml ファイルを作成し、kube-state-metrics サービスをデプロイします。
apiVersion: extensions/v1beta1
metadata:
  name: kube-state-metrics
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: kube-state-metrics
    spec:
      containers:
      - name: kube-state-metrics
        image: gcr.io/google_containers/kube-state-metrics:v1.2.0
        ports:
        - name: metrics
          containerPort: 8080
        resources:
          requests:
            memory: 30Mi
            cpu: 100m
          limits:
            memory: 50Mi
            cpu: 200m
---
apiVersion: v1
metadata:
  annotations:
    prometheus.io/scrape: 'true'
  labels:
    app: kube-state-metrics
  name: kube-state-metrics
spec:
  ports:
  - name: metrics
    port: 8080
    targetPort: metrics
    protocol: TCP
  selector:
    app: kube-state-metrics
次に、以下を実行して、これをデプロイします。
kubectl create -f kube-state-metrics.yaml
上記のマニフェストでは、Google が公開している kube-state-metrics コンテナを使用していますが、Quay も利用できます。このコンテナを手動でビルドする場合は、プロジェクトの公式ドキュメントを参照してください。
Kubernetes State Metrics サービスを別の URL またはポートで実行するように構成する場合は、conf.d/kubernetes_state.yaml で kube_state_url パラメーターを設定し、Datadog Agent を再起動することで構成を行います。
詳細については、kubernetes_state.yaml.example ファイルを参照してください。オートディスカバリーを有効にしている場合は、kube state URL が自動的に構成および管理されます。
Host installation
dd-check-kubernetes_state パッケージを手動または任意の構成マネージャーを使用してインストールします (CentOS/AWS 上)。rpm パッケージをダウンロードし、インストール手順を参照してください。
次に、kubernetes_state.yaml ファイルを編集して、サーバーとポートを指定し、監視するマスターを設定します。使用可能なすべての構成オプションの詳細については、kubernetes_state.yaml のサンプル を参照してください。
検証
コンテナの検証
現在の環境で Datadog Agent が DaemonSet として動作していることを検証するには、次を実行します。
Agent がデプロイされている場合、以下のような出力が表示されます。ここで、desired と current は、クラスター内で実行中のノードの数と一致します。
NAME       DESIRED   CURRENT   NODE-SELECTOR   AGE
dd-agent   3         3         <none>          11h
Agent チェックの検証
Agent の info サブコマンドを実行し、Checks セクションで kubernetes_state を探します。
Checks
======
    kubernetes_state
    -----------
      - instance #0 [OK]
      - Collected 39 metrics, 0 events & 7 service checks
Kubernetes DNS のセットアップ
Installation
dd-check-kube_dns パッケージを手動または任意の構成マネージャーを使用してインストールします。
構成
kube_dns.yaml ファイルを編集してサーバーとポートを指定し、監視するマスターを設定します。使用可能なすべてのコンフィギュレーションオプションについては、kube_dns.yaml のサンプル を参照してください。
サービスディスカバリーの使用
Kubernetes ワーカーノードごとに 1 つの dd-agent ポッドを使用している場合は、kube-dns ポッドで以下のアノテーションを使用して、データを自動的に取得できます。
apiVersion: v1
metadata:
  annotations:
    service-discovery.datadoghq.com/kubedns.check_names: '["kube_dns"]'
    service-discovery.datadoghq.com/kubedns.init_configs: '[{}]'
    service-discovery.datadoghq.com/kubedns.instances: '[[{"prometheus_endpoint":"http://%%host%%:10055/metrics", "tags":["dns-pod:%%host%%"]}]]'
注:
- “dns-pod” タグは、対象の DNS ポッド IP を追跡します。他のタグは、サービスディスカバリーを使用して情報をポーリングする dd-agentに関連します。
- ポッドにサービスディスカバリーアノテーションを適用する必要があります。デプロイの場合は、テンプレートの spec のメタデータにアノテーションを追加します。
検証
Agent の info サブコマンドを実行し、Checks セクションで kube_dns を探します。
Checks
======
    kube_dns
    -----------
      - instance #0 [OK]
      - Collected 39 metrics, 0 events & 7 service checks