DatadogでOSのプロセス監視を設定する方法
Contents
概要
はじめに
- 今回は、DatadogでOSのプロセス監視を設定する方法をご紹介します。
- DatadogはOSにインストールしたAgent を利用して、OSのプロセス監視を提供します。プロセス監視の方法は、Linuxのプロセス監視とWindows Serverのサービス監視で手順が異なります。本記事では、Linux、Windows Serverの2種類のOS に分けて手順を説明しています。
- Datadog の概要は、下記のログミーTechで公開されている服部さんの記事を参照ください。
Datadogで実現するLinuxプロセス監視
- 前半はLinux に関してです。Datadogのプロセス監視を利用して、Linux上のプロセスの死活監視が可能です。Datadogのドキュメントは、こちらを参照。
- Linuxの場合は “process.d" のconf を使用します。
監視対象のLinuxプロセスを特定する
- 先ず、監視するLinuxサーバーにおいて、監視対象のプロセス名を確認します。psコマンドの結果に出力されたプロセスの名前を控え、後述のconf.yaml に記載します。
- 下記の例では、sshd、amazon-ssm-agent、awslogs-agentのプロセス名を確認しています。
$ ps -ef | grep sshd
root 3184 1 0 15:30 ? 00:00:00 /usr/sbin/sshd -D
$ ps -ef | grep amazon-ssm-agent
root 3139 1 0 6月17 ? 01:14:31 /usr/bin/amazon-ssm-agent
$ ps -ef | grep awslogs
root 5680 1 0 10月21 ? 00:00:00 /bin/sh /var/awslogs/bin/awslogs-agent-launcher.sh ←
root 5684 5680 0 10月21 ? 00:52:52 /var/awslogs/bin/python2 /var/awslogs/bin/aws logs push --config-file /var/awslogs/etc/awslogs.conf --additional-configs-dir /var/awslogs/etc/config
conf.yamlを作成する
- conf.yamlを作成します。以下に、サンプルを記載します。
- 下記の”name”に指定したタグは、Datadogでmonitorを作成する時にprocessに指定する文字列と一致する必要があります。
- 下記の"search_string"は監視対象のプロセスを検索するための文字列のリストです。
- デフォルトはプロセスの検索は完全一致となりますが、"exact_match"に"False"を指定することで"search_string"の文字列を含むすべてのプロセスを認識します。
init_config:
instances:
- name: sshd
search_string: ['ssh', 'sshd']
exact_match: False
- name: amazon-ssm-agent
search_string: ['amazon-ssm-agent']
exact_match: False
- name: amazon-cloudwatch-agent
search_string: ['awslogs-agent-launcher.sh']
exact_match: False
conf.yamlを配置する
- conf.yaml を/etc/datadog-agent/conf.d/process.d配下に配置します。
- datadog-agent.serviceを再起動します。
$ cd /etc/datadog-agent/conf.d/process.d
$ sudo vi conf.yaml
$ sudo systemctl restart datadog-agent.service
- 下記コマンドを実行し、正しくプロセス監視が行われているかをチェックします。
$ sudo datadog-agent status
** 省略 **
Running Checks
==============
process (1.10.0)
----------------
Instance ID: process:sshd:a8eabece2f3b8fe0 [OK]
Configuration Source: file:/etc/datadog-agent/conf.d/process.d/conf.yaml
Total Runs: 12,955
Metric Samples: Last Run: 17, Total: 220,233
Events: Last Run: 0, Total: 0
Service Checks: Last Run: 1, Total: 12,955
Average Execution Time : 5ms
Instance ID: process:amazon-cloudwatch-agent:329829e749036fcc [OK]
Configuration Source: file:/etc/datadog-agent/conf.d/process.d/conf.yaml
Total Runs: 12,955
Metric Samples: Last Run: 17, Total: 220,215
Events: Last Run: 0, Total: 0
Service Checks: Last Run: 1, Total: 12,955
Average Execution Time : 1ms
Instance ID: process:amazon-ssm-agent:26932b4fb9970bc5 [OK]
Configuration Source: file:/etc/datadog-agent/conf.d/process.d/conf.yaml
Total Runs: 12,955
Metric Samples: Last Run: 17, Total: 220,233
Events: Last Run: 0, Total: 0
Service Checks: Last Run: 1, Total: 12,955
Average Execution Time : 2ms
Datadogでmonitor を作成する
- monitor typeに「Process Check」を選択し、monitorを作成します。
- 「process」の候補から先ほどconf.yaml で設定したプロセスを選択します。
Datadogで実現するWindowsサービス監視
- 後半はWindows Server に関してです。Datadogの Custom Check監視を利用して、Windows Server上のサービスの死活監視が可能です。Datadogのドキュメントは、こちらを参照。
- Windows Serverの場合は “windows_service.d" のconf を使用します。失敗談として、Linuxと同じ"process.d“にWindowsサービスを指定すると、下記のエラーとなり動作しませんでした…。
- 「Warning: No matching process 'CloudWatchAgent' was found」
監視対象のWindows Serverのサービス特定する
- 先ず、監視するWindows Serverにおいて、監視対象のサービス名を確認します。下記の例では、Amazon CloudWatch Agentのサービス名を確認しています。
- 「services.msc」を起動し、対象サービスを選び、プロパティを開きます。
- プロパティのサービス名に表示されている名前を後述のconf.yaml に指定します。
conf.yamlを作成する
- conf.yamlを作成します。以下に、サンプルを記載します。
- 下記の”services”に先ほどの手順で確認したサービス名を指定します。
init_config:
instances:
- services:
- eventlog
- AmazonCloudWatchAgent
- AmazonSSMAgent
conf.yamlを配置する
- conf.yaml をC:\ProgramData\Datadog\conf.d\windows_service.d配下に配置します。
- datadog-agentを再起動します。PowerShell を管理者として起動し、下記コマンドを実行します。
PS C:\Users\Administrator> cd "C:\Program Files\Datadog\Datadog Agent\embedded"
PS C:\Program Files\Datadog\Datadog Agent\embedded> ./agent.exe restart-service
PS C:\Program Files\Datadog\Datadog Agent\embedded> ./agent.exe status
- agent.exe statusコマンドの結果、正しくプロセス監視が行われているかをチェックします。
===============
Agent (v6.14.1)
===============
* 省略 *
Running Checks
==============
windows_service (2.1.0)
-----------------------
Instance ID: windows_service:89b0f21a4c4f699f [[32mOK[0m]
Configuration Source: file:C:\ProgramData\Datadog\conf.d\windows_service.d\conf.yaml
Total Runs: 1
Metric Samples: Last Run: 0, Total: 0
Events: Last Run: 0, Total: 0
Service Checks: Last Run: 5, Total: 5
Average Execution Time : 197ms
Datadogでmonitor を作成する
- monitor typeに「Custom Check」を選択し、monitorを作成します。
- 「check」から「windows_service.state」を選択します。「monitor scope」から先ほどconf.yaml で設定したサービス名を選択します。
- Linux, Windows Server で方法が異なるため、初回は戸惑いますが、手順が確立できれば、さくっと監視が追加できます。OSのプロセスを監視して、障害を早くキャッチしましょう。