メニュー
ブログ更新履歴
コンテンツ更新履歴
リンク
  • Magome
  • クラウドベースのMIDIシーケンサ
    音楽制作に興味のある方を対象に、スタンドアロンでも使え、ネットならではの面白さも兼ね備えた音楽制作アプリの提供を目指しています。
twitter

サーバーの死活監視スクリプトです。

サーバーにアクセスしエラーだったらメールで通知します。それを cron で定期的に実行します。
というような簡素な機能しかありませんが事足りることも多いので。

これまでは windows 上で同様のことをしておりました。特に不都合もなかったのですが環境自体もかなり古くなったこともありシェルスクリプトで作ってみました。
せっかくなので Docker Compose を使って最小限の記述をするだけで構築できる形にしています。

いろいろなサイトの情報を参考にさせてもらっています。ありがとうございます。

docker-compose ファイル一覧 anchor.png

├ docker-compose.yml
├ Dockerfile
└ cron.sh
Page Top

docker-compose.yml anchor.png

version: '3'
services:
  centos7:
    build: ./
    volumes:
      - ./cron.sh:/opt/cron.sh
    environment:
      TZ: Asia/Tokyo
    container_name: "healthcheck-centos7"
#   restart: always
Page Top

Dockerfile anchor.png

FROM centos:centos7

RUN yum -y update

# wget mailx cron インストール
RUN yum -y install wget mailx cronie

# .mailrc (SMTP)
# 環境に合わせて記述してください
RUN echo $'\n\
#set smtp-use-starttls\n\
set smtp=smtp://mail.example.com:587\n\
set smtp-auth=login\n\
set smtp-auth-user=info@example.com\n\
set smtp-auth-password=○○○○○○○\n\
set from="info@example.com"\n\
set ssl-verify=ignore\n\
' > /root/.mailrc

# 15分毎に cron.sh を実行します
CMD chmod 744 /opt/cron.sh \
  ; (echo "*/15 * * * * /opt/cron.sh > /dev/null 2>&1") | crontab - \
  ; (crond -n &) \
  ; sleep infinity
Page Top

cron.sh anchor.png

#!/bin/bash

items=(
#	以下に監視対象を記述してください
#	'チェックするURL | エラー発生メールの宛先'
	'https://www.example.com/|rb20det@example.com'
	'http://www2.example.com/|jzx80@example.com,ae86@example.com'
)

for item in ${items[@]}; do
	IFS='|' read -r url mailto <<< "$item"
# 	wget でチェックし、200 以外はエラーとしています
	result=`wget --spider -nv --timeout 30 -t 5 $url 2>&1`
	ok=`echo "$result" | grep -c '200 OK'`
	if [ $ok -eq 0 ]; then
		subject="failed. ${url}"
		echo $result | mailx -s "$subject" "$mailto"
	fi
done

Front page   Freeze Diff Backup Copy Rename ReloadPrint View   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom) Powered by xpWiki
Counter: 48, today: 1, yesterday: 1
Princeps date: 2021-06-10 (Thu) 17:07:46
Last-modified: 2021-06-10 (Thu) 17:07:46 (JST) (11d) by takatsuka