Agent v5 と Kubernetes での基本的な Agent の利用方法

Kubernetes ダッシュボード
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 として動作していることを検証するには、次を実行します。

kubectl get daemonset

Agent がデプロイされている場合は、以下のような出力が表示されます。ここで、desiredcurrent は、クラスター内で実行中のノードの数と一致します。

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.yamlkube_state_url パラメーターを設定し、Datadog Agent を再起動することで構成を行います。 詳細については、kubernetes_state.yaml.example ファイルを参照してください。オートディスカバリーを有効にしている場合は、kube state URL が自動的に構成および管理されます。

ホストのインストール

dd-check-kubernetes_state パッケージを手動または任意の構成マネージャーを使用してインストールします (CentOS/AWS 上)。rpm パッケージをダウンロードし、インストール手順を参照してください。 次に、kubernetes_state.yaml ファイルを編集して、サーバーとポートを指定し、監視するマスターを設定します。使用可能なすべての構成オプションの詳細については、kubernetes_state.yaml のサンプル を参照してください。

検証

コンテナの検証

現在の環境で Datadog Agent が DaemonSet として動作していることを検証するには、次を実行します。

kubectl get daemonset

Agent がデプロイされている場合、以下のような出力が表示されます。ここで、desiredcurrent は、クラスター内で実行中のノードの数と一致します。

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 のセットアップ

インストール

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
PREVIEWING: esther/docs-7422-add-rsyslog-note