- 1. 概要
— 1.1. はじめに - 2. Datadogで実現するURL監視
— 2.1. URL監視のmonitorはNetworkから作る
— 2.2. URL監視の送信元を決める
— 2.3. Datadog Agent の設定
— 2.4. Datadog Agent の再起動
— 2.5. URL監視のmonitor を作成する - 3. 参考情報
— 3.1. http.can_connectメトリクスの説明
— 3.2. http.ssl_certメトリクスの説明
— 3.3. その他
概要
はじめに
- 今回は、DatadogのURL監視(HTTP Check)を設定する方法をご紹介します。
- Datadogは、SaaSで提供されるシステムモニタリングツールであり、現在担当する案件でも、サーバーやアプリケーションの監視に使用しています。Datadog の概要は、下記のログミーTechで公開されている服部さんの記事を参照ください。
クラウド時代のサーバー監視における、良いメトリックの4要素 - Part1
2018年9月22日、Japan Azure User Groupが主催するイベント「Japan Azure User Group 8周年イベント」が開催されました。JAZUG設立8周年を記念した本イベント。Microsoft Azureを用いてサービス開発を行うエンジニアたちが一堂に会し、自身の経験と知見を元に新たな活用法などを語ります。プレゼンテーション「クラウド時代のモニタリング」に登場したのは、DatadogのMasahiro Hattori氏。<a href="https://www.slideshare.net/MasahiroHattori2/azuredatadog-next-gen-monitoring-with-azure-and-datadog-20180922" ...
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 に設定します。
その他
- 下記資料を参照ください。
Datadogを始めてみましょう
Datadogが大規模なクラウドのモニタリングサービスをリードします。