Help us understand the problem. What is going on with this article?

DatadogでURL監視をやってみる

More than 3 years have passed since last update.

前置き

  • 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で障害が発生しているという意味でバックグラウンドを赤にするというウィジェットを表示させてみた
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした