Datadogでプロセス監視を行う

2016.02.12

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは、川原です。

Datadog はSaaS型の監視サービスです。 DatadogでEC2インスタンス等のAWSサービスを監視する場合、下記2つの監視パターンがあります。

  1. DatadogサービスがCloudWatchに登録されたメトリックスデータを取得する
  2. エージェントプログラムを監視対象にインストールし、エージェントが各種データを取得し、そのデータをDatadogサービスに送る

前者はエージェントレスで監視を始められるため導入が楽ですが、監視できるデータはAWSがCloudWatchに登録するデータに限られます。 一方、後者はエージェント経由での監視になり、エージェントで取得できるデータはプラグインにより拡張が可能です(対象サーバー上で計測できるものは何でも監視できると言ってよいと思います)。そのため、きめ細かな監視を実現できます。

本ブログではDatadogのエージェントを使用して、プロセス監視を行う方法を紹介したいと思います。

エージェントの導入については、下記ブログに方法が記載されていますので、こちらを参考にしてください。

Amazon LinuxをDatadogで監視してみた

プロセス監視

設定ファイルと反映

プロセス監視は、/etc/dd-agent/conf.d/process.yamlというファイルに設定を記載すると行われるようになります。/etc/dd-agent/conf.d/process.yaml.exampleというファイルが存在しているはずなので、これを元に編集するとよいです。この設定ファイルに記載する主要設定項目は以下の通りです。

キー 必須有無 内容
pid_cache_duration: オプション 前回探索時に検出したプロセスIDを保持している時間。プロセス監視の時間間隔を短くして、よりタイムリーにプロセス生死を検出したい場合はこの値を小さくする。デフォルトでは120秒
name: 必須 メトリックスを特定するための文字列。この名前でタグ付けされる。
search_string: 必須 監視対象プロセスを検出するための文字列のリスト。通常はpsコマンドで表示されるプロセス名を指定する。
exact_match: オプション 曖昧マッチングの有無。これが"true"(有効)になっていると、プロセス名検出処理を曖昧に行う(完全一致ではない)。デフォルト値は"true"。

【2018/03/05 追記】 下記の通り、本項目の意味がほぼ逆に変わったようです

変更前 >(optional) Boolean. Default to True, if you want to look for an arbitrary >string only use search_string, use exact_match: False

変更後 >(optional) Boolean. Default value of True matches your search_string on proc.name(). >If you want to match on a substring within proc.cmdline(), set this to False

 

ignore_denied_access: オプション プロセス探索処理でファイルディスクリプタ数の警告が発生した場合に、その警告を無視するか否か。デフォルト値は"true"(無視する)。
thresholds: オプション サブキーとしてwarning:critical:があり、値としては2つの数値リストを設定する。それぞれ、"warning"、"critical"と判定するプロセス数の下限値、上限値を設定する。 critical: [1, 7]warning: [3, 5] が設定されていた場合、検出したプロセス数が0、8以上の場合はクリティカルとして、1、2、6、7の場合は警告として、3、4、5の場合は正常としてDatadogサーバーに通知する。thresholds:を設定していない場合は当該プロセスの存在有無(つまり、0 or)で正常 or クリティカルをDatadogサーバーに通知する。

/etc/dd-agent/conf.d/process.yamlの記載例

init_config:
  pid_cache_duration: 120

instances:
  - name: ssh
    search_string: ['ssh', 'sshd']
    thresholds:
      # critical if no sshd or more than 8 sshd are running
      critical: [1, 7]
      # warning if 1, 2, 6, 7 sshd processes are running
      warning: [3, 5]
      # ok if 3, 4, 5 processes are running
  - name: postgres
    search_string: ['postgres']
    ignore_denied_access: True

  - name: nodeserver
    search_string: ['node server.js']

設定ファイルを記載し、エージェントプロセスを再起動するとプロセス監視が開始されます。

sudo /etc/init.d/datadog-agent restart

プロセス監視に関するDatadog公式ドキュメントはこちらになります。 また、実際にプロセス監視処理を行っているスクリプトはエージェントインストール時に同時にインストールされており、それは/opt/datadog-agent/agent/checks.d/process.pyになります。

アラート通知の作成

Monitors から New Monitor をクリックし、さらに Process をクリックしてください。Pick a Process のところに設定ファイルで監視対象としたプロセス名が表示されているはずです。 あとは、スコープや、アラート条件、通知内容等をウィザード画面に従って設定すればプロセス監視のアラート通知を作成できます。

スクリーンショット 2016-01-31 0.32.57

スクリーンショット 2016-01-31 0.33.05

スクリーンショット 2016-02-12 10.40.10

まとめ

いかがでしたでしょうか? Datadogでは少量の設定ファイルの記載(1プロセスあたり5行程度)でプロセス監視できることがおわかりになったかと思います。