DatadogでURL監視を設定する方法
Contents
概要
はじめに
- 今回は、DatadogのURL監視(HTTP Check)を設定する方法をご紹介します。
- Datadogは、SaaSで提供されるシステムモニタリングツールであり、現在担当する案件でも、サーバーやアプリケーションの監視に使用しています。Datadog の概要は、下記のログミーTechで公開されている服部さんの記事を参照ください。
Datadogで実現するURL監視
- DatadogのHTTP Checkを利用して、HTTPエンドポイントに対する死活監視(URL監視)が可能です。HTTP ステータスコードの他に、SSL証明書の検証や期限切れが近い SSL 証明書の特定などの監視が可能です。
- また、応答時間 (秒単位) をメトリクス(collect_response_time)として収集可能です。
URL監視のmonitorはNetworkから作る
- DatadogでURL監視(HTTP Check)を行う際のmonitor は、「New Monitor」 ⇒ 「monitor type: Network」 を選択します。
- ただし、監視対象のサーバーでAgent が未設定の場合は、下記のメッセージが表示されます。
- 「Please ensure that HTTP and/or TCP checks have been configured in the agent.」
URL監視の送信元を決める
- 先ず、監視対象のURLに定期的にリクエストを送る検証サーバーを選定します。
- 上記検証サーバーは、Datadog のAgent がインストールされており、かつ監視対象のHTTPサービス提供するサーバーと異なるサーバーであるべきです。
Datadog Agent の設定
- Linux の場合は、下記にDatadog Agent のHTTP Check設定を配置します。
- /etc/datadog-agent/conf.d/http_check.d/conf.yaml
- Windows の場合は、下記にDatadog Agent のHTTP Check設定を配置します。
- C:\ProgramData\Datadog\conf.d\http_check.d\conf.yaml
- 以下、conf.yaml のサンプルです。
- デフォルトでは、SSL の有効性をチェックしません。ただし、期限切れが近い SSL 証明書のチェックはデフォルトで行われます。
init_config:
instances:
- name: AAA.example.com
url: https://AAA.example.com
timeout: 10
http_response_status_code: 200
min_collection_interval: 300
- name: BBB.example.com
url: http://BBB.example.com
timeout: 10
http_response_status_code: 200
min_collection_interval: 300
Datadog Agent の再起動
- Linuxの場合は、下記コマンドでconf.yamlを配置して、Datadog Agentを再起動します。
$ cd /etc/datadog-agent/conf.d/http_check.d
$ sudo vi conf.yaml
$ sudo systemctl restart datadog-agent.service
$ sudo datadog-agent status
- Windowsの場合は、下記コマンドでconf.yamlを配置して、Datadog Agentを再起動します。
← "C:\ProgramData\Datadog\conf.d\http_check.d"にconf.yamlを配置します
← 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 の結果サンプルです。(Linux のsudo datadog-agent status も同様です)
- HTTP Checkの内容が「http_check」 として、情報が出力されています。
===============
Agent (v6.14.1)
===============
Status date: 2019-10-26 20:42:53.857443 JST
Agent start: 2019-10-25 23:42:15.454062 JST
Pid: 5224
Go Version: go1.12.9
Python Version: 2.7.16
Check Runners: 4
Log Level: info
Paths
=====
Config File: C:\ProgramData\Datadog\datadog.yaml
conf.d: C:\ProgramData\Datadog\conf.d
checks.d: C:\ProgramData\Datadog\checks.d
Clocks
======
NTP offset: 1.283ms
System UTC time: 2019-10-26 20:42:53.857443 JST
Host Info
=========
bootTime: 2019-10-07 16:58:42.000000 JST
os: windows
platform: Windows Server 2019 Datacenter
platformFamily: Windows Server 2019 Datacenter
platformVersion: 10.0 Build 17763
procs: 134
uptime: 438h43m32s
Hostnames
=========
ec2-hostname: ip-XX-XX-XX-XX.ap-northeast-1.compute.internal
hostname: hostname1
instance-id: i-0123456789abcdefg
socket-fqdn: hostname1
socket-hostname: hostname1
hostname provider: os
unused hostname providers:
aws: not retrieving hostname from AWS: the host is not an ECS instance, and other providers already retrieve non-default hostnames
configuration/environment: hostname is empty
gce: unable to retrieve hostname from GCE: status code 404 trying to GET http://169.254.169.254/computeMetadata/v1/instance/hostname
=========
Collector
=========
Running Checks
==============
cpu
---
Instance ID: cpu [[32mOK[0m]
Configuration Source: file:C:\ProgramData\Datadog\conf.d\cpu.d\conf.yaml.default
Total Runs: 5,043
Metric Samples: Last Run: 7, Total: 35,295
Events: Last Run: 0, Total: 0
Service Checks: Last Run: 0, Total: 0
Average Execution Time : 0s
disk (2.5.0)
------------
Instance ID: disk:e5dffb8bef24336f [[32mOK[0m]
Configuration Source: file:C:\ProgramData\Datadog\conf.d\disk.d\conf.yaml.default
Total Runs: 5,042
Metric Samples: Last Run: 6, Total: 30,252
Events: Last Run: 0, Total: 0
Service Checks: Last Run: 0, Total: 0
Average Execution Time : 2ms
file_handle
-----------
Instance ID: file_handle [[32mOK[0m]
Configuration Source: file:C:\ProgramData\Datadog\conf.d\file_handle.d\conf.yaml.default
Total Runs: 5,042
Metric Samples: Last Run: 1, Total: 5,042
Events: Last Run: 0, Total: 0
Service Checks: Last Run: 0, Total: 0
Average Execution Time : 1ms
http_check (4.2.0)
------------------
Instance ID: http_check:AAA.example.com:18c391eda9aa3f3d [[32mOK[0m]
Configuration Source: file:C:\ProgramData\Datadog\conf.d\http_check.d\conf.yaml
Total Runs: 253
Metric Samples: Last Run: 5, Total: 1,265
Events: Last Run: 0, Total: 0
Service Checks: Last Run: 2, Total: 506
Average Execution Time : 97ms
Instance ID: http_check:BBB.example.com:86495e385cafb9dd [[32mOK[0m]
Configuration Source: file:C:\ProgramData\Datadog\conf.d\http_check.d\conf.yaml
Total Runs: 252
Metric Samples: Last Run: 5, Total: 1,260
Events: Last Run: 0, Total: 0
Service Checks: Last Run: 2, Total: 504
Average Execution Time : 106ms
io
--
Instance ID: io [[32mOK[0m]
Configuration Source: file:C:\ProgramData\Datadog\conf.d\io.d\conf.yaml.default
Total Runs: 5,042
Metric Samples: Last Run: 5, Total: 25,210
Events: Last Run: 0, Total: 0
Service Checks: Last Run: 0, Total: 0
Average Execution Time : 0s
memory
------
Instance ID: memory [[32mOK[0m]
Configuration Source: file:C:\ProgramData\Datadog\conf.d\memory.d\conf.yaml.default
Total Runs: 5,042
Metric Samples: Last Run: 17, Total: 85,714
Events: Last Run: 0, Total: 0
Service Checks: Last Run: 0, Total: 0
Average Execution Time : 1ms
network (1.11.4)
----------------
Instance ID: network:e0204ad63d43c949 [[32mOK[0m]
Configuration Source: file:C:\ProgramData\Datadog\conf.d\network.d\conf.yaml.default
Total Runs: 5,042
Metric Samples: Last Run: 12, Total: 60,504
Events: Last Run: 0, Total: 0
Service Checks: Last Run: 0, Total: 0
Average Execution Time : 1ms
ntp
---
Instance ID: ntp:d884b5186b651429 [[32mOK[0m]
Configuration Source: file:C:\ProgramData\Datadog\conf.d\ntp.d\conf.yaml.default
Total Runs: 5,042
Metric Samples: Last Run: 1, Total: 5,042
Events: Last Run: 0, Total: 0
Service Checks: Last Run: 1, Total: 5,042
Average Execution Time : 0s
uptime
------
Instance ID: uptime [[32mOK[0m]
Configuration Source: file:C:\ProgramData\Datadog\conf.d\uptime.d\conf.yaml.default
Total Runs: 5,042
Metric Samples: Last Run: 1, Total: 5,042
Events: Last Run: 0, Total: 0
Service Checks: Last Run: 0, Total: 0
Average Execution Time : 0s
winproc
-------
Instance ID: winproc [[32mOK[0m]
Configuration Source: file:C:\ProgramData\Datadog\conf.d\winproc.d\conf.yaml.default
Total Runs: 5,042
Metric Samples: Last Run: 2, Total: 10,084
Events: Last Run: 0, Total: 0
Service Checks: Last Run: 0, Total: 0
Average Execution Time : 0s
========
JMXFetch
========
Initialized checks
==================
no checks
Failed checks
=============
no checks
=========
Forwarder
=========
Transactions
============
CheckRunsV1: 5,042
Dropped: 0
DroppedOnInput: 0
Events: 0
HostMetadata: 0
IntakeV1: 170
Metadata: 0
Requeued: 0
Retried: 0
RetryQueueSize: 0
Series: 0
ServiceChecks: 0
SketchSeries: 0
Success: 10,254
TimeseriesV1: 5,042
API Keys status
===============
API key ending with 123ab: API Key valid
==========
Endpoints
==========
https://app.datadoghq.com - API Key ending with:
- 123ab
==========
Logs Agent
==========
Logs Agent is not running
=========
Aggregator
=========
Checks Metric Sample: 352,104
Dogstatsd Metric Sample: 347,912
Event: 1
Events Flushed: 1
Number Of Flushes: 5,042
Series Flushed: 434,685
Service Check: 49,245
Service Checks Flushed: 54,282
=========
DogStatsD
=========
Event Packets: 0
Event Parse Errors: 0
Metric Packets: 347,911
Metric Parse Errors: 0
Service Check Packets: 0
Service Check Parse Errors: 0
Udp Bytes: 22.4 M
Udp Packet Reading Errors: 0
Udp Packets: 347,912
Uds Bytes: 0
Uds Origin Detection Errors: 0
Uds Packet Reading Errors: 0
Uds Packets: 0
URL監視のmonitor を作成する
- Datadog Agentの設定が完了したら、URL監視のmonitor を作成します。
- Agentのconf.yaml に記述したURLによって、http or https の選択が変わります。以下、monitor 作成時の画面サンプルです。
- 以下、httpのURLの場合です。
- 以下、httpsのURLの場合です。
参考情報
http.can_connectメトリクスの説明
- 次のいずれかが発生したら DOWN を返します。
- uri へのリクエストがタイムアウトした
- 応答コードが 4xx/5xx または http_response_status_code で指定されているパターンコードと一致しない
- 応答本文が content_match のパターンと一致しない
- reverse_content_match が true で、応答本文が content_match のパターンを含む
- uri に https が含まれ、disable_ssl_validation が false であり、SSL 接続を検証できない
- これら以外の場合は UP を返します。
http.ssl_certメトリクスの説明
- チェックは次の内容を返します。
- uri の証明書が既に期限切れの場合は DOWN
- uri の証明書が days_critical 日未満に期限切れになる場合は CRITICAL
- uri の証明書が days_warning 日未満に期限切れになる場合は WARNING
- これら以外の場合は UP を返します。
- このチェックを無効にするには、check_certificate_expiration を false に設定します。
その他
- 下記資料を参照ください。