DatadogでOSのプロセス監視を設定する方法

概要

はじめに

  • 今回は、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 [OK]
      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のプロセスを監視して、障害を早くキャッチしましょう。