1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ウェブページがアクセスできなくなっていないか監視する

Posted at

背景

ウェブページを運営している人間にとって、ページアクセスできなくなるというのは致命的である。
しかし、サーバーが落ちてしまった、サーバー再起動時に自動復旧できなかった、AWSがメンテでインスタンスを落とした、SSLの証明書期限が切れた等の様々な理由で問題が発生することがあるため、すべての起こりうる問題に対してあらかじめ対処しておくことは難しい。
次善の策として、問題発生したら気づけるようにしておきたい。

作戦

  1. 監視用マシンにて、curlでウェブサイトの疎通確認を行う
  2. 問題があったら、Line NotifyでLineに通知する
  3. 一定時間ごとに実行する
  4. 監視用マシンが生きていることを監視する

curlでウェブサイトの疎通確認を行う

curlでhtmlをひっぱってくれば良いだろう。そして、中身が正しいことを確認するために、htmlに含まれるべき文字列をgrepする。

curl $URL_TO_MONITOR | grep $EXPECTED_STRING

Line NotifyでLineに通知する

LINEにメッセージが来ればすぐに気付けるだろう。LINEのMessaging APIは面倒なので、LINE Notifyという仕組みを使う。
設定はこちら。設定が終わったらトークンをコピーしておき、以下のような形で実行する。

curl -X POST -H "Authorization: Bearer $LINE_NOTIFY_TOKEN" -F "message=test message" https://notify-api.line.me/api/notify

Slackに通知したいなら、こちらが参考になるだろう。

一定時間ごとに実行する

ここまでの内容を踏まえて、以下のようなスクリプトを作成してmonitor.shという名称で保存する。

monitor.sh
#!/bin/sh
curl $URL_TO_MONITOR | grep $EXPECTED_STRING

if [ $? -eq 0 ]; then
  # curl -X POST -H "Authorization: Bearer $LINE_NOTIFY_TOKEN" -F "message=site is working" https://notify-api.line.me/api/notify
else
  curl -X POST -H "Authorization: Bearer $LINE_NOTIFY_TOKEN" -F "message=site is not working" https://notify-api.line.me/api/notify
fi

chmod +x minitor.shにて実行権限を付与する。

crontab -eにて、定期実行設定する。13分間隔くらいで監視すればよいだろうか。
PATH_TO_SHELL_SCRIPTには、監視スクリプトのパスを記載する。

*/13 * * * * PATH_TO_SHELL_SCRIPT >/dev/null 2>&1

監視用マシンが生きていることを監視する

監視用マシンが落ちていて監視できていないということは往々にて発生するので、ウェブサーバーから監視サーバーに対するpingもしておくと良いだろう。

ちゃんと見たい場合

ちゃんと監視したいなら、chromeのheadlessモードでサイトにアクセスしていろいろやると良い。

google-chrome --headless --disable-gpu --dump-dom URL_TO_MONITOR

chrome使うならば、1GBくらいのマシンを用意しておいたほうが良いので、Amazon EC2ならt3.microインスタンス以上にしておいたほうがいい。

もっともっとやりたいならSeleniumを使うとか、Puppeteerとかを使うのが良いだろう。

1
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?