Kubernetes

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://charts.helm.sh/stable
    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 を参照してください。

  • 現在のデプロイリージョンで Google Container Registry (gcr.io/datadoghq) にアクセスが不可能な場合は、values.yaml ファイルで下記のコンフィギュレーションで イメージ datadog/agent および datadog/cluster-agent とともに Docker Hub レジストリを使用します。

    agents:
      image:
        repository: datadog/agent
    
    clusterAgent:
      image:
        repository: datadog/cluster-agent
    
    clusterChecksRunner:
      image:
        repository: datadog/agent
    

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

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

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

非特権

(オプション) 非特権インストールを実行するには、values.yaml ファイルに以下を追加します。

datadog:
  securityContext:
      runAsUser: <USER_ID>
      supplementalGroups:
        - <DOCKER_GROUP_ID>

<USER_ID> が、Agent を実行する UID で、<DOCKER_GROUP_ID> が、Docker または Containerd ソケットを所有するグループ ID の場合。

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プロセスNPMLinuxWindows
    マニフェストテンプレートマニフェストテンプレート
    マニフェストテンプレートマニフェストテンプレート
    マニフェストテンプレートマニフェストテンプレート
    マニフェストテンプレートマニフェストテンプレート
    マニフェストテンプレートテンプレートなし
    マニフェストテンプレートマニフェストテンプレート

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

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

  4. datadog-agent.yaml マニフェストで、DD_SITE 環境変数を使用して Datadog サイトに設定します。

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

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

    kubectl get daemonset
    

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

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

    kubectl apply -f <NAME_OF_THE_KUBE_STATE_MANIFESTS_FOLDER>
    

非特権

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

  spec:
    securityContext:
      runAsUser: <USER_ID>
      supplementalGroups:
        - <DOCKER_GROUP_ID>

<USER_ID> が、Agent を実行する UID で、<DOCKER_GROUP_ID> が、Docker または Containerd ソケットを所有するグループ ID の場合。

Datadog Operator は公開ベータ版です。フィードバックや質問がございましたら、Datadog サポートチームまでお寄せください。

Datadog Operator は Kubernetes や OpenShift にDatadog Agent をデプロイする方法です。カスタムリソースステータスでデプロイ状況、健全性、エラーを報告し、高度なコンフィギュレーションオプションでコンフィギュレーションミスのリスクを抑えます。

前提条件

Datadog Operator を使用するには、次の前提条件が必要です。

  • Kubernetes Cluster バージョン >= v1.14.X: テストはバージョン >= 1.14.0 で行われましたが、バージョン >= v1.11.0 で動作するはずです。以前のバージョンでは、CRD サポートが制限されているため、Operator が期待どおりに機能しない場合があります。
  • datadog-operator をデプロイするための Helm
  • datadog-agent をインストールするための Kubectl CLI

Operator を使用して Agent をデプロイする

最小限のステップ数で Operator を使用して Datadog Agent をデプロイするには、datadog-agent-with-operator Helm チャートを使用します。 手順は次のとおりです。

  1. チャートをダウンロードします

    curl -Lo datadog-agent-with-operator.tar.gz https://github.com/DataDog/datadog-operator/releases/latest/download/datadog-agent-with-operator.tar.gz
    
  2. Agent の仕様を使用してファイルを作成します。最も単純なコンフィギュレーションは次のとおりです。

    credentials:
      apiKey: <DATADOG_API_KEY>
      appKey: <DATADOG_APP_KEY>
    agent:
      image:
        name: "gcr.io/datadoghq/agent:latest"
    

    <DATADOG_API_KEY><DATADOG_APP_KEY>Datadog API とアプリケーションキーに置き換えます

  3. 上記のコンフィギュレーションファイルを使用して Datadog Agent をデプロイします。

    helm install --set-file agent_spec=/path/to/your/datadog-agent.yaml datadog datadog-agent-with-operator.tar.gz
    

クリーンアップ

次のコマンドは、上記の手順で作成されたすべての Kubernetes リソースを削除します。

kubectl delete datadogagent datadog
helm delete datadog

許容範囲の使用に関する情報を含む、Operator の設定の詳細については、Datadog Operator の高度な設定ガイドを参照してください。

非特権

(オプション) 非特権インストールを実行するには、Datadog カスタムリソース (CR) に以下を追加します。

agent:
  config:
    securityContext:
      runAsUser: <USER_ID>
      supplementalGroups:
        - <DOCKER_GROUP_ID>

<USER_ID> が、Agent を実行する UID で、<DOCKER_GROUP_ID> が、Docker または Containerd ソケットを所有するグループ ID の場合。

追加のコンフィギュレーション

ライブコンテナ用 Kubernetes リソース

Datadog AgentCluster Agent は、ライブコンテナの Kubernetes リソースを取得するように構成できます。この機能により、特定のネームスペースまたはアベイラビリティーゾーンのポッド、デプロイメント、その他の Kubernetes の概念の状態を監視したり、デプロイメント内で失敗したポッドのリソース仕様を確認したり、ノードアクティビティを関係するログに関連付けたりすることが可能になります。

コンフィギュレーションの説明や追加の情報については、ライブコンテナドキュメントを参照してください。

イベント収集

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

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

datadog-agent.yaml マニフェストで agent.config.collectEventstrue に設定します。

例:

agent:
  config:
    collectEvents: true

インテグレーション

クラスター内で 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メトリクス、トレース、ログの送信先サイト。DD_SITEで、デフォルトは datadoghq.com です。
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:.*

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

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

その他

環境変数説明
DD_PROCESS_AGENT_CONTAINER_SOURCEコンテナソースの自動検出を上書きして、1 つのソースに制限します ("docker""ecs_fargate""kubelet" など)。
DD_HEALTH_PORTこれを 5555 に設定すると、Agent のヘルスチェックをポート 5555 で公開します。
DD_CLUSTER_NAMEカスタム Kubernetes クラスター識別子を設定して、ホストエイリアスの衝突を回避します。クラスター名は最大 40 文字で、小文字、数字、およびハイフンのみという制限があります。また、文字で始める必要があり、 数字または文字で終わる必要があります。

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

コマンド

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

その他の参考資料