Kubernetes 上の Datadog Agent のさらなる構成

概要

Kubernetes 環境に Datadog Agent をインストールした後、追加の構成オプションを選択することができます。

Datadog による以下の収集を有効にします。

その他の機能

その他の構成

APM とトレースの有効化

Datadog Operator または Helm を使用して Kubernetes をインストールした場合、APM はデフォルトで有効になっています

詳細については、Kubernetes トレース収集を参照してください。

Kubernetes イベント収集の有効化

Datadog Cluster Agent を使用して Kubernetes イベントを収集します。

Datadog Operator では、イベント収集がデフォルトで有効になっています。これは datadog-agent.yaml の構成 features.eventCollection.collectKubernetesEvents で管理することができます。

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    credentials:
      apiKey: <DATADOG_API_KEY>
    site: <DATADOG_SITE>

  features:
    eventCollection:
      collectKubernetesEvents: true

Datadog Cluster Agent で Kubernetes イベントを収集するには、datadog-values.yaml ファイルで clusterAgent.enableddatadog.collectEventsclusterAgent.rbac.create オプションが true に設定されていることを確認します。

datadog:
  collectEvents: true
clusterAgent:
  enabled: true
  rbac: 
    create: true

Cluster Agent を使用しない場合でも、datadog-values.yaml ファイルで datadog.leaderElectiondatadog.collectEventsagents.rbac.create オプションを true に設定すれば、Node Agent に Kubernetes イベントを収集させることができます。

datadog:
  leaderElection: true
  collectEvents: true
agents:
  rbac:
    create: true

DaemonSet の構成については、DaemonSet Cluster Agent のイベント収集を参照してください。

NPM 収集の有効化

datadog-agent.yamlfeatures.npm.enabledtrue に設定します。

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    credentials:
      apiKey: <DATADOG_API_KEY>

  features:
    npm:
      enabled: true

次に、新しいコンフィギュレーションを適用します。

kubectl apply -n $DD_NAMESPACE -f datadog-agent.yaml

以下の構成で datadog-values.yaml を更新します。

datadog:
  # (...)
  networkMonitoring:
    enabled: true

次に、Helm チャートをアップグレードします。

helm upgrade -f datadog-values.yaml <RELEASE_NAME> datadog/datadog

詳細については、ネットワークパフォーマンスモニタリングを参照してください。

ログ収集の有効化

datadog-agent.yaml で、features.logCollection.enabledfeatures.logCollection.containerCollectAlltrue に設定します。

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    credentials:
      apiKey: <DATADOG_API_KEY>

  features:
    logCollection:
      enabled: true
      containerCollectAll: true

次に、新しいコンフィギュレーションを適用します。

kubectl apply -n $DD_NAMESPACE -f datadog-agent.yaml

以下の構成で datadog-values.yaml を更新します。

datadog:
  # (...)
  logs:
    enabled: true
    containerCollectAll: true

次に、Helm チャートをアップグレードします。

helm upgrade -f datadog-values.yaml <RELEASE_NAME> datadog/datadog

詳細については、Kubernetes ログ収集を参照してください。

プロセス収集の有効化

datadog-agent.yaml で、features.liveProcessCollection.enabledtrue に設定します。

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    credentials:
      apiKey: <DATADOG_API_KEY>

  features:
    liveProcessCollection:
      enabled: true

次に、新しいコンフィギュレーションを適用します。

kubectl apply -n $DD_NAMESPACE -f datadog-agent.yaml

以下の構成で datadog-values.yaml を更新します。

datadog:
  # (...)
  processAgent:
    enabled: true
    processCollection: true

次に、Helm チャートをアップグレードします。

helm upgrade -f datadog-values.yaml <RELEASE_NAME> datadog/datadog

詳しくは、ライブプロセスをご覧ください。

Datadog Cluster Agent

Datadog Cluster Agent は、クラスターレベルの監視データを収集するための合理化された一元的なアプローチを提供します。Datadog は、Kubernetes のモニタリングに Cluster Agent を使用することを強く推奨します。

Datadog Operator v1.0.0+ と Helm チャート v2.7.0+ では、デフォルトで Cluster Agent が有効になります。これ以上の構成は必要ありません。

Datadog Operator v1.0.0+ は、デフォルトで Cluster Agent を有効にします。Operator は必要な RBAC を作成し、 Cluster Agent をデプロイします。両方の Agent が同じ API キーを使用します。

Operator は、安全な通信のために Datadog Agent と Cluster Agent が共有する Kubernetes Secret にランダムなトークンを自動的に生成します。

このトークンは datadog-agent.yamlglobal.clusterAgentToken フィールドに手動で指定することができます。

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    credentials:
      apiKey: <DATADOG_API_KEY>
      appKey: <DATADOG_APP_KEY>
  clusterAgentToken: <DATADOG_CLUSTER_AGENT_TOKEN>

あるいは、既存の Secret の名前と、このトークンを含むデータキーを参照して、このトークンを指定することもできます。

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    credentials:
      apiKey: <DATADOG_API_KEY>
      appKey: <DATADOG_APP_KEY>
  clusterAgentTokenSecret: 
    secretName: <SECRET_NAME>
    keyName: <KEY_NAME>

: 手動で設定する場合、このトークンは 32 文字の英数字である必要があります。

次に、新しいコンフィギュレーションを適用します。

kubectl apply -n $DD_NAMESPACE -f datadog-agent.yaml

Helm チャート v2.7.0+ はデフォルトで Cluster Agent を有効にします。

検証のため、datadog-values.yamlclusterAgent.enabledtrue に設定されていることを確認してください。

clusterAgent:
  enabled: true

Helm は、安全な通信のために Datadog Agent と Cluster Agent が共有する Kubernetes Secret にランダムなトークンを自動的に生成します。

このトークンは datadog-agent.yamlclusterAgent.token フィールドに手動で指定することができます。

clusterAgent:
  enabled: true
  token: <DATADOG_CLUSTER_AGENT_TOKEN>

あるいは、既存の Secret の名前を参照してこのトークンを指定することもできます。ここで、トークンは token という名前のキーにあります。

clusterAgent:
  enabled: true
  tokenExistingSecret: <SECRET_NAME>

詳細については、Datadog Cluster Agent のドキュメントを参照してください。

カスタムメトリクスサーバー

Cluster Agent のカスタムメトリクスサーバー機能を使用するには、Datadog のアプリケーションキーを提供し、メトリクスプロバイダーを有効にする必要があります。

datadog-agent.yaml で、spec.global.credentials.appKey にアプリケーションキーを指定し、features.externalMetricsServer.enabledtrue に設定します。

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    credentials:
      apiKey: <DATADOG_API_KEY>
      appKey: <DATADOG_APP_KEY>

  features:
    externalMetricsServer:
      enabled: true

次に、新しいコンフィギュレーションを適用します。

kubectl apply -n $DD_NAMESPACE -f datadog-agent.yaml

datadog-values.yaml で、datadog.appKey にアプリケーションキーを指定し、clusterAgent.metricsProvider.enabledtrue に設定します。

datadog:
  apiKey: <DATADOG_API_KEY>
  appKey: <DATADOG_APP_KEY>

  clusterAgent:
    enabled: true
    metricsProvider:
      enabled: true

次に、Helm チャートをアップグレードします。

helm upgrade -f datadog-values.yaml <RELEASE_NAME> datadog/datadog

インテグレーション

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

コンテナビュー

Datadog のコンテナエクスプローラーを利用するには、Process Agent を有効にしてください。Datadog Operator と Helm チャートでは、デフォルトで Process Agent が有効になります。それ以上の構成は必要ありません。

Datadog Operator では、プロセスが Agent がデフォルトで有効になります。

検証のため、datadog-agent.yamlfeatures.liveContainerCollection.enabledtrue に設定されていることを確認してください。

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    credentials:
      apiKey: <DATADOG_API_KEY>
      appKey: <DATADOG_APP_KEY>
  features:
    liveContainerCollection:
      enabled: true

Helm チャートでは、デフォルトで Process Agent が有効になります。

検証のため、datadog-values.yamlprocessAgent.enabledtrue に設定されていることを確認してください。

datadog:
  # (...)
  processAgent:
    enabled: true

一部のセットアップでは、Process Agent と Cluster Agent で Kubernetes クラスター名が自動検出されません。この場合、機能は起動せず、Cluster Agent ログで以下のような警告が表示されます。Orchestrator explorer enabled but no cluster name set: disabling.。この場合、datadog.clusterNamevalues.yaml でクラスター名に設定する必要があります。

datadog:
  #(...)
  clusterName: <YOUR_CLUSTER_NAME>
  #(...)
  processAgent:
    enabled: true

詳細は、コンテナビューのドキュメントを参照してください。

オーケストレータエクスプローラー

Datadog Operator と Helm チャートでは、デフォルトで Datadog の Orchestrator Explorer が有効になります。これ以上の構成は必要ありません。

Datadog Operator では、オーケストレータエクスプローラーがデフォルトで有効になります。

検証のため、datadog-agent.yamlfeatures.orchestratorExplorer.enabled パラメーターが true に設定されていることを確認してください。

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    credentials:
      apiKey: <DATADOG_API_KEY>
      appKey: <DATADOG_APP_KEY>
  features:
    orchestratorExplorer:
      enabled: true

Helm チャートでは、デフォルトで Orchestrator Explorer が有効になります。

検証のため、 datadog-values.yaml ファイルで orchestratorExplorer.enabled パラメーターが true に設定されていることを確認してください。

datadog:
  # (...)
  processAgent:
    enabled: true
  orchestratorExplorer:
    enabled: true

詳細は、Orchestrator Explorer のドキュメントを参照してください。

環境変数

以下の環境変数を使用して、 Datadog Agent を構成します。

パラメーター (v2alpha1)説明
global.credentials.apiKeyDatadog API キーを構成します。
global.credentials.apiSecret.secretNameglobal.credentials.apiKey の代わりに、Datadog API キーを含む Kubernetes Secret の名前を指定します。
global.credentials.apiSecret.keyNameglobal.credentials.apiKey の代わりに、global.credentials.apiSecret.secretName で指定した Kubernetes の Secret のキーを指定します。
global.credentials.appKeyDatadog アプリケーションキーを構成します。外部メトリクス サーバーを使用している場合は、メトリクスへの読み取りアクセス用に Datadog アプリケーション キーを設定する必要があります。
global.credentials.appSecret.secretNameglobal.credentials.apiKey の代わりに、Datadog アプリキーを含む Kubernetes Secret の名前を指定します。
global.credentials.appSecret.keyNameglobal.credentials.apiKey の代わりに、global.credentials.appSecret.secretName で指定した Kubernetes の Secret のキーを指定します。
global.logLevelロギングの冗長性を設定します。これはコンテナによってオーバーライドできます。有効なログレベルは tracedebuginfowarnerrorcriticaloff です。デフォルト: info
global.registryすべての Agent イメージに使用するイメージレジストリ。デフォルト: gcr.io/datadoghq
global.siteAgent データを送信する Datadog インテークサイトを設定します。サイトは です。(右側で正しい SITE が選択されていることを確認してください)。
global.tags収集されるすべてのメトリクス、イベント、サービスチェックにアタッチされるタグのリスト。

Datadog Operator の環境変数の完全なリストについては、Operator v2alpha1 仕様を参照してください。旧バージョンについては、Operator v1alpha1 仕様を参照してください。

Helm説明
datadog.apiKeyDatadog API キーを構成します。
datadog.apiKeyExistingSecretdatadog.apiKey の代わりに、キー名 api-key で設定した Datadog API キーを含む既存の Kubernetes Secret の名前を指定します。
datadog.appKeyDatadog アプリケーションキーを構成します。外部メトリクス サーバーを使用している場合は、メトリクスへの読み取りアクセス用に Datadog アプリケーション キーを設定する必要があります。
datadog.appKeyExistingSecretdatadog.appKeyの代わりに、キー名 app-key で設定した Datadog アプリキーを含む既存の Kubernetes Secret の名前を指定します。
datadog.logLevelロギングの冗長性を設定します。これはコンテナによってオーバーライドできます。有効なログレベルは tracedebuginfowarnerrorcriticaloff です。デフォルト: info
registryすべての Agent イメージに使用するイメージレジストリ。デフォルト: gcr.io/datadoghq
datadog.siteAgent データを送信する Datadog インテークサイトを設定します。サイトは です。(右側で正しい SITE が選択されていることを確認してください)。
datadog.tags収集したメトリクス、イベント、サービスチェックにアタッチするタグのリスト。

Helm チャートの環境変数の完全なリストについては、datadog-values.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_URL (6.36+/7.36+)DD_DD_URL のエイリアス。すでに DD_DD_URL が設定されている場合は無視されます。
DD_CHECK_RUNNERSAgent はデフォルトですべてのチェックを同時に実行します (デフォルト値 = 4 ランナー)。チェックを順次実行するには、値を 1 に設定します。多くのチェック (または遅いチェック) を実行する必要がある場合、collector-queue コンポーネントが遅れてヘルスチェックに失敗する可能性があります。ランナーの数を増やすことで、チェックを並列に実行することができます。
DD_LEADER_ELECTIONAgent の複数のインスタンスがクラスターで動作している場合、イベント収集の重複を避けるためにこの変数を true に設定します。

DogStatsD の構成

DogStatsD は、StatsD プロトコルで UDP 経由でカスタムメトリクスを送信できます。DogStatsD は Datadog Operator と Helm でデフォルトで有効になっています。詳細は DogStatsD ドキュメントを参照してください。

以下の環境変数を使用して、DaemonSet で DogStatsD を構成できます。

環境変数説明
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" のように追加します。

タグマッピングの構成

Datadog は Kubernetes から共通のタグを自動的に収集します。

さらに、Kubernetes ノードラベル、ポッドラベル、アノテーションを Datadog タグにマッピングすることができます。このマッピングを構成するには、以下の環境変数を使用します。

パラメーター (v2alpha1)説明
global.namespaceLabelsAsTagsKubernetes ネームスペースラベルと Datadog タグのマッピングを提供します。<KUBERNETES_NAMESPACE_LABEL>: <DATADOG_TAG_KEY>
global.nodeLabelsAsTagsKubernetes ノードラベルと Datadog タグのマッピングを提供します。<KUBERNETES_NODE_LABEL>: <DATADOG_TAG_KEY>
global.podAnnotationsAsTagsKubernetes アノテーションと Datadog タグのマッピングを提供します。<KUBERNETES_ANNOTATION>: <DATADOG_TAG_KEY>
global.podLabelsAsTagsKubernetes ラベルと Datadog タグのマッピングを提供します。<KUBERNETES_LABEL>: <DATADOG_TAG_KEY>

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    credentials:
      apiKey: <DATADOG_API_KEY>
    namespaceLabelsAsTags:
      env: environment
      # <KUBERNETES_NAMESPACE_LABEL>: <DATADOG_TAG_KEY>
    nodeLabelsAsTags:
      beta.kubernetes.io/instance-type: aws-instance-type
      kubernetes.io/role: kube_role
      # <KUBERNETES_NODE_LABEL>: <DATADOG_TAG_KEY>
    podLabelsAsTags:
      app: kube_app
      release: helm_release
      # <KUBERNETES_LABEL>: <DATADOG_TAG_KEY>
    podAnnotationsAsTags:
      iam.amazonaws.com/role: kube_iamrole
       # <KUBERNETES_ANNOTATIONS>: <DATADOG_TAG_KEY>
Helm説明
datadog.namespaceLabelsAsTagsKubernetes ネームスペースラベルと Datadog タグのマッピングを提供します。<KUBERNETES_NAMESPACE_LABEL>: <DATADOG_TAG_KEY>
datadog.nodeLabelsAsTagsKubernetes ノードラベルと Datadog タグのマッピングを提供します。<KUBERNETES_NODE_LABEL>: <DATADOG_TAG_KEY>
datadog.podAnnotationsAsTagsKubernetes アノテーションと Datadog タグのマッピングを提供します。<KUBERNETES_ANNOTATION>: <DATADOG_TAG_KEY>
datadog.podLabelsAsTagsKubernetes ラベルと Datadog タグのマッピングを提供します。<KUBERNETES_LABEL>: <DATADOG_TAG_KEY>

datadog:
  # (...)
  namespaceLabelsAsTags:
    env: environment
    # <KUBERNETES_NAMESPACE_LABEL>: <DATADOG_TAG_KEY>
  nodeLabelsAsTags:
    beta.kubernetes.io/instance-type: aws-instance-type
    kubernetes.io/role: kube_role
    # <KUBERNETES_NODE_LABEL>: <DATADOG_TAG_KEY>
  podLabelsAsTags:
    app: kube_app
    release: helm_release
    # <KUBERNETES_LABEL>: <DATADOG_TAG_KEY>
  podAnnotationsAsTags:
    iam.amazonaws.com/role: kube_iamrole
     # <KUBERNETES_ANNOTATIONS>: <DATADOG_TAG_KEY>

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

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

コンテナの無視

ログの収集、メトリクスの収集、オートディスカバリーからコンテナを除外します。Datadog はデフォルトで Kubernetes と OpenShift の pause コンテナを除外します。これらの許可リストとブロックリストはオートディスカバリーにのみ適用されます。トレースと DogStatsD は影響を受けません。これらの環境変数は、その値において正規表現をサポートしています。

例については、コンテナのディスカバリー管理のページを参照してください。

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

プロキシ設定

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 との接続で問題が発生した場合にテストを実施するオプションです。

その他

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

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