これは Datadog Advent Calendar 2019 14日目の記事です。
まとめ
- Custom Metrics で Awair metrics を送って、空気の状態の監視ができるようになった
- 過去ログを楽しく分析できるようになった
- Awair は最新の状態を見るのは簡単ですが、過去のログを見るのが難しい
- Datadog の View は高機能かつ使い慣れているのでストレスがない
- Agent を入れなくてもいいので維持コストがゼロ
- 他の SaaS だと Custom metrics だけでも1ホスト分課金されることがある
- Datadog は今のところ(2019-12-14)課金が発生しない
Custom Metrics とは
docs.datadoghq.com
多すぎてすべては説明しきれませんが、このような特徴があります。
- 自由に metric name や type を設計し、tag で簡単に dimension を表現できる
- 標準 metrics と同様に15ヶ月参照可能
- Datadog のリッチな View で同一時系列で何が起きているのかすぐにわかる
- Datadog の Core 機能と言っても過言ではないのでは
- 送信方法
- Agent ありの場合、DogstatD 経由で UDP を使って送る
- ほとんどの言語で Client が用意されている
- 注意点として、2000 packets/10sec の制限があるので、count や histogram の集計量が多いときは、ライブラリなどを使って in-memory でやりましょう
- Agent なしの場合、Web API で送る
metrics 送信の仕組み
これらをひとつの Azure Function で数分間隔で定期実行しているだけです。
- Awair Web API から metrics を取得
- metrics を sample のように加工
- Datadog Web API で Datadog に送る
payload sample
{
"series" : [
{"metric":"awair.co2", "points":[[1576219800, 100], ...], "tags":["deviceid:test"]},
...
]
}
Note: The timestamp should be in seconds, current. The numeric value format should be a 32bit float gauge-type value. Current is defined as not more than 10 minutes in the future or more than 1 hour in the past.
ちなみに「timestamp として有効なのは、1時間前から10分後まで」と定義されているので、過去ログをまとめて取り込むことはできません。
1 Hour
gyazo.com
1 Day
gyazo.com
1 Week
gyazo.com
1 Month
gyazo.com