/ Datadogでプロセス監視

Created 24 Dec 2019

概要

表題の通り、サーバーにあるプロセスの生死監視をしたい。
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のデーモンとして監視している場合は、プロセス名として検索できない場合がある。
たとえば、私が設定していたパターンだと、 sidekiqunicorn などは 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;'>