[modify] change alert method to mail

This commit is contained in:
gitea 2023-08-25 21:50:46 +08:00
parent 5efa59be75
commit 8d11aa9ec8
2 changed files with 39 additions and 30 deletions

View File

@ -1,12 +1,15 @@
#!/bin/bash #!/bin/bash
> /tmp/docker_alarm.log
docker ps -a --format "table {{.Names}}\t{{.Status}}" > /opt/logs/docker_status.log docker ps -a --format "table {{.Names}}\t{{.Status}}" > /opt/logs/docker_status.log
while read line; do while read line; do
echo $line | grep -q 'Exited' echo $line | grep -q 'Exited'
if [[ $? -eq 0 ]]; then if [[ $? -eq 0 ]]; then
name=`echo $line | awk '{print $1}'` name=`echo $line | awk '{print $1}'`
alarm="Docker Alarm - $name:\nContainer $name has been off line, please check ASAP." echo "Docker Alarm - $name: Container $name has been off line, please check ASAP." >> /tmp/docker_alarm.log
bash /opt/scripts/alert/sendmsg.sh "$alarm"
fi fi
done < /opt/logs/docker_status.log done < /opt/logs/docker_status.log
alarm=`cat /tmp/docker_alarm.log`
python3 /opt/scripts/alert/sendmail.py "Docker Alarms" "$alarm"

View File

@ -4,33 +4,33 @@ import time
import os import os
def send_alert_msg(alert_msg): # def send_alert_msg(alert_msg):
""" # """
send warning messages to phone via Enterprise WeChat Bot API # send warning messages to phone via Enterprise WeChat Bot API
:param alert_msg: messages needed to be sent # :param alert_msg: messages needed to be sent
:return: None # :return: None
""" # """
#
# get the datetime, which is using at a failed situation # # get the datetime, which is using at a failed situation
alert_datetime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) # alert_datetime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
# # Enterprise Wechat Bot API and the format of body to send # # # Enterprise Wechat Bot API and the format of body to send
hook_url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=ddea3f5f-fbfc-4c21-994a-71e9fc50e4ef' # hook_url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=ddea3f5f-fbfc-4c21-994a-71e9fc50e4ef'
body = { # body = {
"msgtype": "text", # "msgtype": "text",
"text": { # "text": {
"content": alert_msg # "content": alert_msg
} # }
} # }
#
# get the result of API call # # get the result of API call
res = requests.post(hook_url, data=json.dumps(body, ensure_ascii=False).encode('utf-8')) # res = requests.post(hook_url, data=json.dumps(body, ensure_ascii=False).encode('utf-8'))
#
# when failed, log it in /opt/logs/alert.log file # # when failed, log it in /opt/logs/alert.log file
if res.status_code != 200: # if res.status_code != 200:
with open('/opt/logs/alert.log', 'a', encoding='utf-8') as alert_log: # with open('/opt/logs/alert.log', 'a', encoding='utf-8') as alert_log:
alert_log.write(alert_datetime + ' >>>> ') # alert_log.write(alert_datetime + ' >>>> ')
alert_log.write('Failed sending message: ') # alert_log.write('Failed sending message: ')
alert_log.write(alert_msg + '\n') # alert_log.write(alert_msg + '\n')
def main(): def main():
@ -87,7 +87,13 @@ def main():
alert_msg += '\n' alert_msg += '\n'
alert_msg += 'So, hurry up!! Go get things done!!' alert_msg += 'So, hurry up!! Go get things done!!'
send_alert_msg(alert_msg) os.environ['subject'] = 'TODO TIPS'
os.environ['txt'] = alert_msg
# os.system('/usr/bin/echo subject = $subject')
# os.system('/usr/bin/echo txt = $txt')
# exit(9)
os.system('/usr/bin/python3 /opt/scripts/alert/sendmail.py "$subject" "$txt"')
# send_alert_msg(alert_msg)
if __name__ == '__main__': if __name__ == '__main__':