Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What is going on with this article?
@takashi0314

DatadogでURL監視をやってみる

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で障害が発生しているという意味でバックグラウンドを赤にするというウィジェットを表示させてみた
2
Help us understand the problem. What is going on with this article?
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
takashi0314
新井ひとみさん推してます
cloudpack
Amazon Web Services (AWS) の導入設計、環境構築、運用・保守をサポートするマネジドホスティングサービス

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
2
Help us understand the problem. What is going on with this article?