Kubernetes タグ抽出

Agent は、タグを作成し、ラベルまたはアノテーションに基づいてポッドが発行するすべてのメトリクス、トレース、ログに割り当てることができます。

ホスト上で Agent をバイナリとして実行している場合は、Agent タブの手順を使用してタグ抽出を構成します。Kubernetes クラスターで Agent をコンテナとして実行している場合は、コンテナ化された Agent タブの手順でタグ抽出を構成します。

すぐに使えるタグ

Agent は、タグを自動検出して、ポッド全体またはこのポッド内の個別のコンテナにより送信されたすべてのデータにアタッチします。自動的にアタッチされるタグのリストは、Agent のカーディナリティコンフィギュレーションに基づきます。

タグ粒度ソース要件
container_idポッドステータスN/A
display_container_nameポッドステータスN/A
pod_nameオーケストレーターポッドメタデータN/A
oshift_deploymentオーケストレーターポッドアノテーション openshift.io/deployment.nameOpenShift 環境およびポッドアノテーションが必要
kube_ownerref_nameオーケストレーターポッド ownerrefポッドにオーナーが必要
kube_jobオーケストレーターポッド ownerrefポッドはジョブにアタッチされていることが必要
kube_jobポッド ownerref
ポッドは cronjob にアタッチされていることが必要
kube_replica_setポッド ownerrefポッドはレプリカセットにアタッチされていることが必要
kube_serviceKubernetes サービスディスカバリーポッドは Kubernetes サービスの後方にあることが必要
kube_daemon_setポッド ownerrefポッドは DaemonSet セットにアタッチされていることが必要
kube_container_nameポッドステータスN/A
kube_namespaceポッドメタデータN/A
kube_app_nameポッドラベル app.kubernetes.io/nameポッドラベルが必要
kube_app_instanceポッドラベル app.kubernetes.io/instanceポッドラベルが必要
kube_app_versionポッドラベル app.kubernetes.io/versionポッドラベルが必要
kube_app_componentポッドラベル app.kubernetes.io/componentポッドラベルが必要
kube_app_part_ofポッドラベル app.kubernetes.io/part-ofポッドラベルが必要
kube_app_managed_byポッドラベル app.kubernetes.io/managed-byポッドラベルが必要
envポッドラベル tags.datadoghq.com/env またはコンテナ envvar DD_ENV統合サービスタグ付け有効
versionポッドラベル tags.datadoghq.com/version or container envvar DD_VERSION統合サービスタグ付け有効
serviceポッドラベル tags.datadoghq.com/service or container envvar DD_SERVICE統合サービスタグ付け有効
pod_phaseポッドステータスN/A
oshift_deployment_configポッドアノテーション openshift.io/deployment-config.nameOpenShift 環境およびポッドアノテーションが必要
kube_ownerref_kindポッド ownerrefポッドにオーナーが必要
kube_deploymentポッド ownerrefポッドはデプロイにアタッチされていることが必要
kube_replication_controllerポッド ownerrefポッドはレプリケーションコントローラーにアタッチされていることが必要
kube_stateful_setポッド ownerrefポッドは statefulset にアタッチされていることが必要
persistentvolumeclaimポッド仕様PVC がポッドにアタッチされていることが必要
kube_cronjobポッド ownerrefポッドは cronjob にアタッチされていることが必要
image_nameポッド仕様N/A
short_imageポッド仕様N/A
image_tagポッド仕様N/A
eks_fargate_nodeポッド仕様
EKS Fargate 環境

ホストタグ

Agent は Kubernetes 環境情報を “host tags” としてアタッチできます。

タグ粒度ソース要件
kube_cluster_nameDD_CLUSTER_NAME envvar またはクラウドプロバイダーインテグレーションDD_CLUSTER_NAME envvar またはクラウドプロバイダー有効
kube_node_roleノードラベル node-role.kubernetes.io/<role>ノードラベルが必要

タグのオートディスカバリー

Agent v6.10 以降では、Agent はポッドアノテーションからタグを自動検出できます。これにより、Agent は、ポッド全体またはこのポッド内の個々のコンテナから発行されるすべてのデータにタグを関連付けることができます。

Datadog では、コンテナ化環境のベストプラクティスとして、統合サービスタグ付けを使用してタグを統合することをおすすめしています。統合サービスタグ付けは、envserviceversion の 3 つの標準タグを使用して Datadog テレメトリーと結合します。ご使用環境で統合タグ付けを構成する方法に関する詳細は、統合サービスタグ付けドキュメントをご参照ください。

<タグキー>:<タグ値> タグを特定のポッドから発行され、Agent によって収集されたすべてのデータに適用するには、ポッドで次のアノテーションを使用します。

annotations:
  ad.datadoghq.com/tags: '{"<タグキー>": "<タグ値>","<タグキー_1>": "<タグ値_1>"}'

ポッド内の個々のコンテナ <CONTAINER_IDENTIFIER><TAG_KEY>:<TAG_VALUE> タグを適用する場合は、ポッドで次のアノテーションを使用します。

annotations:
  ad.datadoghq.com/<コンテナ識別子>.tags: '{"<タグキー>": "<タグ値>","<タグキー_1>": "<タグ値_1>"}'

Agent v7.17 以降では、Agent は Docker ラベルからタグを自動検出できます。このプロセスにより、Agent は、Agent の datadog.yaml ファイルを変更することなく、コンテナによって発行されたすべてのデータにカスタムタグを関連付けることができます。

com.datadoghq.ad.tags: '["<タグキー>:タグ値", "<タグキー_1>:<タグ値_1>"]'

タグとしてのノードラベル

Agent v6.0 以降、Agent は特定のノードのラベルを収集し、それらをタグとして使用して、このノード上のすべてのポッドが発行するすべてのメトリクスにアタッチできます。

特定のノードラベル <ノードラベル> を抽出し、Datadog 内のタグキー <タグキー> として変換するには、次の環境変数を Datadog Agent に追加します。

DD_KUBERNETES_NODE_LABELS_AS_TAGS='{"<ノードラベル>": "<タグキー>"}'

たとえば、次のように設定できます。

DD_KUBERNETES_NODE_LABELS_AS_TAGS='{"app":"kube_app"}'

Agent v7.24.0 以降の場合、次の環境変数構成を使用して、すべてのノードラベルをタグとしてメトリクスに追加します。この例では、タグ名の前に <プレフィックス>_ が付いています。

DD_KUBERNETES_NODE_LABELS_AS_TAGS='{"*":"<PREFIX>_%%label%%"}'

: カスタムメトリクスは請求に影響を与える可能性があります。詳細については、カスタムメトリクスの請求ページを参照してください。

特定のノードラベル <ノードラベル> を抽出し、Datadog 内のタグキー <タグキー> として変換するには、Agent datadog.yaml 構成ファイルに次の構成ブロックを追加します。

kubernetes_node_labels_as_tags:
  <ノードラベル>: <タグキー>

たとえば、次のように設定できます。

kubernetes_node_labels_as_tags:
  app: kube_app

タグとしてのポッドラベル

Agent v6.0 以降、Agent は特定のポッドのラベルを収集し、それらをタグとして使用して、このポッドが発行するすべてのメトリクスにアタッチできます。

特定のポッドラベル <ポッドラベル> を抽出し、Datadog 内のタグキー <タグキー> として変換するには、次の環境変数を Datadog Agent に追加します。

DD_KUBERNETES_POD_LABELS_AS_TAGS='{"<ポッドラベル>": "<タグキー>"}'

たとえば、次のように設定できます。

DD_KUBERNETES_POD_LABELS_AS_TAGS='{"app":"kube_app"}'

Agent v6.8.0 以降の場合、次の環境変数構成を使用して、すべてのポッドラベルをタグとしてメトリクスに追加します。この例では、タグ名の前に <プレフィックス>_ が付いています。

DD_KUBERNETES_POD_LABELS_AS_TAGS='{"*":"<プレフィックス>_%%label%%"}'

: カスタムメトリクスは請求に影響を与える可能性があります。詳細については、カスタムメトリクスの請求ページを参照してください。

特定のポッドラベル <ポッドラベル> を抽出し、Datadog 内のタグキー <タグキー> として変換するには、Agent datadog.yaml 構成ファイルに次の構成ブロックを追加します。

kubernetes_pod_labels_as_tags:
  <ポッドラベル>: <タグキー>

たとえば、次のように設定できます。

kubernetes_pod_labels_as_tags:
  app: kube_app

Agent v6.8.0 以降の場合、次の環境変数構成を使用して、すべてのポッドラベルをタグとしてメトリクスに追加します。この例では、タグ名の前に <プレフィックス>_ が付いています。

kubernetes_pod_labels_as_tags:
  *: <プレフィックス>_%%label%%

: カスタムメトリクスは請求に影響を与える可能性があります。詳細については、[カスタムメトリクスの請求ページ][3]を参照してください。

タグとしてのポッドアノテーション

Agent v6.0 以降、Agent は特定のポッドのアノテーションを収集し、それらをタグとして使用して、このポッドが発行するすべてのメトリクスにアタッチできます。

特定のポッドラベル <ポッドアノテーション> を抽出し、Datadog 内のタグキー <タグキー> として変換するには、次の環境変数を Datadog Agent に追加します。

DD_KUBERNETES_POD_ANNOTATIONS_AS_TAGS='{"<ポッドアノテーション>": "<タグキー>"}'

たとえば、次のように設定できます。

DD_KUBERNETES_POD_ANNOTATIONS_AS_TAGS='{"app":"kube_app"}'

Agent v7.24.0 以降の場合、次の環境変数構成を使用して、すべてのポッドアノテーションをタグとしてメトリクスに追加します。この例では、タグ名の前に <プレフィックス>_ が付いています。

DD_KUBERNETES_POD_ANNOTATIONS_AS_TAGS='{"*":"<PREFIX>_%%annotation%%"}'

: カスタムメトリクスは請求に影響を与える可能性があります。詳細については、カスタムメトリクスの請求ページを参照してください。

特定のポッドアノテーション <ポッドアノテーション> を抽出し、Datadog 内のタグキー <タグキー> として変換するには、Agent datadog.yaml 構成ファイルに次の構成ブロックを追加します。

kubernetes_pod_annotations_as_tags:
  <ポッドアノテーション>: <タグキー>

たとえば、次のように設定できます。

kubernetes_pod_annotations_as_tags:
  app: kube_app

タグとしてのネームスペースラベル

Agent 7.27 以降、Agent は特定のネームスペースのラベルを収集し、それらをタグとして使用して、このネームスペースのすべてのポッドが発行するすべてのメトリクスにアタッチできます。

特定のネームスペースラベル <NAMESPACE_LABEL> を抽出し、Datadog 内のタグキー <TAG_KEY> として変換するには、次の環境変数を Datadog Agent に追加します。

DD_KUBERNETES_NAMESPACE_LABELS_AS_TAGS='{"<NAMESPACE_LABEL>": "<TAG_KEY>"}'

たとえば、次のように設定できます。

DD_KUBERNETES_NAMESPACE_LABELS_AS_TAGS='{"app":"kube_app"}'

次の環境変数コンフィギュレーションを使用して、すべてのポッドラベルをタグとしてメトリクスに追加します。この例では、タグ名の前に <PREFIX>_ が付いています。

DD_KUBERNETES_NAMESPACE_LABELS_AS_TAGS='{"*":"<PREFIX>_%%label%%"}'

: カスタムメトリクスは請求に影響を与える可能性があります。詳細については、カスタムメトリクスの請求ページを参照してください。

特定のネームスペースラベル <NAMESPACE_LABEL> を抽出し、Datadog 内のタグキー <TAG_KEY> として変換するには、Agent datadog.yaml 構成ファイルに次の構成ブロックを追加します。

kubernetes_namespace_labels_as_tags:
  <NAMESPACE_LABEL>: <TAG_KEY>

たとえば、次のように設定できます。

kubernetes_namespace_labels_as_tags:
  app: kube_app

タグとしてのコンテナ環境変数

Agent v7.32+ から、Agent はコンテナ環境変数を収集し、コンテナに対応するすべてのメトリクスにアタッチするタグとして使用することができます。dockercontainerd の両方のコンテナがサポートされています。

特定の環境変数 <ENV_VAR> を抽出し、Datadog 内のタグキー <TAG_KEY> として変換するには、次の環境変数を Datadog Agent に追加します。

DD_CONTAINER_ENV_AS_TAGS='{"<ENV_VAR>": "<TAG_KEY>"}'

例:

DD_CONTAINER_ENV_AS_TAGS='{"app":"kube_app"}'

: カスタムメトリクスは請求に影響を与える可能性があります。詳細については、カスタムメトリクスの請求を参照してください。

特定の環境変数 <ENV_VAR> を抽出し、Datadog 内のタグキー <TAG_KEY> として変換するには、Agent datadog.yaml 構成ファイルに次の構成ブロックを追加します。

container_env_as_tags:
  <ENV_VAR>: <TAG_KEY>

例:

container_env_as_tags:
  app: kube_app

タグとしてのコンテナラベル

Agent v7.33+ から、Agent はコンテナラベルを収集し、タグとして使用することができます。Agent は、コンテナに関連するすべてのメトリクスにタグを付けます。 Agent は、dockercontainerd の両方のコンテナラベルからタグを生成することができます。containerd の場合は、v1.5.6 が最低限サポートされるバージョンです。

特定のコンテナラベル <CONTAINER_LABEL> を抽出し、タグキー <TAG_KEY> に変換するには、次の環境変数を Datadog Agent に追加します。

DD_CONTAINER_LABELS_AS_TAGS='{"<CONTAINER_LABEL>":"<TAG_KEY>"}'

例:

DD_CONTAINER_LABELS_AS_TAGS='{"app":"kube_app"}'

: カスタムメトリクスは請求に影響を与える可能性があります。詳細については、カスタムメトリクスの請求を参照してください。

特定のコンテナラベル <CONTAINER_LABEL> を抽出し、タグキー <TAG_KEY> に変換するには、Agent datadog.yaml 構成ファイルに次の構成ブロックを追加します。

container_labels_as_tags:
  <CONTAINER_LABEL>: <TAG_KEY>

例:

container_labels_as_tags:
  app: kube_app

その他の参考資料