Datadogのカスタムメトリクス収集方法を整理する
はじめに
Datadogで独自のメトリクスを取る方法が2つあり、どちらを使うべきか迷いました。そのため調べて分かったことを、ここに整理しておきたいと思います。
結論だけ知りたい方は、こちらからどうぞ。
カスタムメトリクスについて
ユーザが独自に設定したメトリクスを収集することができます。
例えばセッション情報を取得し、そこから細かに宛先IPや接続状況によって、アラートを鳴らしたいといった要望があるとします。取得するには netstat
なり ss
なり打って、その結果をDatadog側に送る必要があります。
カスタムメトリクスは、こういった独自の指標・メトリクスを取りたいときに有効です。
実現する方法として、Datadogでは主に
- カスタムチェック
- DogStatsD
があります。どちらを使うべきかは、状況によって変える必要があります。
結論
それぞれのユースケースまとめです。どちらを選んでも、最終的にやりたいことはできます。
カスタムチェックのユースケース
- サーバのメトリクスは基本的にこちらを使うべき。
- Pythonでしか使えない(agent v7からはPython3のみサポート)。
- チームがPythonを採用しているかで保守コストが変わる。
DogStatsDのユースケース
- Appのメトリクスは基本的にこちらを使うべき。
- クライアント呼び出しなので言語選択が広い。
- サーバのメトリクスを取ろうとすると、構成で考えることが多い。
Pros/Cons
カスタムチェック
pros
cons
- 今使える言語はPythonだけ。
- AgentCheckクラスを継承する必要がある。
- Pythonを採用していない場合、このために保守コストを払うか考える必要がある。
DogStasD
pros
- クライアントが豊富なので、言語の縛りがない。
cons
- サーバのメトリクスを取ろうとすると苦労が多い。
- 自前でcronのような、定期実行の仕組みを用意する必要がある。
- スクリプトの管理場所を考える必要がある。
- 取るメトリクスがサーバかAppで、置き場所を変えるのか。それともまとめて管理するのか。
おわりに
どちらの方法でも運用可能だとは思いますが、監視にかかる保守コストはできるだけ減らしたいですよね。
この記事がその助力になれば幸いです。