Datadogのタグに関して調べみた


## インスタンンに付与したタグの確認　(チームメンバー視点)

ダッシュボードから`Infrastructure`タブを選択すると、次のように監視対象になっているインスタンスの一覧が表示されます。この画面でマウスをホスト名の横あたりに持っていくと`inspect`というグレーのボタンが表されます。

![Screen Shot 2014-11-18 at 13.09.18.png](https://qiita-image-store.s3.amazonaws.com/0/53101/bc5fce55-4359-ed44-3dac-0a34f26a046d.png "Screen Shot 2014-11-18 at 13.09.18.png")


この`inspect` ボタンをクリックすると、右側からスライドインが現れ、インスタンスの付与されているタグの情報を確認することがでいます。

![Screen Shot 2014-11-18 at 13.09.48.png](https://qiita-image-store.s3.amazonaws.com/0/53101/a55d4dcf-30d6-6ff1-333b-7432c6972ddf.png "Screen Shot 2014-11-18 at 13.09.48.png")

このホストでは、 **Chef**と **AWS**に関連するタグが各種設定されているのがわかります。これだけタグが付されていれば、ドリルダウン時に自由自在に情報を検索できそうですよね。

## イベントに付与したタグの確認　(チームメンバー視点)

イベントに付されているタグは、イベントストリームで簡単に見つけることができます。これらのタグの`[key]:[value]`の構造をみていると、イベントを検索する際に、`source:[value]`と合わせてどんな文字列を入力をすれば良いか一目瞭然ですよね。

![events_tag.png](https://qiita-image-store.s3.amazonaws.com/0/53101/2bc04ccf-cf2d-4d76-2517-294d511e0748.png "events_tag.png")


## APIを使ったタグの確認 (プログラマ視点)

各プログラミング言語でAPIライブラリーをimportできる準備をした後:

### 登録アカウントでモニタリングしているインフラ全体のタグを取得する。

```
from dogapi import dog_http_api as api

api.api_key = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
api.application_key = 'ffffffffffffffffffffffffffffff'

api.all_tags()
```

問い合わせの結果: [辞書型]

```
{'role:database','env:test': ['test.metric.host']}
```

### 特定ホストに関連したタグのリストを取得する。

```
from dogapi import dog_http_api as api

api.api_key = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
api.application_key = 'ffffffffffffffffffffffffffffff'

# Get tags by host id.
api.host_tags('108816')

```

問い合わせの結果: [リスト型]

```
['role:database','env:test']
```

詳しくは、datadogドキュメントの[API Reference](http://docs.datadoghq.com/api/)を参照すると詳しく書かれています。


## タグの種類と制限

### Datadogでタグが付与できる情報

* event情報
* メトリクス情報
* ホスト情報


### タグの記述方法 (管理者視点)

検索軸の自由度によって、タグの表記は次の２種類があります。

1. `[key]:[value]`　(文字列をカンマで繋いだのも)
2. `[value]`　(文字列のみ)

Datadogでは後者のタグも受け付けていますが、次の理由で前者のタグを採用することをお勧めします。

* グラフ表示や検索の際にkeyのみに対応したブルダウンメニューがUIに存在している。
* [key]をベースにグラフの積み上げ表示などか簡単にできる。
* メトリクス分析の将来的なニーズに備えるために、1次元高い分析軸を準備しておく。


### タグの付与ルール (管理者視点)

* 禁止文字: `device`, `host`, `source`は[key]の部分には使えません。Datadog Agentが使ってます。
* `env`, `instance`, `name`, `role`は、一般的によく使われる[key]になります。
* 付与するタグの制限: メトリクス毎に **1000個**まで。


## カスタムタグが設定できる場所 (管理者視点)

### DogStatsD 経由の情報

**タグ付けできる情報の種類**

* メトリクス
* イベント

**関連ドキュメント**

* [Sending Metrics with DogStatsD](http://docs.datadoghq.com/guides/metrics/) [日本語訳](http://221.249.136.53/ja/guides/metrics/)
* [Getting Started with DogStatsD](http://docs.datadoghq.com/guides/dogstatsd/) [日本語訳](http://221.249.136.53/ja/guides/dogstatsd/)


### Datadog Agentのログパース機能を使った場合

**タグ付けできる情報の種類**

* ホスト

**関連ドキュメント**

* [Log Parsing in the Agent](http://docs.datadoghq.com/guides/logs/) [日本語訳](http://221.249.136.53/ja/guides/logs/)


### Service Checkの場合 

**タグ付けできる情報の種類**

* イベント

**関連ドキュメント**

* [Setting up Service Checks](http://docs.datadoghq.com/guides/services_checks/) [日本語訳](http://221.249.136.53/ja/guides/services_checks/)

### Agent Checkの場合

**タグ付けできる情報の種類**

* イベント

**関連ドキュメント**

* [Writing an Agent Check](http://docs.datadoghq.com/guides/agent_checks/) [日本語訳](http://221.249.136.53/ja/guides/agent_checks/)


### Datadog Agentの設定ファイルの変更

**タグ付けできる情報の種類**

* ホスト

**関連ドキュメント**

* [Getting Started with the Agent](http://docs.datadoghq.com/guides/basic_agent_usage/)以下の各OSのページの設定の部分 [日本語訳](http://221.249.136.53/ja/guides/basic_agent_usage/)


### APIによるタグ設定の場合

**タグ付けできる情報の種類**

* ホスト

**関連ドキュメント**

* [API Reference](http://docs.datadoghq.com/api/)


### Datadogのダッシュボード

**タグ付けできる情報の種類**

* ホスト

**設定方法**

* `Infrastructures`タブで表示したインフラ一覧の各インスタンスの`inspect`ボタンで表示したスライドインの`Edit User Tags`から入力。ユーザーが手動で設定した"ホスト"タグです。
(ユーザに紐付いたダグではありません。)

---

**最後に、もしもこの投稿を読んでDatadogの本当の魅力について知りたいと思うなら、[signup](https://app.datadoghq.com/signup)ページからフリートライアルに申し込んでみてほしい。**