docker: 定时检查docker container的运行状态并发邮件报警
首先创建一个发送邮件的bash脚本 - send_mail.sh:
#!/bin/bash curl -s --user 'api:key-xxxxxxxxxxxxx' \ https://api.mailgun.net/v3/xxxxxxx/messages \ -F from='Support <support@xxx.com>' \ -F to='xxx <xxx@xxx.com>' \ -F subject="$mail_subject" \ -F text="$mail_text"
这里的发送邮件用的是mailgun的服务,可以自行替换成其它邮件提供商。
然后创建一个检查docker状态的脚本 - check_docker_status.sh:
!/bin/bash export mail_subject="docker运行状态异常!!" now=`date +%Y-%m-%d#%H:%M:%S` export mail_text="docker被发现于$now停止运行" docker ps -a | grep 你的docker container id | awk '{ if (!(/Up/)) { system("/home/xxx/send_mail.sh") }}'
然后记得将send_mail.sh和check_docker_status.sh的脚本添加可执行属性。
最后添加到crontab中:
crontab -e 00 * * * * /home/xxx/check_docker_status.sh
这样每个小时0分的时候系统都会检查docker状态,一旦不处于Up的状态,就会发送一份邮件到指定邮箱。
Done