发送邮件的脚本

#!/usr/bin/python
#coding:utf-8
import smtplib, time, os
from email.mime.text import MIMEText
from email.header import Headerdef send_mail_html(file):'''发送html内容邮件'''# 发送邮箱#sender = 'l10880347@163.com'sender = ("%s<l10880347@163.com>")%(Header('Zabbix监控系统告警!','utf-8'),) # 接收邮箱receiver = '10880347@qq.com'# 发送邮件主题t = time.strftime("%Y年%m月%d日", time.localtime())subject = t +'zabbix监控报表!'# 发送邮箱服务器smtpserver = 'smtp.163.com'# 发送邮箱用户/密码username = 'l10880347'password = '你的授权码'# 读取html文件内容f = open(file, 'rb')mail_body = f.read()f.close()# 组装邮件内容和标题,中文需参数‘utf-8’,单字节字符不需要msg = MIMEText(mail_body, _subtype='html', _charset='utf-8')msg['Subject'] = Header(subject, 'utf-8')msg['From'] = sendermsg['To'] = receiver# 登录并发送邮件try:smtp = smtplib.SMTP()smtp.connect(smtpserver)smtp.login(username, password)smtp.sendmail(sender, receiver, msg.as_string())except:print("邮件发送失败!")else:print("邮件发送成功!")finally:smtp.quit()def find_new_file(dir):'''查找目录下最新的文件'''file_lists = os.listdir(dir)file_lists.sort(key=lambda fn: os.path.getmtime(dir + "/" + fn)if not os.path.isdir(dir + "/" + fn)else 0)# print('最新的文件为: ' + file_lists[-1])file = os.path.join(dir, file_lists[-1])print('/usr/lib/zabbix/repostscripts/html/:', file)return filedir = '/usr/lib/zabbix/repostscripts/html/'  # 指定文件目录
file = find_new_file(dir)  # 查找最新的html文件
send_mail_html(file)  # 发送html内容邮件

html的文件内容

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>zabbix监控告警</title>
</head>
<body>
<table width="900" border="0">
<tr>
<td colspan="2" style="background-color:#FFA500;">
<h4>告警级别: 1 表示:信息 2 表示:告警 3 表示:一般严重 4 表示:严重 5 表示:灾难</h4>
</td>
</tr>
<tr>
<td style="background-color:#FFD700;width:100px;">
<TABLE BORDER=1><TR><TH>主机</TH><TH>触发器</TH><TH>告警级别</TH><TH>告警次数</TH></TR><TR><TD>Zabbix server</TD><TD>{HOST.NAME} has just been restarted</TD><TD>1</TD><TD>14</TD></TR><TR><TD>Zabbix server</TD><TD>Zabbix unreachable poller processes more than 75% busy</TD><TD>3</TD><TD>10</TD></TR><TR><TD>Zabbix server</TD><TD>Disk I/O is overloaded on {HOST.NAME}</TD><TD>2</TD><TD>8</TD></TR><TR><TD>Zabbix server</TD><TD>Zabbix agent on {HOST.NAME} is unreachable for 5 minutes</TD><TD>3</TD><TD>5</TD></TR><TR><TD>Zabbix server</TD><TD>Zabbix preprocessing worker processes more than 75% busy</TD><TD>3</TD><TD>4</TD></TR><TR><TD>Zabbix server</TD><TD>Zabbix trapper processes more than 75% busy</TD><TD>3</TD><TD>4</TD></TR><TR><TD>Zabbix server</TD><TD>Zabbix alerter processes more than 75% busy</TD><TD>3</TD><TD>2</TD></TR><TR><TD>Zabbix server</TD><TD>Zabbix proxy poller processes more than 75% busy</TD><TD>3</TD><TD>2</TD></TR><TR><TD>Zabbix server</TD><TD>Zabbix preprocessing manager processes more than 75% busy</TD><TD>3</TD><TD>2</TD></TR><TR><TD>devops-docker-node50</TD><TD>Zabbix agent on {HOST.NAME} is unreachable for 5 minutes</TD><TD>3</TD><TD>2</TD></TR><TR><TD>Zabbix server</TD><TD>Zabbix poller processes more than 75% busy</TD><TD>3</TD><TD>2</TD></TR><TR><TD>Zabbix server</TD><TD>Zabbix alert manager processes more than 75% busy</TD><TD>3</TD><TD>2</TD></TR></TABLE>
</td>
</tr>
<tr>
<td colspan="2" style="background-color:#FFA500;text-align:center;">
zabbix告警统计</td>
</tr>
</table>
</body>
</html>
<html><style> .title{font-weight:bold;font-size:18px;}</style><body><p><img src=""><br><br><spanclass="title">运维日报</span>
            <br><br>
            各项监控指标如下:<br>目前添加监控主机为:101 台
            <br>
            基础监控告警为:10次<br>中间监控告警为:11次
            <br>
            数据库监控告警为:5次
            <br>
            业务监控告警为:3次<br><br><span class="title">运行情况</span><br><br>CPU最小闲置10%  5台服务器<br>内存使用率大于10% 20台服务器<br>磁盘使用率超过80% 40台服务器<br><br><span class="title">运维监控日报统计</span><br><br></p></body>
</html>

生成XLSX脚本

#!/usr/bin/python
# coding:utf-8
import xlsxwriter# 创建一个Excel文件
workbook = xlsxwriter.Workbook('zabbix.xlsx')
# 创建一个工作表sheet对象,使用默认名称:"Sheet1"
worksheet = workbook.add_worksheet("repost")
# 创建一个图表对象
chart = workbook.add_chart({'type':'column'})# 定义数据表头
title = [u'告警级别',u'星期一',u'星期二',u'星期三',u'星期四',u'星期五',u'星期六',u'星期日',u'平均告警次数']
# 定义业务名称列表
buname = [u'信息',u'一般严重',u'非常严重',u'严重',u'灾难']
# 定义5个频道一周七天的数据列表
data = [[1,2,5,9,1,1,8],[2,8,9,9,8,0,9],[5,2,8,1,7,8,5],[1,5,8,8,4,0,9],[0,5,8,6,3,8,4]
]# 定义数据formatter格式对象,设置边框加粗1像素
formatter = workbook.add_format()
formatter.set_border(1)
# 定义标题栏格式对象:边框加粗1像素,背景色为灰色,单元格内容居中、加粗
title_formatter = workbook.add_format()
title_formatter.set_border(1)
title_formatter.set_bg_color('#cccccc')
title_formatter.set_align('center')
title_formatter.set_bold()
# 定义平均值栏数据格式对象:边框加粗1像素,数字按2位小数显示
ave_formatter = workbook.add_format()
ave_formatter.set_border(1)
ave_formatter.set_num_format('0.00')# 定义图表数据系列函数
def chart_series(cur_row):chart.add_series({'categories':'=repost!$B$1:$H$1','values':'=repost!$B${}:$H${}'.format(cur_row,cur_row),'line':{'color':'black'},'name':'=repost!$A${}'.format(cur_row)})# 注:其中categories表示x轴,values表示y轴,line表示线条样式,name表示图例项# 下面分别以行和列的方式将标题栏、业务名称、流量数据写入单元格,并引用不同的格式对象
worksheet.write_row('A1',title,title_formatter)
worksheet.write_column('A2',buname,formatter)
# 写入第2到第6行的数据,并将第2~6行数据加入图表系列
for i in range(2,7):worksheet.write_row('B{}'.format(i),data[i-2],formatter)# 计算平均流量栏数据并写入worksheet.write_formula('I{}'.format(i),'=AVERAGE(B{}:H{})'.format(i,i),ave_formatter)# 将每一行数据加入图表序列chart_series(str(i))# 设置图表大小
chart.set_size({'width':577,'height':287})
# 设置图表大标题
chart.set_title({'name':u'zabbix监控告警周报表'})
# 设置y轴小标题
chart.set_y_axis({'name':''})# 在A8单元格插入图表
worksheet.insert_chart('A8',chart)# 关闭Excel文档
workbook.close()

使用Grafana实现监控告警报表可视化

zabbix监控告警表报统计相关推荐

  1. 模板学堂丨Zabbix监控告警大屏

    DataEase开源数据可视化分析平台模板市场( https://dataease.io/templates/)于2022年6月正式发布.模板市场旨在为DataEase用户提供专业.美观.拿来即用的仪 ...

  2. zabbix企业级分布式监控系统第二版pdf_XSKY监控告警功能通过Zabbix官方认证,轻松支持微信短信等实时告警...

    近日,XSKY SDS产品提供的Zabbix监控告警功能通过Zabbix官方认证,并入选Zabbix官方推荐的存储监控解决方案. 随着XSKY SDS产品深入各个行业,客户对存储监控的需求越来越高,希 ...

  3. Zabbix监控流程和web界面功能

    文章目录 1 zabbix监控配置流程详解 1.1 添加监控 1.2 监控配置步骤 1.3 zabbix监控项配置 1.4 zabbix监控告警介绍与配置 2 web界面监控说明 2.1 用户设置 2 ...

  4. 用 Zabbix 监控值统计每个月触发器告警次数

    场景模拟: 知名企业A公司的运维人员小智,想统计一下每个月发生的告警数量,于是他去查询数据库表alerts告警通知表,但是他发现界面上出现的一些问题(触发器生效),没有记录到alerts表中.因为只有 ...

  5. zabbix mysql监控告警_Zabbix监控mysql配置及故障告警配置

    同时介绍了触发器的创建及zabbix通过邮件方式告警配置. 一.配置自带模板监控mysql 1.提供配置文件模板 文件位置在源码包/usr/local/src/zabbix-3.0.4/conf/za ...

  6. Zabbix #Zabbix 构建企业级监控告警平台 1

    - Zabbix 构建企业级监控告警平台 一. 简介 Zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.它能监视各种网络参数,保证服务器系统的安全运营: ...

  7. Zabbix监控系统搭建飞书机器人告警

    Zabbix监控系统搭建&飞书机器人告警 操作系统:CentOS7x64 Zabbix版本:5.0LTS 参考官网链接:下载Zabbix 5.0 LTS for CentOS 7, MySQL ...

  8. zabbix监控-企业微信webhook告警并使用markdown格式

    zabbix监控-企业微信webhook告警并使用markdown格式 最终告警样式: markdown格式与text格式的优点:文字排版清晰,可对不同文字标识颜色,大小等. 此方法使用zabbix提 ...

  9. Zabbix 监控功能实现(监控数据库,使用percona 优化数据库的监控,监控java应用,Agent端 主动传输数据,Zabbix proxy 的使用,Zabbix 监控 + 智能降噪告警)

    1.监控数据库: 基本和监控nginx时一样: 不同的是:在给了mysql密码以后,需要在指定位置编写.my.cnf文件,告诉系统数据库root用户的密码: 重启 systemctl restart ...

最新文章

  1. 计算机到计算机 临时网络,电脑如何设置临时网络
  2. Struts2官网翻译
  3. 大剑无锋之数据库的范式【面试推荐】
  4. 在VUE中利用MQTT协议实现即时通讯
  5. Html做文章查看上一篇下一篇功能,SDCMS文章添加上一篇、下一篇
  6. 中如何拉取git代码_git使用教程4pycharm拉取git仓库项目代码
  7. 点到直线的距离c语言程序,点到线段的距离 题解(C++)
  8. HCNA配置telnet远程管理
  9. jQuery插件实现表格隔行换色且感应鼠标高亮行变色
  10. 软件测试员工作经验分享
  11. 初学python类必须要知道的三个基础知识(入门理解)
  12. Visual Studio更改程序图标傻瓜式教程
  13. win、linux环境下JAVA+GDAL部署,jar包启动,相关描述,问题解决
  14. java swing+mysql简单零件销售管理系统、订货决策系统
  15. vue 关于清除浏览器全部cookie的问题及解决方法(绝对有效)
  16. 中药好苦,同义词词典
  17. Android 面试题收集
  18. 数据结构思维导图——线性表(最全)
  19. 几个cve漏洞库查询网站-什么是CVE?常见漏洞和暴露列表概述
  20. Python图形界面开发初步 1

热门文章

  1. 键盘输入保护器:KeyScrambler
  2. 四波混频在波导上的应用
  3. 浙江大学计算机学院保研率,浙江大学2020年保研率是多少
  4. 软件工程 校园兼职 需求报告
  5. 掌握未来趋势的产品经理成长之路
  6. 我看AMD推土机FX-4170和INTEL第三代I3 3220
  7. MySQL必知必会 学习笔记
  8. avue-data可视化大屏初体验
  9. 华为云携手甘肃省医疗保障局,以数字科技为智慧医疗注入新动能
  10. 微型计算机的硬件组成中ssd硬盘通常是指,2013计算机一级B考试模拟试题及答案(18)...