有时候运维人员还是比较关注当前未恢复报警信息的,每次想去看就得操作一遍:打开网页->输入密码->点击查看历史告警的选项->进行筛选, 或者也可以告警历史的网页常开着,但是每天来上班电脑开机还需要专门打开他,时间久了好像有点机械化了,所以就想了写一个python脚本每天上午定时发邮件,把未恢复报警统计到邮箱,这样不就很轻松了吗
# -*- encoding: UTF-8 -*-
1 import json 2 import requests 3 import time 4 from requests.auth import HTTPBasicAuth 5 6 7 8 user=‘root‘ 9 password=‘你的密码‘ 10 now_time=time.strftime(‘%Y-%m-%d %H:%M:%S‘,time.localtime(time.time())) 11 12 13 14 def get_n9e_event(): 15 #我这里只查24小时内的,也就86400秒 16 url=‘http://n9e.xxx.com/api/portal/event/cur?limit=1000&nodepath={0}&p=1&stime={1}&etime={2}‘.format(‘cop‘,int(time.time())-86400,int(time.time())) 17 result=requests.get(url=url,auth=HTTPBasicAuth(user,password)) 18 event_list=json.loads(result.text)[‘dat‘][‘list‘] 19 20 21 22 list1=‘截至:{0} \n‘.format(now_time) 23 list1=list1 + ‘目前list1告警列表: \n\n‘ 24 list2=‘截至:{0} \n‘.format(now_time) 25 list2=list2 + ‘目前list2告警列表: \n\n 26 27 for event in event_list: 28 if event[‘sid‘] ==5 or event[‘sid‘] ==6 : #sid是你的告警策略的sid,这里我只想统计5和6策略的告警,我把他放到list2里面 29 alarm_time=format_time(format_time=event[‘created‘],type_time=‘o‘) 30 if event[‘event_type‘] == ‘alert‘: 31 event[‘event_type‘] =‘PROBLEM‘ 32 list2=list2 +‘主机名: ‘+event[‘endpoint‘]+‘\n告警项: ‘+event[‘info‘]+‘\n告警tag: ‘+event[‘tags‘]+‘\n告警数据:‘+event[‘value‘]+‘\n告警注释: ‘+event[‘sname‘]+‘\n目前状态: ‘+event[‘event_type‘]+‘\n告警产生时间: ‘+alarm_time+‘\n------------------------------------------------------\n‘ 33 elif event[‘sid‘] ==73 or event[‘sid‘] ==52 or event[‘sid‘] ==118 or event[‘sid‘] ==119: #此类告警跳过不统计,你可以把你不想统计的sid加进来 34 continue 35 else: #除了上面的sid,剩下所有的告警都统计到list1里面 36 alarm_time=format_time(format_time=event[‘created‘],type_time=‘o‘) 37 if event[‘event_type‘] == ‘alert‘: 38 event[‘event_type‘] =‘PROBLEM‘ 39 list1=list1 +‘主机名: ‘+event[‘endpoint‘]+‘\n告警项: ‘+event[‘info‘]+‘\n告警tag: ‘+event[‘tags‘]+‘\n告警数据:‘+event[‘value‘]+‘\n告警注释: ‘+event[‘sname‘]+‘\n目前状态: ‘+event[‘event_type‘]+‘\n告警产生时间: ‘+alarm_time+‘\n------------------------------------------------------\n‘ 40 return list1,list2 41 42 def send_mail(tos,subject,content): 43 url=‘http://127.0.0.1:4000/sender/mail‘ #我这里用到了open-falcon的mail-provider插件,用来发送邮件 44 postdata={‘tos‘: tos,‘subject‘: subject, ‘content‘: content} 45 #参数格式 46 #postdata={‘tos‘:‘xxx@xxx.com,xxx@xxx.com‘,‘subject‘: ‘未恢复告警统计‘, ‘content‘: list1} 47 result_res=requests.post(url=url,data=postdata) 48 return result_res.text 49 50 51 def main(): 52 list1,list2=get_n9e_event() 53 send_result1=send_mail(tos=‘xxx@xxx.com,xxx@xxx.com‘,subject=‘生产list1告警统计‘,content=list1) 54 send_result2=send_mail(tos=‘xxx@xxx.com,xxx@xxx.com‘,subject=‘生产list2告警统计‘,content=list2) 55 print(send_result1) 56 print(send_result12) 57 58 if __name__ == ‘__main__‘: 59 main()
这样每天早上看邮件,就可以知道有什么告警没有恢复了
原文:https://www.cnblogs.com/opsdemo/p/14208067.html