Kubernetes
Dash が新機能を発表!インシデントマネジメント、Continuous Profiler など多数の機能が追加されました! Dash イベントで発表された新機能!

Kubernetes

クラスターやアプリケーションのメトリクス、トレース、ログを収集するには、Kubernetes クラスターで Datadog Agent を DaemonSet として実行します。Helm チャートまたは DaemonSet オブジェクトの YAML 定義を使用して直接デプロイできます。

: Agent バージョン 6.0 以降は、1.7.6 より上のバージョンの Kubernetes のみをサポートします。以前のバージョンの Kubernetes については、「レガシー Kubernetes バージョン」を参照してください。

インストール

カスタムリリース名でチャートをインストールするには、<RELEASE_NAME> (例 datadog-agent):

  1. Helm のインストール
  2. Datadog value.yaml コンフィギュレーションファイルをダウンロードします。
  3. これが新規インストールの場合は、Helm Datadog リポジトリおよび Helm 安定版リポジトリ (Kube State Metrics チャート用) を追加します。

    helm repo add datadog https://helm.datadoghq.com
    helm repo add stable https://kubernetes-charts.storage.googleapis.com/
    helm repo update
  4. Agent のインストール手順から Datadog API キーを取得し、次を実行します:

  • Helm v3+

    helm install <RELEASE_NAME> -f values.yaml  --set datadog.apiKey=<DATADOG_API_KEY> datadog/datadog --set targetSystem=<TARGET_SYSTEM>

    <対象システム> を OS 名(linux または windows)で置き換えます。

  • Helm v1/v2

    helm install -f values.yaml --name <RELEASE_NAME> --set datadog.apiKey=<DATADOG_API_KEY> datadog/datadog

このチャートは、DaemonSet 経由でクラスター内のすべてのノードに Datadog Agent を追加します。また、オプションで、kube-state-metrics チャートをデプロイし、それをクラスターに関するメトリクスの追加ソースとして使用します。インストール後数分すると、Datadog はホストとメトリクスの報告を開始します。

次に、使用する Datadog の機能を有効にします: APM, Logs

: Datadog チャートの構成可能なパラメーターとそのデフォルト値の完全なリストについては、Datadog Helm リポジトリの READMEを参照してください。

チャート v1 からのアップグレード

v2.0 では、Datadog のチャートはリファクタリングされており、values.yaml パラメーターがより論理的に再グループ化されています。

現在、デプロイされているチャートバージョンが v2.0.0 以前の場合は、移行ガイドに従って設定を新しいフィールドにマッピングしてください。

DaemonSet を利用して、すべてのノード (または nodeSelectors を使用して特定のノード) に Datadog Agent をデプロイします。

Datadog Agent を Kubernetes クラスターにインストールするには:

  1. Agent のアクセス許可を構成: Kubernetes で RBAC (ロールベースのアクセス制御) が有効になっている場合は、Datadog Agent サービスアカウントに対する RBAC アクセス許可を構成します。Kubernetes 1.6 以降では、RBAC はデフォルトで有効になっています。適切な ClusterRole、ServiceAccount、および ClusterRoleBinding を、以下のコマンドで作成します。

    kubectl apply -f "https://raw.githubusercontent.com/DataDog/datadog-agent/master/Dockerfiles/manifests/rbac/clusterrole.yaml"
    
    kubectl apply -f "https://raw.githubusercontent.com/DataDog/datadog-agent/master/Dockerfiles/manifests/rbac/serviceaccount.yaml"
    
    kubectl apply -f "https://raw.githubusercontent.com/DataDog/datadog-agent/master/Dockerfiles/manifests/rbac/clusterrolebinding.yaml"

    : RBAC 構成は、デフォルトで default ネームスペースに設定されています。カスタムネームスペースを使用している場合、適用する前に namespace パラメーターを更新します。

  2. Datadog API キーを含むシークレットを作成: 下の<DATADOG_API_KEY>組織の API キーに置き換えます。このシークレットはマニフェストで Datadog Agent をデプロイするために使用されます。

    kubectl create secret generic datadog-agent --from-literal api-key="<DATADOG_API_KEY>" --namespace="default"

    : これにより、default ネームスペースでシークレットが作成されます。カスタムネームスペースを使用している場合、実行前にコマンドの namespace パラメーターを更新します。

  3. Datadog Agent マニフェストを作成。以下のテンプレートを使用して、datadog-agent.yaml マニフェストを作成します。

    トレース収集を完全に有効にするには、アプリケーションのポッドコンフィギュレーションで追加の手順が必要となります。それぞれの機能を個別に有効にする方法については、ログAPMプロセスネットワークパフォーマンスモニタリングに関するドキュメントページを参照してください。

    : これらのマニフェストは、デフォルトで default ネームスペースに設定されています。カスタムネームスペースを使用している場合、適用する前に metadata.namespace パラメーターを更新します。

  4. 任意 - Datadog サイトを設定。Datadog EU サイトをご利用中の場合、datadog-agent.yaml マニフェストで DD_SITE 環境変数を datadoghq.eu に設定します。

  5. 次のコマンドで DaemonSet をデプロイします。

    kubectl apply -f datadog-agent.yaml
  6. 検証: 現在の環境で Datadog Agent が DaemonSet として動作していることを検証するには、次を実行します。

    kubectl get daemonset

Agent がデプロイされた場合は、以下のようなテキスト出力が表示されます。DESIREDCURRENT はクラスター内で実行中のノードの数と等しくなります。

```shell
NAME            DESIRED   CURRENT   READY     UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
datadog-agent   2         2         2         2            2           <none>          10s
```
  1. オプション - Kubernetes State メトリクスを設定: Kube-State マニフェストフォルダーをダウンロードし Kubernetes クラスターに適用すると、kube-state metrics を自動的に収集できます。

    kubectl apply -f <NAME_OF_THE_KUBE_STATE_MANIFESTS_FOLDER>

Datadog Operator は公開ベータ版です。Datadog Operator は Kubernetes や OpenShift にDatadog Agent をデプロイする方法です。カスタムリソースステータスでデプロイ状況、健全性、エラーを報告し、高度なコンフィギュレーションオプションでコンフィギュレーションミスのリスクを抑えます。始めるには、Datadog Operator リポジトリはじめにページを確認するか、OperatorHub.io Datadog Operator ページからオペレーターをインストールします。

非特権

(オプション) 非特権インストールを実行するには、ポッドテンプレートに以下を追加します。

  spec:
    securityContext:
      runAsUser: <USER_ID>
      fsGroup: <DOCKER_GROUP_ID>

イベント収集

Kubernetes イベント収集を有効にするには、value.yaml ファイルの順序で datadog.leaderElectiondatadog.collectEventsagents.rbac.create オプションを true に設定します。

Kubernetes クラスターからイベントを収集する場合は、Agent マニフェストで環境変数 DD_COLLECT_KUBERNETES_EVENTSDD_LEADER_ELECTIONtrue に設定します。または、Datadoc Cluster Agent イベント収集を使用します

インテグレーション

クラスター内で Agent が実行されたら、Datadog のオートディスカバリー機能を使いポッドからメトリクスとログを自動的に収集します。

環境変数

Datadog Agent で使用可能な環境変数のリストを以下に示します。これらを Helm でセットアップする場合は、helm/charts Github リポジトリdatadog-value.yaml ファイルのコンフィギュレーションオプションの完全なリストを参照してください。

グローバルオプション

環境変数説明
DD_API_KEYDatadog API キー (必須)
DD_ENV出力されるすべてのデータにグローバル env タグを設定します。
DD_HOSTNAMEメトリクスに使用するホスト名 (自動検出が失敗した場合)
DD_TAGSスペース区切りのホストタグ。例: simple-tag-0 tag-key-1:tag-value-1
DD_SITEメトリクス、トレース、およびログの送信先サイト。有効なオプションは、datadoghq.com (Datadog US サイト) および datadoghq.eu (Datadog EU サイト) です。
DD_DD_URLメトリクス送信用 URL を上書きします。設定は任意です。
DD_CHECK_RUNNERSAgent はデフォルトですべてのチェックを同時に実行します (デフォルト値は 4 ランナーです)。チェックを順次実行する場合は、値を 1 に設定してください。ただし、多数のチェック (または時間のかかるチェック) を実行する必要がある場合、collector-queue コンポーネントが遅延して、ヘルスチェックに失敗する可能性があります。ランナーの数を増やすと、チェックを並行して実行できます。
DD_LEADER_ELECTIONクラスターで複数の Agent が実行されている場合は、この変数を true に設定して、イベント収集の重複を回避します。

プロキシ設定

Agent v6.4.0 (トレース Agent の場合は v6.5.0) より、以下の環境変数を使用して Agent のプロキシ設定を上書きできるようになりました。

環境変数説明
DD_PROXY_HTTPhttp リクエスト用のプロキシとして使用する HTTP URL です。
DD_PROXY_HTTPShttps リクエスト用のプロキシとして使用する HTTPS URL です。
DD_PROXY_NO_PROXYプロキシを使用すべきではない場合に必要となる、URL をスペースで区切ったリストです。
DD_SKIP_SSL_VALIDATIONAgent と Datadog との接続で問題が発生した場合にテストを実施するオプションです。

プロキシ設定の詳細については、Agent v6 プロキシのドキュメントを参照してください。

オプションの収集 Agent

セキュリティまたはパフォーマンス上の理由により、オプションの収集 Agent はデフォルトで無効になっています。このエージェントを有効にするには、以下の環境変数を使用します。

環境変数説明
DD_APM_ENABLEDトレース Agent による トレースの収集を有効にします。
DD_LOGS_ENABLEDログ Agent によるログの収集を有効にします。
DD_PROCESS_AGENT_ENABLEDプロセス Agent によるライブプロセスの収集を有効にします。Docker ソケットがある場合、ライブコンテナービューはすでにデフォルトで有効になっています。false に設定すると、ライブプロセスの収集ライブコンテナービューが無効になります。
DD_COLLECT_KUBERNETES_EVENTSAgent でのイベント収集を有効にします。クラスターで複数の Agent を実行している場合は、DD_LEADER_ELECTIONtrue に設定します。

ライブコンテナビューを有効にするには、DD_PROCESS_AGENT_ENABLED を true に設定した上でプロセス Agent を実行していることをご確認ください。

DogStatsD (カスタムメトリクス)

カスタムメトリクスを StatsD プロトコルで送信します。

環境変数説明
DD_DOGSTATSD_NON_LOCAL_TRAFFIC他のコンテナからの DogStatsD パケットをリスニングします (カスタムメトリクスの送信に必要)。
DD_HISTOGRAM_PERCENTILES計算するヒストグラムのパーセンタイル (スペース区切り)。デフォルトは 0.95 です。
DD_HISTOGRAM_AGGREGATES計算するヒストグラムの集計 (スペース区切り)。デフォルトは “max median avg count” です。
DD_DOGSTATSD_SOCKETリスニングする Unix ソケットのパス。rw でマウントされたボリューム内にある必要があります。
DD_DOGSTATSD_ORIGIN_DETECTIONUNIX ソケットのメトリクス用にコンテナの検出とタグ付けを有効にします。
DD_DOGSTATSD_TAGSこの DogStatsD サーバーが受信するすべてのメトリクス、イベント、サービスのチェックに付加する追加タグ。たとえば ["env:golden", "group:retrievers"] のように追加します。

詳しくは、Unix ドメインソケット上の DogStatsD を参照してください。

タグ付け

Datadog は Kubernetes から一般的なタグを自動的に収集します。さらに多くのタグを抽出するには、次のオプションを使用します。

環境変数説明
DD_KUBERNETES_POD_LABELS_AS_TAGSポッドラベルを抽出します
DD_KUBERNETES_POD_ANNOTATIONS_AS_TAGSポッドアノテーションを抽出します

詳細については、Kubernetes タグの抽出ドキュメントを参照してください。

シークレットファイルの使用

インテグレーションの資格情報を Docker や Kubernetes のシークレットに格納し、オートディスカバリーテンプレートで使用できます。詳細については、シークレット管理のドキュメントを参照してください。

コンテナの無視

ログの収集、メトリクスの収集、オートディスカバリーからコンテナを除外します。Datadog はデフォルトで Kubernetes と OpenShift の pause コンテナを除外します。これらの許可リストとブロックリストはオートディスカバリーにのみ適用されます。トレースと DogStatsD は影響を受けません。

環境変数説明
DD_CONTAINER_INCLUDE処理対象に入れるコンテナの許可リスト (スペース区切り)。すべてを対象に入れる場合は、.* を使用します。例: "image:image_name_1 image:image_name_2"image:.*
DD_CONTAINER_EXCLUDE処理対象から除外するコンテナのブロックリスト (スペース区切り)。すべてを対象から除外する場合は、.* を使用します。例: "image:image_name_3 image:image_name_4" (: この変数はオートディスカバリーに対してのみ有効)、image:.*
DD_CONTAINER_INCLUDE_METRICSメトリクスを含めたいコンテナの許可リスト。
DD_CONTAINER_EXCLUDE_METRICSメトリクスを除外したいコンテナのブロックリスト。
DD_CONTAINER_INCLUDE_LOGSログを含めたいコンテナの許可リスト。
DD_CONTAINER_EXCLUDE_LOGSログを除外したいコンテナのブロックリスト。
DD_AC_INCLUDE非推奨: 処理対象に入れるコンテナの許可リスト (スペース区切り)。すべてを対象に入れる場合は、.* を使用します。例: "image:image_name_1 image:image_name_2"image:.*
DD_AC_EXCLUDE非推奨: 処理対象から除外するコンテナのブロックリスト (スペース区切り)。すべてを対象から除外する場合は、.* を使用します。例: "image:image_name_3 image:image_name_4" (: この変数はオートディスカバリーに対してのみ有効)、image:.*

その他の例はコンテナのディスカバリー管理 ページでご確認いただけます。

: docker.containers.running.stopped.running.total.stopped.total の各メトリクスは、この設定の影響を受けません。すべてのコンテナを対象とします。コンテナごとの課金にも影響しません。

その他

環境変数説明
DD_PROCESS_AGENT_CONTAINER_SOURCEコンテナソースの自動検出を上書きして、1 つのソースに制限します ("docker""ecs_fargate""kubelet" など)。
DD_HEALTH_PORTこれを 5555 に設定すると、Agent のヘルスチェックをポート 5555 で公開します。

リスナーおよび構成プロバイダーを追加するには、DD_EXTRA_LISTENERSDD_EXTRA_CONFIG_PROVIDERS の環境変数を使用します。これらは datadog.yaml 構成ファイルの listeners セクションと config_providers セクションに定義する変数に追加されます。

コマンド

すべての Docker Agent コマンドは Agent コマンドガイドでご確認いただけます。

その他の参考資料