ls /asapon/blog

基本tech、時々多趣味

Datadogのカスタムメトリクス収集方法を整理する

はじめに

Datadogで独自のメトリクスを取る方法が2つあり、どちらを使うべきか迷いました。そのため調べて分かったことを、ここに整理しておきたいと思います。
結論だけ知りたい方は、こちらからどうぞ。

カスタムメトリクスについて

ユーザが独自に設定したメトリクスを収集することができます。
例えばセッション情報を取得し、そこから細かに宛先IPや接続状況によって、アラートを鳴らしたいといった要望があるとします。取得するには netstat なり ss なり打って、その結果をDatadog側に送る必要があります。
カスタムメトリクスは、こういった独自の指標・メトリクスを取りたいときに有効です。
実現する方法として、Datadogでは主に

  • カスタムチェック
  • DogStatsD

があります。どちらを使うべきかは、状況によって変える必要があります。

結論

それぞれのユースケースまとめです。どちらを選んでも、最終的にやりたいことはできます。

カスタムチェックのユースケース

  • サーバのメトリクスは基本的にこちらを使うべき。
  • Pythonでしか使えない(agent v7からはPython3のみサポート)。
  • チームがPythonを採用しているかで保守コストが変わる。

DogStatsDのユースケース

  • Appのメトリクスは基本的にこちらを使うべき。
  • クライアント呼び出しなので言語選択が広い。
  • サーバのメトリクスを取ろうとすると、構成で考えることが多い。

Pros/Cons

カスタムチェック

pros

  • 定期実行の仕組みをはじめから持っている。
    • checks.d/ 以下のpyファイルが読み込まれる。
  • 収集間隔や閾値といった個別設定の管理ができる。
    • conf.d/ 以下にyamlファイルで管理する。

cons

  • 今使える言語はPythonだけ。
    • AgentCheckクラスを継承する必要がある。
  • Pythonを採用していない場合、このために保守コストを払うか考える必要がある。

DogStasD

pros

cons

  • サーバのメトリクスを取ろうとすると苦労が多い。
    • 自前でcronのような、定期実行の仕組みを用意する必要がある。
    • スクリプトの管理場所を考える必要がある。
      • 取るメトリクスがサーバかAppで、置き場所を変えるのか。それともまとめて管理するのか。

おわりに

どちらの方法でも運用可能だとは思いますが、監視にかかる保守コストはできるだけ減らしたいですよね。
この記事がその助力になれば幸いです。

参考