Datadogでプロセス監視を行う
はじめに
こんにちは、川原です。
Datadog はSaaS型の監視サービスです。 DatadogでEC2インスタンス等のAWSサービスを監視する場合、下記2つの監視パターンがあります。
- DatadogサービスがCloudWatchに登録されたメトリックスデータを取得する
- エージェントプログラムを監視対象にインストールし、エージェントが各種データを取得し、そのデータをDatadogサービスに送る
前者はエージェントレスで監視を始められるため導入が楽ですが、監視できるデータはAWSがCloudWatchに登録するデータに限られます。 一方、後者はエージェント経由での監視になり、エージェントで取得できるデータはプラグインにより拡張が可能です(対象サーバー上で計測できるものは何でも監視できると言ってよいと思います)。そのため、きめ細かな監視を実現できます。
本ブログでは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: |
オプション | 【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 のところに設定ファイルで監視対象としたプロセス名が表示されているはずです。 あとは、スコープや、アラート条件、通知内容等をウィザード画面に従って設定すればプロセス監視のアラート通知を作成できます。
まとめ
いかがでしたでしょうか? Datadogでは少量の設定ファイルの記載(1プロセスあたり5行程度)でプロセス監視できることがおわかりになったかと思います。