概要
タグ付けは、監視するマシンとメトリクスにクエリを実行するために Datadog 全体で使用されます。タグに基づく割り当てと絞り込みの機能がないと、環境内の問題を発見し、絞り込んで根本的な原因を見つけることが難しくなります。先に進む前に、Datadog でのタグの定義方法を学習してください。
タグはさまざまな方法で構成することができます。
コンテナ化環境では、Datadog でオートディスカバリーを使用することを推奨します。統合サービスタグ付けが可能となるため、すべての Datadog テレメトリーのコンフィギュレーションを管理する単体ポイントとして機能します。
オートディスカバリーの目的は、任意のコンテナに対する Agent チェックの実行中に Datadog インテグレーションのコンフィギュレーションを適用することです。オートディスカバリーを使用すると、Datadog Agent は新しいコンテナで実行されているサービスを自動で識別し、対応するモニタリングのコンフィギュレーションを検索してメトリクスの収集を開始します。タグはその後、オートディスカバリーのコンフィギュレーションテンプレート内で構成することができます。
オートディスカバリーを使用しない場合、Agent は自動でホストタグを割り当て、非コンテナ化環境の場合と同様にインテグレーションからタグを継承します。これらのタグは、手動で追加されたタグと併せて、Datadog Agent のコンフィギュレーションファイル内で構成が可能です。
タグの割り当て方法
構成ファイル
ファイルの場所
Agent コンフィギュレーションファイル (datadog.yaml
) は、Datadog Agent によって転送されるすべてのメトリクス、トレース、ログに適用されるホストタグの設定に使用されます。
Agent とともにインストールされるインテグレーションのタグは、Agent インストールの conf.d ディレクトリにある YAML ファイルで構成されます。コンフィギュレーションファイルの場所については、Agent コンフィギュレーションファイルを参照してください。
YAML 形式
YAML ファイルでは、tags
キーの下の文字列のリストを使用してタグのリストを割り当てます。YAML では、リストは 2 つの異なるが機能的に同等の形式で定義されます。
tags: ["<キー_1>:<値_1>", "<キー_2>:<値_2>", "<キー_3>:<値_3>"]
または
tags:
- "<キー_1>:<値_1>"
- "<キー_2>:<値_2>"
- "<キー_3>:<値_3>"
タグは <キー>:<値>
のペアで割り当てることをお勧めしますが、キー(<キー>
)のみで構成されるタグも使用できます。詳細については、タグの定義を参照してください。
ホストタグ
ホスト名 (タグキー host
) は、Datadog Agent によって自動的に割り当てられます。ホスト名をカスタマイズするには、Agent コンフィギュレーションファイル datadog.yaml
を使用します。
# ホスト名を設定します (デフォルト: 自動検出)
# RFC-1123 に準拠する必要があり、以下のみが許可されます。
# "A" ~ "Z"、"a" ~ "z"、"0" ~ "9"、ハイフン (-)
hostname: mymachine.mydomain
ホスト名の変更
- 古いホスト名は 2 時間にわたって UI に残存しますが、新しいメトリクスは表示されません。
- 古いホスト名を持つホストからのデータは、API でクエリを実行できます。
- 古いホスト名と新しいホスト名のグラフ メトリクスを 1 つのグラフに表示するには、2 メトリクス間の数式を使用します。
ファイルの場所
Agent コンフィギュレーションファイル (datadog.conf
) は、Datadog Agent によって転送されるすべてのメトリクス、トレース、ログに適用されるホストタグの設定に使用されます。
Agent とともにインストールされるインテグレーションのタグは、Agent インストールの conf.d ディレクトリにある YAML ファイルで構成されます。コンフィギュレーションファイルの場所については、Agent コンフィギュレーションファイルを参照してください。
YAML 形式
YAML ファイルでは、tags
キーの下の文字列のリストを使用してタグのリストを割り当てます。YAML では、リストは 2 つの異なるが機能的に同等の形式で定義されます。
tags: <キー_1>:<値_1>, <キー_2>:<値_2>, <キー_3>:<値_3>
タグは <キー>:<値>
のペアで割り当てることをお勧めしますが、キー(<キー>
)のみで構成されるタグも使用できます。詳細については、タグの定義を参照してください。
ホストタグ
ホスト名 (タグキー host
) は、Datadog Agent によって自動的に割り当てられます。ホスト名をカスタマイズするには、Agent コンフィギュレーションファイル datadog.conf
を使用します。
# ホスト名を設定します (デフォルト: 自動検出)
# RFC-1123 に準拠する必要があり、以下のみが許可されます。
# "A" ~ "Z"、"a" ~ "z"、"0" ~ "9"、ハイフン (-)
hostname: mymachine.mydomain
ホスト名の変更
- 古いホスト名は 2 時間 UI に残りますが、新しいメトリクスは表示されません。
- 古いホスト名を持つホストからのデータは、API でクエリを実行できます。
- 古いホスト名と新しいホスト名のグラフ メトリクスを 1 つのグラフに表示するには、2 メトリクス間の数式を使用します。
インテグレーションの継承
タグの付け方で最も効率的な方法は、インテグレーションの継承に依存することです。AWS インスタンス、Chef レシピ、およびその他のインテグレーションに割り当てるタグは、Datadog に送信するホストとメトリクスによって自動的に継承されます。
コンテナ化環境では、統合サービスタグ付けのドキュメントに従って、すべての Datadog テレメトリーのコンフィギュレーションを管理する単一ポイントを構築することをお勧めします。
クラウドインテグレーション
クラウドインテグレーションは認証ベースです。Datadog では、メインのクラウドインテグレーションタイル(AWS、Azure、Google Cloud など)を使用し、可能な場合は Agent をインストールすることを推奨しています。注: Agent のみの使用を選択した場合、一部のインテグレーションタグは利用できません。
ウェブインテグレーション
ウェブインテグレーションは認証ベースです。メトリクスは API 呼び出しで収集されます。注: CamelCase
タグは、Datadog によってアンダースコアに変換されます(例: TestTag
–> test_tag
)。
環境変数
コンテナ化された Datadog Agent をインストールしたら、Agent のメインコンフィギュレーションファイルにある環境変数 `DD_TAGS を使用してホストタグを設定します。
Datadog は Docker、Kubernetes、ECS、Swarm、Mesos、Nomad、Rancher から一般的なタグを自動的に収集します。さらに多くのタグを抽出するには、次のオプションを使用します。
環境変数 | 説明 |
---|
DD_CONTAINER_LABELS_AS_TAGS | コンテナラベルを抽出します。この環境は、古い DD_DOCKER_LABELS_AS_TAGS 環境と同等です。 |
DD_CONTAINER_ENV_AS_TAGS | コンテナ環境変数を抽出します。この環境は、古い DD_DOCKER_ENV_AS_TAGS 環境と同等です。 |
DD_KUBERNETES_POD_LABELS_AS_TAGS | ポッドラベルを抽出します |
DD_CHECKS_TAG_CARDINALITY | チェックメトリクスにタグを追加 (低、オーケストレーター、高) |
DD_DOGSTATSD_TAG_CARDINALITY | カスタムメトリクスにタグを追加 (低、オーケストレーター、高) |
例:
DD_KUBERNETES_POD_LABELS_AS_TAGS='{"app":"kube_app","release":"helm_release"}'
DD_CONTAINER_LABELS_AS_TAGS='{"com.docker.compose.service":"service_name"}'
DD_KUBERNETES_POD_LABELS_AS_TAGS
を使用する場合、次の形式のワイルドカードを使用できます。
たとえば、{"app*", "kube_%%label%%"}
は、ラベル application
のタグ名 kube_application
に解決されます。さらに、{"*": "kube_%%label%%"}
は、すべてのポッドラベルを kube_
で始まるタグとして追加します。
Docker Swarm docker-compose.yaml
ファイル内で DD_CONTAINER_LABELS_AS_TAGS
変数を使用する場合は、次の例のように、アポストロフィーを削除します。
- DD_CONTAINER_LABELS_AS_TAGS={"com.docker.compose.service":"service_name"}
Docker コンテナにラベルを追加する際は、docker-compose.yaml
ファイル内で labels:
キーワードをどこに配置するかが重要となります。スムーズに設定が進むよう、Docker の統合サービスタグ付けに関するドキュメントを参照してください。
このコンフィギュレーションの外部でコンテナにラベル付けを行う必要がある場合は、labels:
キーワードを services:
セクションの 内部に配置します。deploy:
セクション内に含めないよう注意してください。labels:
キーワードを deploy:
セクション内に配置するのは、サービスに対してラベル付けが必要な場合のみです。この配置が正しくないと、Datadog Agent はコンテナからラベルを抽出することができません。
以下は docker-compose.yaml
ファイル内でこの設定を行う場合のサンプルです。この例では myapplication:
セクション、my.custom.label.project
、my.custom.label.version
のそれぞれに固有の値が割り振られます。datadog:
セクションの DD_CONTAINER_LABELS_AS_TAGS
環境変数を使用してラベルを抽出し、myapplication
コンテナ用のタグを生成します。
myapplication
コンテナ内のラベル: my.custom.label.project
my.custom.label.version
Agent がコンテナからラベルを抽出すると、タグは次のようになります。
projecttag:projectA
versiontag:1
サンプル docker-compose.yaml:
services:
datadog:
volumes:
- '/var/run/docker.sock:/var/run/docker.sock:ro'
- '/proc:/host/proc:ro'
- '/sys/fs/cgroup/:/host/sys/fs/cgroup:ro'
environment:
- DD_API_KEY= "<DATADOG_API_KEY>"
- DD_CONTAINER_LABELS_AS_TAGS={"my.custom.label.project":"projecttag","my.custom.label.version":"versiontag"}
- DD_TAGS="key1:value1 key2:value2 key3:value3"
image: 'gcr.io/datadoghq/agent:latest'
deploy:
restart_policy:
condition: on-failure
mode: replicated
replicas: 1
myapplication:
image: 'myapplication'
labels:
my.custom.label.project: 'projectA'
my.custom.label.version: '1'
deploy:
restart_policy:
condition: on-failure
mode: replicated
replicas: 1
変数は、カスタムの datadog.yaml
で定義するか、環境変数で JSON マップとして設定します。マップキーはソース (label/envvar
) 名、マップ値は Datadog タグ名です。
タグカーディナリティ
タグカーディナリティを設定する環境変数は、DD_CHECKS_TAG_CARDINALITY
と DD_DOGSTATSD_TAG_CARDINALITY
の 2 つあります。DogStatsD の料金設定が異なるため、それに応じて DogStatsD タグカーディナリティも細かく構成できるように分けられています。それ以外は、これらの変数は同じように機能します。使用できる値は、low
、orchestrator
、または high
です。どちらもデフォルトは low
で、ホストレベルのタグを取り込みます。
カーディナリティによって、Kubernetes と OpenShift と Docker、Rancher、Mesos では異なるタグがすぐに使えるように用意されています。ECS と Fargate では、変数を orchestrator
に設定すると、task_arn
タグが追加されます。
トレース
Datadog トレーサーは環境変数、システムプロパティ、またはコード内のコンフィギュレーションを通じて構成することができます。 各トレーサーのタグ付けオプションとコンフィギュレーションの情報は、Datadog トレーシング設定に関するドキュメントを参照してください。統合サービスタグ付けのドキュメントでも、統合サービスタグ付け用のトレーサーを構成する方法をご覧いただけます。
使用するトレーサーの種類に関わらず、スパンメタデータはタイプ化された 3 つの構造を考慮する必要があります。ツリーの各ノードは .
で分割され、各ノードのタイプは 1 つのみとなります。
たとえば、ノードをオブジェクト (およびサブノード) と文字列の両方に設定することはできません。
{
"key": "value",
"key.subkey": "value_2"
}
上記のスパンメタデータは、key
の値が文字列 ("value"
) を参照できないこと、またサブツリー ({"subkey": "value_2"}
) であることから無効となります。
UI
Host Map ページを使って UI でホストタグを割り当てます。ページの下部にホストオーバーレイを表示するには、六角形(ホスト)をクリックします。次に、User セクションで Add Tags ボタンをクリックします。タグをカンマで区切って入力し、Save Tags をクリックします。UI で行ったホストタグの変更が適用されるまで最大 5 分かかることがあります。
Infrastructure List ページを使って UI でホストタグを割り当てます。ページの右にホストオーバーレイを表示するには、ホストをクリックします。次に、User セクションで Add Tags ボタンをクリックします。タグをカンマ区切りリストで入力し、Save Tags をクリックします。UI でホストタグに加えた変更は、適用されるまでに最大 5 分かかる場合があります。タグを追加したら、タグが UI に表示されていることを確認してから、さらにタグを追加してください。
Manage Monitors ページで、各モニターの隣にあるチェックボックスをオンにしてタグを追加します (1 つ以上のモニターを選択します)。Edit Tags ボタンをクリックします。タグを入力するか、以前に使用したタグを選択します。次に Add Tag tag:name
または Apply Changes をクリックします。以前にタグを追加してある場合は、タグチェックボックスを使用して一度に複数のタグを割り当てることができます。詳しくは、モニターの管理ドキュメントを参照してください。
モニターを作成する場合は、ステップ 4 Say what’s happening または Notify your Team でモニタータグを割り当てます。
最大 10 個のタグの許可リストをメトリクスに適用することにより、Distribution Metrics 内でパーセンタイル集計を作成します。これにより、タグ値の潜在的にクエリ可能な組み合わせの時系列が作成されます。ディストリビューションメトリクスから出力されるカスタムメトリクスと時系列のカウントの詳細については、カスタムメトリクスを参照してください。
最大 10 個のタグを適用します。除外タグは使用できません。
AWS インテグレーション タイルでは、アカウント レベルですべてのメトリクスに追加のタグを割り当てることができます。<KEY>:<VALUE>
の形式で、タグのカンマ区切りのリストを使用します。
SLO を作成する場合は、ステップ 3 Add name and tags でタグを割り当てます。
API
Datadog API では、タグはさまざまな方法で割り当てることができます。これらのセクションへのリンクは、以下のリストを参照してください。
Datadog 内でのタグ付けは、メトリクスを収集する強力な方法です。簡単な例として、Web サイト (example.com) の次のメトリクスの合計を探しているとします。
Web server 1: api.metric('page.views', [(1317652676, 100), ...], host="example_prod_1")
Web server 2: api.metric('page.views', [(1317652676, 500), ...], host="example_prod_2")
Datadog は、タグ domain:example.com
を追加し、ホスト名を省略することをお勧めします(Datadog API がホスト名を自動的に決定します)。
Web server 1: api.metric('page.views', [(1317652676, 100), ...], tags=['domain:example.com'])
Web server 2: api.metric('page.views', [(1317652676, 500), ...], tags=['domain:example.com'])
domain:example.com
タグで、複数のホストのページビューを合計できます。
sum:page.views{domain:example.com}
ホストによって分割するには、次のようにします。
sum:page.views{domain:example.com} by {host}
DogStatsD
DogStatsD に送信したタグをメトリクス、イベント、サービスチェックに追加します。たとえば、アルゴリズムのバージョンでタイマー メトリクスをタグ付けして、2 つのアルゴリズムのパフォーマンスを比較します。
@statsd.timed('algorithm.run_time', tags=['algorithm:one'])
def algorithm_one():
# 何らかの処理 ...
@statsd.timed('algorithm.run_time', tags=['algorithm:two'])
def algorithm_two():
# 何らかの処理 (速度を比較) ...
注: タグ付けは、StatsD の Datadog 固有の拡張機能です。
host
タグを DogStatsD メトリクスに割り当てる場合は、特別な考慮事項が必要です。ホスト タグ キーの詳細については、DogStatsD セクションを参照してください。
その他の参考資料