https://www.datadoghq.com/ は、非常に柔軟なモニタリングサービスです。全体傾向を見ることも、タグを使って詳細な分析を行うこともできるのが大きなメリットだと思います。
本記事では、 datadogのアカウントはあるけれど自分でデータを登録したことはない人 を対象に、基本的な用語の解説と curl を使ったメトリクス送信方法を説明します。
基本用語
Metrics
サーバなどから送られてくる情報。 Key, Value, Tag の3種類のデータがペアになっています。
field | 型の制限 |
---|---|
Key | ドット区切り / 大文字小文字を区別しない / 記号は _ のみ可 |
Value | type によって 32bit float / 64bit integer になる |
Tag | 文字列の配列 |
Event
GitHub等の外部サービスとDataDogを連携させると、Eventでコミット履歴などが記録されていく。自分でAPI経由でイベント登録することも可能。
(デプロイした時刻をイベントで記録しておくと、後から分析に使いやすいのでおすすめ)
本記事では省略します。
Monitor
監視設定。Metricsの値を監視し、しきい値を超えた/下回った場合にメールやSlackに通知を飛ばす。一定時間後に復旧していない場合にリマインダ的に通知を繰り返す設定もある(便利)。
shellからメトリクスを送ってみる
シンプルな例
#!/bin/sh
currenttime=$(date +%s)
curl -X POST -H "Content-type: application/json" \
-d "{ \"series\" :
[{\"metric\":\"test.metric\",
\"points\":[[$currenttime, 20]],
\"type\":\"gauge\",
\"tags\":[\"environment:test\"]}
]
}" \
'https://app.datadoghq.com/api/v1/series?api_key=<your datadog key>'
- メトリクス名:
test.metric
- 現在時刻のメトリクス値は 20
- メトリクスの種別は gauge (→値は 32bit float になる)
-
environment
というタグ名の値がtest
複数のメトリクスを同時に送る
#!/bin/sh
currenttime=$(date +%s)
curl -X POST -H "Content-type: application/json" \
-d "{ \"series\" :
[{\"metric\":\"test.metric\",
\"points\":[[$currenttime, 20]],
\"type\":\"gauge\",
\"tags\":[\"environment:test\"]},
{\"metric\":\"test.metric2\",
\"points\":[[$currenttime, 20]],
\"type\":\"gauge\",
\"tags\":[\"environment:test\", \"hostname:example.com\"]}
]
}" \
'https://app.datadoghq.com/api/v1/series?api_key=<your datadog key>'
- series には配列を渡すことができます
-
tags
にも配列を渡すことができ、"tag_name:tag_value"
の形式で、複数のタグを同時に指定可能です
gauge と counter の違い
counter
は、「レート(一定時間あたりの件数)を扱うためのデータ型」と API Reference に記載があります。つまり、「アクセス件数」「処理件数」を counter 型で記録しておき、「1分あたりの処理件数」を確認することができます。 (なので、記録されるデータ型も整数 64bit integer で問題無い、ということになります)
対して gauge
は、整数では表現できない「処理時間」などの記録に適しています。多くの場合は gauge
を利用していれば問題無いと思います。 (なので、typeのデフォルト値はgaugeなんだと思う)
参考
-
http://docs.datadoghq.com/ja/api/
- 上部メニューの2段目に言語を選ぶ欄があります。APIのデータ構造を見やすい Shell を選んで一読しておくのがおすすめです。