PumaのメトリクスをDatadogに送る
普段、Datadogを使ってシステムを監視している。AWSの各サービスはCloudWatch metricsを通してDatadogから監視できるんだけど、今回はRailsアプリケーションサーバーであるPumaをDatadogから監視できるようにする。
DogStatsD
DatadogのIntegrationにPumaはないため、カスタムメトリクスを送ることになる。DogStatsDを使うと簡単にカスタムメトリクスを送ることができる。DogStatsDはdatadog-agentに同梱されており、受け取ったカスタムメトリクスをDatadogに転送する。また、StatsDと同じプロトコルを実装しているため、StatsDクライアントはDogStatsDを通してDatadogにメトリクスを送ることができる。
Pumaのメトリクス
PumaはPuma.statsから以下のようなメトリクスを取得することができる。
backlog: スレッドによる処理を待つコネクション数running: 実行中のスレッド数pool_capacity: 現在サーバーが取得できるリクエスト数max_threads: 最大スレッド数
puma-plugin-statsd
puma-plugin-statsdはPuma.statsから取得したメトリクスをStatsDサーバーに送る。Pumaのプラグインなので、以下のようにconfig/puma.rbに指定する。
plugin :statsdそして、起動時に環境変数STATSD_HOSTでStatsDサーバーのホストを指定する。DogStatsDを使う場合、datadog-agentのホストを指定すればいい。
これで、PumaのメトリクスがDatadogに送られるようになる。