LoginSignup
6
2

More than 3 years have passed since last update.

DatadogでURL監視をやってみる

Last updated at Posted at 2016-11-07

2019年に Synthetics が実装されたので、お金があるひとはそっちつかったほうがいいです。
Synthetics最高です。
以下は歴史的なメモとして残しておきますが、2020年現在、ゴミだといえます。

前置き

  • Datadogではいろいろなサービス用のintegrationが用意されているが、残念ながら外からHTTP/HTTPSで接続してのモニタリングができるようなintegrationはない。
  • 外部のサーバからHTTP/HTTPSでの接続を行い、その結果をDatadogのカスタムメトリクスに投げ込み、その状態をモニタリングすればよい、という天の声を得た。
  • 幸い、監視したいとおもったシステムにはWebサーバが稼働しているリージョンとは別リージョンに管理用のサーバが存在していた。

やったこと

  • ターゲットURLへの接続ステータスをカスタムメトリクスに投げ込むスクリプトをEC2(Linux)上に設置
  • 上記スクリプトをcronで定期実行する設定
  • DDのdashboardで、カスタムメトリクスを表示(Query Valueを使用)

作成したスクリプト

urlcheck.sh
#!/bin/sh

API_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX     # DDのIntegrations->APIsでAPIキー調べてね
URLLISTFILE=/path/to/urllist.txt             # ターゲットURLを並べただけのリストファイル

# main

LINE=1
IFS=$'\n'

for URL in $( cat $URLLISTFILE );
do
    echo $URL | egrep -v '^#' > /dev/null
    if [ $? -eq 0 ];then
        RES=`curl -k -s $URL -o /dev/null -w "%{http_code}\n"`
        if [ $RES -eq "200" ]; then
            is_code_200=1
        else
            is_code_200=0
        fi

        # DDへ投げ込み
        currenttime=$(date +%s)
        curl -s -X POST -H "Content-type: application/json" \
        -d "{ \"series\" :
                 [{\"metric\":\"urlcheck.httpstatus$LINE\",
            \"points\":[[$currenttime, $is_code_200]],
            \"type\":\"gauge\",
            \"host\":\"oreno-ec2\",
            \"tags\":[\"hostname:oreno-ec2\", \"region:us-east-1\"]}
            ]
        }" \
        "https://app.datadoghq.com/api/v1/series?api_key=$API_KEY"
        LINE=$(( LINE + 1 ))
    fi
done
urllist.txtサンプル
# ターゲットURL一覧
http://hittodayoo.com/
https://anone.hitomine.com/monitoring.php 

Datadog上での使い方

  • リストファイルの上から順番に urlcheck.httpstatus1,2,3…というメトリクスにステータス200の場合1,それ以外の場合0が入るので、それを使用
  • 筆者の場合はQuery Valueを使い、全メトリクスのステータスを足し算した値が対象サイト数よりも少ない場合、どれかのURLで障害が発生しているという意味でバックグラウンドを赤にするというウィジェットを表示させてみた
6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2