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.enabled
、datadog.collectEvents
、clusterAgent.rbac.create
オプションが true
に設定されていることを確認します。
datadog:
collectEvents: true
clusterAgent:
enabled: true
rbac:
create: true
Cluster Agent を使用しない場合でも、datadog-values.yaml
ファイルで datadog.leaderElection
、datadog.collectEvents
、agents.rbac.create
オプションを true
に設定すれば、Node Agent に Kubernetes イベントを収集させることができます。
datadog:
leaderElection: true
collectEvents: true
agents:
rbac:
create: true
DaemonSet の構成については、DaemonSet Cluster Agent のイベント収集を参照してください。
NPM 収集の有効化
datadog-agent.yaml
で features.npm.enabled
を true
に設定します。
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.enabled
と features.logCollection.containerCollectAll
を true
に設定します。
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.enabled
を true
に設定します。
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.yaml
の global.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.yaml
で clusterAgent.enabled
が true
に設定されていることを確認してください。
clusterAgent:
enabled: true
Helm は、安全な通信のために Datadog Agent と Cluster Agent が共有する Kubernetes Secret
にランダムなトークンを自動的に生成します。
このトークンは datadog-agent.yaml
の clusterAgent.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.enabled
を true
に設定します。
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.enabled
を true
に設定します。
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.yaml
でfeatures.liveContainerCollection.enabled
が true
に設定されていることを確認してください。
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.yaml
で processAgent.enabled
が true
に設定されていることを確認してください。
datadog:
# (...)
processAgent:
enabled: true
一部のセットアップでは、Process Agent と Cluster Agent で Kubernetes クラスター名が自動検出されません。この場合、機能は起動せず、Cluster Agent ログで以下のような警告が表示されます。Orchestrator explorer enabled but no cluster name set: disabling.
。この場合、datadog.clusterName
を values.yaml
でクラスター名に設定する必要があります。
datadog:
#(...)
clusterName: <YOUR_CLUSTER_NAME>
#(...)
processAgent:
enabled: true
詳細は、コンテナビューのドキュメントを参照してください。
オーケストレータエクスプローラー
Datadog Operator と Helm チャートでは、デフォルトで Datadog の Orchestrator Explorer が有効になります。これ以上の構成は必要ありません。
Datadog Operator では、オーケストレータエクスプローラーがデフォルトで有効になります。
検証のため、datadog-agent.yaml
でfeatures.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.apiKey | Datadog API キーを構成します。 |
global.credentials.apiSecret.secretName | global.credentials.apiKey の代わりに、Datadog API キーを含む Kubernetes Secret の名前を指定します。 |
global.credentials.apiSecret.keyName | global.credentials.apiKey の代わりに、global.credentials.apiSecret.secretName で指定した Kubernetes の Secret のキーを指定します。 |
global.credentials.appKey | Datadog アプリケーションキーを構成します。外部メトリクス サーバーを使用している場合は、メトリクスへの読み取りアクセス用に Datadog アプリケーション キーを設定する必要があります。 |
global.credentials.appSecret.secretName | global.credentials.apiKey の代わりに、Datadog アプリキーを含む Kubernetes Secret の名前を指定します。 |
global.credentials.appSecret.keyName | global.credentials.apiKey の代わりに、global.credentials.appSecret.secretName で指定した Kubernetes の Secret のキーを指定します。 |
global.logLevel | ロギングの冗長性を設定します。これはコンテナによってオーバーライドできます。有効なログレベルは trace 、debug 、info 、warn 、error 、critical 、off です。デフォルト: info 。 |
global.registry | すべての Agent イメージに使用するイメージレジストリ。デフォルト: gcr.io/datadoghq 。 |
global.site | Agent データを送信する Datadog インテークサイトを設定します。サイトは です。(右側で正しい SITE が選択されていることを確認してください)。 |
global.tags | 収集されるすべてのメトリクス、イベント、サービスチェックにアタッチされるタグのリスト。 |
Datadog Operator の環境変数の完全なリストについては、Operator v2alpha1 仕様を参照してください。旧バージョンについては、Operator v1alpha1 仕様を参照してください。
Helm | 説明 |
---|
datadog.apiKey | Datadog API キーを構成します。 |
datadog.apiKeyExistingSecret | datadog.apiKey の代わりに、キー名 api-key で設定した Datadog API キーを含む既存の Kubernetes Secret の名前を指定します。 |
datadog.appKey | Datadog アプリケーションキーを構成します。外部メトリクス サーバーを使用している場合は、メトリクスへの読み取りアクセス用に Datadog アプリケーション キーを設定する必要があります。 |
datadog.appKeyExistingSecret | datadog.appKey の代わりに、キー名 app-key で設定した Datadog アプリキーを含む既存の Kubernetes Secret の名前を指定します。 |
datadog.logLevel | ロギングの冗長性を設定します。これはコンテナによってオーバーライドできます。有効なログレベルは trace 、debug 、info 、warn 、error 、critical 、off です。デフォルト: info 。 |
registry | すべての Agent イメージに使用するイメージレジストリ。デフォルト: gcr.io/datadoghq 。 |
datadog.site | Agent データを送信する Datadog インテークサイトを設定します。サイトは です。(右側で正しい SITE が選択されていることを確認してください)。 |
datadog.tags | 収集したメトリクス、イベント、サービスチェックにアタッチするタグのリスト。 |
Helm チャートの環境変数の完全なリストについては、datadog-values.yaml
のオプションの完全なリストを参照してください。
環境変数 | 説明 |
---|
DD_API_KEY | Datadog 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_RUNNERS | Agent はデフォルトですべてのチェックを同時に実行します (デフォルト値 = 4 ランナー)。チェックを順次実行するには、値を 1 に設定します。多くのチェック (または遅いチェック) を実行する必要がある場合、collector-queue コンポーネントが遅れてヘルスチェックに失敗する可能性があります。ランナーの数を増やすことで、チェックを並列に実行することができます。 |
DD_LEADER_ELECTION | Agent の複数のインスタンスがクラスターで動作している場合、イベント収集の重複を避けるためにこの変数を 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_DETECTION | Unix ソケットのメトリクス用にコンテナの検出とタグ付けを有効にします。 |
DD_DOGSTATSD_TAGS | この DogStatsD サーバーが受信するすべてのメトリクス、イベント、サービスのチェックに付加する追加タグ。たとえば "env:golden group:retrievers" のように追加します。 |
タグマッピングの構成
Datadog は Kubernetes から共通のタグを自動的に収集します。
さらに、Kubernetes ノードラベル、ポッドラベル、アノテーションを Datadog タグにマッピングすることができます。このマッピングを構成するには、以下の環境変数を使用します。
パラメーター (v2alpha1) | 説明 |
---|
global.namespaceLabelsAsTags | Kubernetes ネームスペースラベルと Datadog タグのマッピングを提供します。<KUBERNETES_NAMESPACE_LABEL>: <DATADOG_TAG_KEY> |
global.nodeLabelsAsTags | Kubernetes ノードラベルと Datadog タグのマッピングを提供します。<KUBERNETES_NODE_LABEL>: <DATADOG_TAG_KEY> |
global.podAnnotationsAsTags | Kubernetes アノテーションと Datadog タグのマッピングを提供します。<KUBERNETES_ANNOTATION>: <DATADOG_TAG_KEY> |
global.podLabelsAsTags | Kubernetes ラベルと 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.namespaceLabelsAsTags | Kubernetes ネームスペースラベルと Datadog タグのマッピングを提供します。<KUBERNETES_NAMESPACE_LABEL>: <DATADOG_TAG_KEY> |
datadog.nodeLabelsAsTags | Kubernetes ノードラベルと Datadog タグのマッピングを提供します。<KUBERNETES_NODE_LABEL>: <DATADOG_TAG_KEY> |
datadog.podAnnotationsAsTags | Kubernetes アノテーションと Datadog タグのマッピングを提供します。<KUBERNETES_ANNOTATION>: <DATADOG_TAG_KEY> |
datadog.podLabelsAsTags | Kubernetes ラベルと 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.running
、kubernetes.pods.running
、docker.containers.running
、.stopped
、.running.total
、.stopped.total
の各メトリクスは、この設定の影響を受けません。すべてのコンテナを対象とします。
プロキシ設定
Agent v6.4.0 (トレース Agent の場合は v6.5.0) より、以下の環境変数を使用して Agent のプロキシ設定を上書きできるようになりました。
環境変数 | 説明 |
---|
DD_PROXY_HTTP | http リクエスト用のプロキシとして使用する HTTP URL です。 |
DD_PROXY_HTTPS | https リクエスト用のプロキシとして使用する HTTPS URL です。 |
DD_PROXY_NO_PROXY | プロキシを使用すべきではない場合に必要となる、URL をスペースで区切ったリストです。 |
DD_SKIP_SSL_VALIDATION | Agent と 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_EVENTS | Agent でのイベント収集を有効にします。クラスターで複数の Agent インスタンスを実行している場合は、DD_LEADER_ELECTION も true に設定します。 |
リスナーおよび構成プロバイダーを追加するには、DD_EXTRA_LISTENERS
と DD_EXTRA_CONFIG_PROVIDERS
の環境変数を使用します。これらは datadog.yaml
構成ファイルの listeners
セクションと config_providers
セクションに定義する変数に追加されます。