WebサーバーとしてPumaを使用している場合の以下についてまとめておく
- 監視の観点
- メトリクスの収集方法
監視の観点
- Pumaの動作するサーバーに問題が起きていないか
- Pumaに問題が起きていないか
Pumaの動作するサーバーに問題が起きていないか
ホストマシンの以下の指標をみておく
- CPU
- sar
- メモリ
- vmstat
- ネットワーク
観点: メモリを使いすぎていないか?
- メモリ容量の上限値を超える場合はworker数減らすかメモリ上限を上げるなどの検討をする
Pumaに問題が起きていないか
監視上の観点とPuma.statsで提供される情報から、指標として使用するとよさそうなものをピックアップしてみる
観点: 必要なプロセスやスレッドが正常に動作しているか?
- puma.workers: 起動中のワーカー数
puma.running: 起動中のスレッド数
設定値通りにプロセスやスレッドが起動しているかを確認する
観点: リクエストに対して受け入れ可能な状態にあるか?
- puma.backlog: キューにあるリクエストの待ち行列の数
puma.pool_capacity: スレッドプール中の使用可能なスレッド数
- pool_capacityのスレッド数が常に0に値の場合は、workerあたりのthread数を増やすか、worker数を増やす
DatadogでPumaのメトリクスを収集する
puma-plugin-statsd
gemを使用し、ddagentのカスタムメトリクスとして追加する方法で収集してみた。
※ ddagentがインストールされていてかつ起動されることが前提
Gemfileに以下を追記
... gem 'puma-plugin-statsd' ...
config/puma.rbに以下を追記
... plugin :statsd ...
動作環境の環境変数として以下を追加する
STATSD_HOST=127.0.0.1
ddagentのintegrationでもPumaのメトリクスを収集できるようなので、こちらを使った方がよさそう
参考
https://speakerdeck.com/s4ichi/metorikusuke-shi-hua-karashi-meru-rails-uebusabafalsetiyuningu-kaigi-on-rails-2021 https://blog.naoty.dev/373/