Datadogのタグのお話

## 最初に
今回はDatadogの **タグとその操作** について基本的な操作を書いていこうと思います。
Datadog使ったことある方ならご存知かと思いますが、実はDatadog使用する上ではこのタグが **めちゃくちゃ重要** になってきます。

本記事ではDatadogにおけるタグについて簡単に触れつつ、操作方法についても触れていこうと思います。
詳しく知りたいという方は記事の最後にリファレンスを載せているのでそちらを参考に。

参考までにhostマップでタグによるフィルターをかけるとこんな感じで動的に動いて~~楽しいです~~くれ、絞り混んだ結果をこのまま確認できたりするので、高稼働なインスタンスで何かが起きているかなど俯瞰的に確認できます。
![Screen Recording 2021-12-09 at 05.30.56 PM.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/382072/0e0a40b8-5b9c-ced0-70c5-7649a08d0459.gif)

## 目次
- 本編
    - Datadogにおけるタグとは
    - タグの編集方法
        - UIから
        - Datadog-Agentから
        - APIから
    - 権限をまとめた図
- 終わりに
- リファレンス

## 本編
### Datadogにおけるタグとは
Cloudサービス上でホストやコンテナにタグを付与することはよくあると思いますが、Datadog-Agentを利用することでAgentを経由して得た情報に対してDatadog上からもタグを付与することが可能です。
例えば以下の図のように、AWS上で稼働しているインスタンスにDatadog-AgentをインストールするとDatadog上からもインスタンスを確認でき、それに対してDatadog管理のタグとしてタグを付与します。
ちなみに、Datadog上から操作できるタグはDatadogが管理するタグのみです！Cloudサービス上で付与したタグやhostの情報などはReadのみなので、APIなどの操作で誤ってCloudサービス上のも全部消してしまう！とかはないので安心ですね！

![Screenshot 2021-12-09 at 16.34.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/382072/f9008c1e-fd1a-36e2-9d79-41b3bdd962f1.png)

また、付与したタグはAgent経由で収集したメトリクスやログの情報でも保持されるので、それを使用してフィルターをかけたり検索をすることが可能です。

### タグの編集方法
タグの編集方法は4つあります。

- datadog.yaml(Agentの構成ファイル)に記述する。
- DatadogのWebアプリ(以下Datadog UI)から直接編集する。
- Datadog APIからリクエストを送る。
- DogstatD経由でメトリクスを送信する際に行う。

※DogststD経由は時間の都合上割愛します(そのうち試したい)。

今回は以下の環境でさっくり試していきます。

- EC2(Amazon Linux2)
- Datadog agent - v7.32.1

まっさらなEC2にAgentをインストールするとこのようになります。
![Screenshot 2021-12-10 at 9.52.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/382072/f169169a-2377-215c-b5ea-07c5739d83f4.png)

セクションは大きく3つに分かれています。

- Datadog Agent
    - datadog.yamlで設定したタグとインスタンスIDが表示される
- AWS
    - AWS側で手動で付与したタグとAZやregionなど付属情報もタグとして表示される
- User
    - Datadog UIとAPIで設定したタグが表示される

#### UIから
User > Edit Tags でタグを追加できます。ここで追加できるのは**Userセクションのタグ**のみだということに注意してください。
タグをコロン繋ぎで入力し、右側のプラスボタンを押して追加した後、**Save Tags**でタグの保存が可能です。
削除は次の画像の状態で削除したいタグのXボタンをクリックして**Save Tags**で削除できます。
![Screenshot 2021-12-11 at 19.38.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/382072/98cefab3-d7e7-81b0-e267-b68b4813f54a.png)
保存後に画面上で確認できるようになるまで約5分ほどかかります。体感的には1,2分で別画面行って戻ってきたら反映されてる気がします。

タグの確認の面ではセクションも分かれているので、直感的に見える点では優れています。
編集などの点では反映まで少し時間がかかるので注意ですね。


#### Datadog-Agentから
Agent側ではdatadog.yamlから設定可能です。

```
sudo vi /etc/datadog-agent/datadog.yaml
```

tagsとその下の行をコメントインして任意のタグに変更します。

```yaml
## @param tags  - list of key:value elements - optional
## @env DD_TAGS - space separated list of strings - optional
## List of host tags. Attached in-app to every metric, event, log, trace, and service check emitted by this Agent.
##
## Additional tags can be supplied using the `DD_EXTRA_TAGS` environment variable.
##
## Learn more about tagging: https://docs.datadoghq.com/tagging/
#
tags:
  - service:datadog-yaml
#   - <TAG_KEY>:<TAG_VALUE>
```

編集後はagentを再起動して完了です。

```
sudo systemctl restart datadog-agent
```

少し待つとDatadog Agentセクションに追加されました！
![Screenshot 2021-12-17 at 2.23.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/382072/39858013-db50-cbdf-e530-58176b76f756.png)

:::note info
Datadog-agentはオープンソースなのでdatadog.yamlのテンプレートも確認できます！
https://github.com/DataDog/datadog-agent/blob/9203f205392abb9f64ee677b3479aae01dd65163/pkg/config/config_template.yaml#L105-L115
:::

#### APIから
APIを叩くのに必要な情報については [APIリファレンス](https://docs.datadoghq.com/ja/api/latest/tags/) を参照ください。
curlでAPIを叩く機会はあまり無いと思いますが、開発中に試すなどで参考になると幸いです。

試しに **Get host tags** を叩いてみるとこんな感じです。
セクション分けなどはされていませんが、先ほどUIやDatadog-Agentから追加したタグも確認できますね。
![Screenshot 2021-12-17 at 2.26.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/382072/d11eea05-ff59-a5e2-a55f-b916412feb51.png)

次に **Update host tags** を叩いてみます。
UpdateなのでUIから付与したタグを忘れると消えてしまうのでご注意ください！
![Screenshot 2021-12-17 at 1.35.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/382072/f98e6f34-dffd-604e-c93c-6dee32057b9a.png)

UIから見るとこんな感じです、ちゃんとUserセクションに追加されてますね！
![Screenshot 2021-12-17 at 2.39.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/382072/ac65aa8f-b22a-8140-c6e4-ee5c0a88b393.png)

最後に **Remove host tags** でタグを削除してみます。
特にレスポンスbodyは無く、ステータスコード204が返却されていればOKです。
![Screenshot 2021-12-17 at 2.39.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/382072/fbab5ba4-2e3e-804d-5c7b-a7ae6926ab2d.png)

UIから見るとこんな感じです。Userセクションにあった `service:datadog-ui` と `service:datadog-api` の二つが削除されています。
Datadog AgentやAWSセクションのタグには影響が出ていないことがわかりますね。
![Screenshot 2021-12-17 at 2.54.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/382072/2331bfcb-d8c7-561f-4fc1-562cc9fae51d.png)


### 権限をまとめた図
図に起こしてみるとこんな感じかなと。
![Screenshot 2021-12-17 at 2.35.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/382072/792d7790-8297-c05d-5e55-ddeab4ae8e43.png)

## 終わりに
Datadogのタグ周りに触れる機会があったので、簡単に整理してみました。操作方法によって権限が分かれているのでやりたい操作に適した方法を見つけるのに参考になれば良いかなと思います。
今回説明した内容はまだまだ触りの部分なので、詳細はドキュメントを確認してください！
最後にタグめちゃくちゃ便利なので是非どんどん活用していただけたらなと思います。

それでは

## リファレンス
[タグの概要](https://docs.datadoghq.com/ja/getting_started/tagging/)
[タグの付け方](https://docs.datadoghq.com/ja/getting_started/tagging/assigning_tags/?tab=%E9%9D%9E%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E5%8C%96%E7%92%B0%E5%A2%83)
[Introduction to the Datadog Host Map](https://www.youtube.com/watch?v=SRg5kGSHzVY&ab_channel=Datadog)

<img width="700" alt="a" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/382072/ef629828-8314-9cee-14a4-36b56dba1586.png">