nightingale1/etc/script/notify.py

80 lines
1.8 KiB
Python
Raw Normal View History

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import sys
import json
import os
import smtplib
from email.mime.text import MIMEText
from email.header import Header
# 希望的demo实现效果
# 1. 从stdin拿到告警信息之后格式化为一个有缩进的json写入一个临时文件
# 2. 文件路径和名字是.alerts/${timestamp}_${ruleid}
# 3. 调用SMTP服务器发送告警微信、钉钉、飞书、slack、jira、短信、电话等等留给社区实现
mail_host = "smtp.163.com"
mail_port = 994
mail_user = "ulricqin"
mail_pass = "password"
mail_from = "ulricqin@163.com"
# just for test
mail_body = """
<p>邮件发送测试</p>
<p><a href="https://www.baidu.com">baidu</a></p>
"""
def main():
payload = json.load(sys.stdin)
persist(payload)
def persist(payload):
if not os.path.exists(".alerts"):
os.makedirs(".alerts")
filename = '%d_%d' % (payload['event']['trigger_time'], payload['rule']['id'])
filepath = os.path.join(".alerts", filename)
f = open(filepath, 'w')
print(json.dumps(payload, indent=4), file=f)
f.close()
def send_mail(payload):
print("send_mail")
def send_wecom(payload):
print("send_wecom")
def send_dingtalk(payload):
print("send_dingtalk")
def mail_test():
print("mail_test_todo")
recipients = ["ulricqin@qq.com", "ulric@163.com"]
message = MIMEText(mail_body, 'html', 'utf-8')
message['From'] = mail_from
message['To'] = ", ".join(recipients)
message["Subject"] = "n9e alert"
smtp = smtplib.SMTP_SSL(mail_host, mail_port)
smtp.login(mail_user, mail_pass)
smtp.sendmail(mail_from, recipients, message.as_string())
smtp.close()
print("mail_test_done")
if __name__ == "__main__":
if len(sys.argv) == 1:
main()
elif sys.argv[1] == "mail":
mail_test()
else:
print("I am confused")