将zabbix 监控图以图片格式发送邮件到管理员邮箱

简介: 将zabbix 监控图以图片格式发送邮件到管理员邮箱
1.cd /home/

vim zabbix_send_mail.py

#!/usr/bin/python
# -*- coding:utf-8 -*-

# http://www.cnblogs.com/hoods/p/6413330.html
# http://blog.csdn.net/xiegh2014/article/details/76572556
# http://www.runoob.com/python/python-email.html
# 感谢上面三位仁兄的源码。
# 各取一半一半,揉合之。
# 能达到获取图片与发送邮件的效果。
# 略粗糙,仅参考。
# 2017-10-24

import HTMLParser
import urlparse
import urllib
import urllib2
import cookielib
import string
import os
import smtplib
import datetime
import cookielib, urllib2, urllib
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage

host = "192.168.31.131"   
smtpserver = 'smtp.aliyun.com'
mail_username = 'user1@aliyun.com'
mail_password = 'redhat'
receiver = 'user2@aliyun.com'
#receiver = ['user3@aliyun.com', 'user4@aliyun.com'] # 如需多个收到邮件
Subject = Header('测试','utf-8')

# 图片页面
hosturl = "http://192.168.31.131/chart2.php?graphid=796&period=3600"

# post数据接收和处理的页面(我们要向这个页面发送我们构造的Post数据)
posturl = "http://192.168.31.131/index.php"

# 设置一个cookie处理器,它负责从服务器下载cookie到本地,并且在发送请求时带上本地的cookie
cj = cookielib.LWPCookieJar()
cookie_support = urllib2.HTTPCookieProcessor(cj)
opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)
urllib2.install_opener(opener)

# 打开图片页面(他的目的是从页面下载cookie,这样我们在再送post数据时就有cookie了,否则发送不成功)
h = urllib2.urlopen(hosturl)

# 构造header,一般header至少要包含一下两项。
# 抓包得到。

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0',
'Referer': 'http://192.168.31.131/zabbix.php?action=dashboard.view'}


# 构造Post数据。
# 抓包得到。
postData = {
    'name': 'Admin',    # 用户名
    'password': 'zabbix',   # 密码
    'autologin': 1,
    'enter': 'Sign in'
}

# 需要给Post数据编码
postData = urllib.urlencode(postData)

# 通过urllib2提供的request方法来向指定Url发送我们构造的数据,并完成登录过程
request = urllib2.Request(posturl, postData, headers)
response = urllib2.urlopen(request)
text = response.read()


def get_graph(host, graphid, period, image_name):
path = "/tmp/test/"
#zabbix的图片的地址的构造
url = "http://%s/chart2.php?graphid=%s&period=%s" % (host, graphid, period)
img_req = urllib2.Request(url)
png = urllib2.urlopen(img_req).read()

file = path + image_name + '.png'
with open(file,'wb') as f:
f.write(png)


def SendMail(receiver, Subject, smtpserver, mail_username, mail_password):
msgRoot = MIMEMultipart('related')
msgRoot['Subject'] = Subject
msgRoot['From'] = ("%s<youyou12@aliyun.com>") % (Header('testt!!!', 'utf-8'),)
sendText = '<b>Some <i>HTML</i> text</b> and an image.<br><img src="cid:image1"><br>'
msgText = MIMEText(sendText, 'html', 'utf-8')
msgRoot.attach(msgText)

fp = open('/tmp/test/cpu_load.png', 'rb')
msgImage = MIMEImage(fp.read())
fp.close()
msgImage.add_header('Content-ID', '<image1>')
msgRoot.attach(msgImage)

smtp = smtplib.SMTP()
smtp.connect(smtpserver)
smtp.login(mail_username, mail_password)
smtp.sendmail(mail_username, receiver, msgRoot.as_string())
smtp.quit()


get_graph(host, 796, 3600, 'cpu_load')
SendMail(receiver, Subject, smtpserver, mail_username, mail_password)

2.mkdir /tmp/test/

3.python zabbix_send_mail.py

4.ls /tmp/test/      # 图片获取成功
cpu_load.png

5.查看邮件           # 成功收到邮件
ff91ee97fe166f5fd301c49c0abcd4be2631532a



目录
相关文章
|
4月前
|
存储 SQL 监控
修改Zabbix源码实现监控数据双写,满足业务需求!
虽然对接Elasticsearch后有诸多好处,但是它不往数据库写历史数据了,同时还不再计算趋势数据了。有这么一个场景...
修改Zabbix源码实现监控数据双写,满足业务需求!
|
5月前
|
数据采集 监控 数据库
OceanBase社区版可以通过Zabbix监控
OceanBase社区版可以通过Zabbix监控
88 4
|
5月前
|
监控 关系型数据库 机器人
小白带你学习linux的监控平台zabbix
小白带你学习linux的监控平台zabbix
142 0
|
1月前
|
监控 网络协议 Unix
centos7 zabbix安装客户端agent -配置监控远程主机 在需要监控的电脑上安装
centos7 zabbix安装客户端agent -配置监控远程主机 在需要监控的电脑上安装
22 0
|
2月前
|
数据采集 监控 数据库
请问OceanBase社区版能否通过zabbix监控,然后将报错信息展现到grafana?
【2月更文挑战第25天】请问OceanBase社区版能否通过zabbix监控,然后将报错信息展现到grafana?
26 2
|
3月前
|
监控 Cloud Native 关系型数据库
使用 Grafana 统一监控展示 - 对接 Zabbix
使用 Grafana 统一监控展示 - 对接 Zabbix
|
5月前
|
监控 Docker 容器
Zabbix【部署 03】zabbix-agent2安装配置使用(zabbix-agent2监控docker实例分享)
Zabbix【部署 03】zabbix-agent2安装配置使用(zabbix-agent2监控docker实例分享)
269 0
|
5月前
|
监控 Java
Zabbix【部署 02】Zabbix-Java-Gateway安装配置使用(使用Zabbix-Java-Gateway通过JMX监控Java应用程序实例分享)
Zabbix【部署 02】Zabbix-Java-Gateway安装配置使用(使用Zabbix-Java-Gateway通过JMX监控Java应用程序实例分享)
94 0
|
1月前
|
监控 关系型数据库 应用服务中间件
zabbix自定义监控、钉钉、邮箱报警
zabbix自定义监控、钉钉、邮箱报警,实验准备,安装,添加监控对象,添加自定义监控项,监控mariadb,监控NGINX,钉钉报警设置,邮件报警
149 0
|
5月前
|
存储 监控 前端开发
zabbix概述及简单的在centos7安装Zabbix5.0及添加监控对象
Zabbix是一种开源的企业级监控解决方案,用于实时监控网络、服务器、应用程序等各种设备和服务的性能和可用性,并提供通知和报警功能。它具有灵活可扩展、可定制化的特点,可以满足不同规模和需求的监控需求。
199 0