ページへ戻る
印刷
技術系備忘録/Docker/サーバー死活監視スクリプト
をテンプレートにして作成 ::
シンクリッジ
xpwiki
:技術系備忘録/Docker/サーバー死活監視スクリプト をテンプレートにして作成
開始行:
#contents
サーバーの死活監視スクリプトです。
サーバーにアクセスしエラーだったらメールで通知します。そ...
というような簡素な機能しかありませんが事足りることも多い...
これまでは windows 上で同様のことをしておりました。特に不...
せっかくなので Docker Compose を使って最小限の記述をする...
いろいろなサイトの情報を参考にさせてもらっています。あり...
* docker-compose ファイル一覧
├ docker-compose.yml
├ Dockerfile
└ cron.sh
** docker-compose.yml
#prettify{{
version: '3'
services:
centos7:
build: ./
volumes:
- ./cron.sh:/opt/cron.sh
environment:
TZ: Asia/Tokyo
container_name: "healthcheck-centos7"
# restart: always
}}
** Dockerfile
#prettify{{
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") |...
; (crond -n &) \
; sleep infinity
}}
** cron.sh
#prettify{{
#!/bin/bash
items=(
# 以下に監視対象を記述してください
# 'チェックするURL | エラー発生メールの宛先'
'https://www.example.com/|rb20det@example.com'
'http://www2.example.com/|jzx80@example.com,ae86@example...
)
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
}}
終了行:
#contents
サーバーの死活監視スクリプトです。
サーバーにアクセスしエラーだったらメールで通知します。そ...
というような簡素な機能しかありませんが事足りることも多い...
これまでは windows 上で同様のことをしておりました。特に不...
せっかくなので Docker Compose を使って最小限の記述をする...
いろいろなサイトの情報を参考にさせてもらっています。あり...
* docker-compose ファイル一覧
├ docker-compose.yml
├ Dockerfile
└ cron.sh
** docker-compose.yml
#prettify{{
version: '3'
services:
centos7:
build: ./
volumes:
- ./cron.sh:/opt/cron.sh
environment:
TZ: Asia/Tokyo
container_name: "healthcheck-centos7"
# restart: always
}}
** Dockerfile
#prettify{{
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") |...
; (crond -n &) \
; sleep infinity
}}
** cron.sh
#prettify{{
#!/bin/bash
items=(
# 以下に監視対象を記述してください
# 'チェックするURL | エラー発生メールの宛先'
'https://www.example.com/|rb20det@example.com'
'http://www2.example.com/|jzx80@example.com,ae86@example...
)
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
}}
ページ名: