概要
表題の通り、サーバーにあるプロセスの生死監視をしたい。
Rubyのデーモンとして起動したunicornやsidekiqなども監視する場合のパラメータ設定のメモ。
設定ファイル
datadog-agentをインストール済みとして、プロセス監視に必要なconfは下記のファイル。
/etc/datadog-agent/conf.d/process.d/conf.yaml.sample
これをmvで conf.yaml
にする。
$ cd /etc/datadog-agent/conf.d/process.d/
$ mv conf.yaml.sample conf.yaml
設定内容
ps -ef c
で確認できるプロセス名の場合は下記の設定でメトリクスが取得可能。
instances:
- name: nginx
search_string:
- nginx
しかし、Rubyのデーモンとして監視している場合は、プロセス名として検索できない場合がある。
たとえば、私が設定していたパターンだと、 sidekiq
や unicorn
などは exact_match: false
にしないと検知できなかった。
Instance ID: process:sidekiq:b4f0da05ec6015eb [WARNING]
Configuration Source: file:/etc/datadog-agent/conf.d/process.d/conf.yaml
Total Runs: 3
Metric Samples: Last Run: 1, Total: 3
Events: Last Run: 0, Total: 0
Service Checks: Last Run: 1, Total: 3
Average Execution Time : 4ms
Warning: No matching process 'sidekiq' was found
Instance ID: process:unicorn:db917549e26047b7 [WARNING]
Configuration Source: file:/etc/datadog-agent/conf.d/process.d/conf.yaml
Total Runs: 3
Metric Samples: Last Run: 1, Total: 3
Events: Last Run: 0, Total: 0
Service Checks: Last Run: 1, Total: 3
Average Execution Time : 4ms
Warning: No matching process 'unicorn' was found
上記は datadoge-agent status
で確認できる。
上記の場合はWarningが表示されているが、これは一度検知できる状態(exact_match:false
)にしたので表示されているが、うまく検知できていない場合はそもそもstatusで表示もされない。
最終的には下記のように記述をすればOKだった。
instances:
- name: nginx
search_string:
- nginx
- name: sidekiq
exact_match: false
search_string:
- sidekiq
- name: unicorn
exact_match: false
search_string:
- unicorn
私は運良くすぐに答えがわかったので良かったが、気が付かないとハマりそうだなと思った。
<p style='padding: 5px;'>