将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



目录
相关文章
|
3月前
|
监控 安全 Linux
在Linux中,zabbix如何监控脑裂?
在Linux中,zabbix如何监控脑裂?
|
8天前
|
SQL 监控 数据库
OceanBase社区版可以通过Zabbix监控
OceanBase社区版可以通过Zabbix监控
37 7
|
1月前
|
SQL 监控 数据库
OceanBase社区版可以通过Zabbix监控
【10月更文挑战第5天】随着OceanBase社区版的广泛应用,企业纷纷采用这一高性能、高可用的分布式数据库系统。为了确保系统的稳定运行,使用成熟的Zabbix监控工具进行全面监控至关重要。本文通过具体示例介绍了如何配置Zabbix监控OceanBase,包括安装配置、创建监控模板和监控项、编写脚本、设置触发器及图形展示等步骤,帮助读者快速上手,及时发现并解决问题,确保业务始终处于最佳状态。
40 2
|
2月前
|
监控 关系型数据库 MySQL
zabbix agent集成percona监控MySQL的插件实战案例
这篇文章是关于如何使用Percona监控插件集成Zabbix agent来监控MySQL的实战案例。
50 2
zabbix agent集成percona监控MySQL的插件实战案例
|
2月前
|
监控 前端开发 数据库连接
Zabbix 5.0 LTS的web界面安装及修改zabbix web管理员的默认密码
这篇文章是关于如何安装Zabbix 5.0 LTS的web界面以及如何修改Zabbix web管理员默认密码的教程。
163 1
|
3月前
|
SQL 监控 分布式数据库
【解锁数据库监控的神秘力量!】OceanBase社区版与Zabbix的完美邂逅 —— 揭秘分布式数据库监控的终极奥秘!
【8月更文挑战第7天】随着OceanBase社区版的普及,企业广泛采用这一高性能、高可用的分布式数据库。为保障系统稳定,使用成熟的Zabbix监控工具对其进行全方位监控至关重要。本文通过实例介绍如何在Zabbix中配置监控OceanBase的方法,包括创建监控模板、添加监控项(如TPS)、设置触发器及图形展示,并提供示例脚本帮助快速上手。通过这些步骤,可以有效监控OceanBase状态,确保业务连续性。
102 0
|
5月前
|
监控 数据库 Docker
Zabbix监控神通数据库教程
**摘要:** 本文介绍了如何使用Docker安装和配置神舟通用数据库,并利用Zabbix进行监控。首先,通过Docker安装数据库镜像,启动容器并映射端口。接着,使用默认凭证连接数据库并验证安装。然后,将数据库的Python模块和库文件复制到主机,并安装Python3.5及相应模块,创建外部检查脚本以实现Zabbix的监控功能。示例展示了查询数据库版本的监控指标配置。最后,提到了监控结果的界面展示,并邀请读者探索更多Zabbix监控技巧。
82 0
Zabbix监控神通数据库教程
|
4月前
|
监控 关系型数据库 应用服务中间件
Linux zabbix监控 软件的安装
Linux zabbix监控 软件的安装
|
6月前
|
存储 SQL 监控
修改Zabbix源码实现监控数据双写,满足业务需求!
虽然对接Elasticsearch后有诸多好处,但是它不往数据库写历史数据了,同时还不再计算趋势数据了。有这么一个场景...
修改Zabbix源码实现监控数据双写,满足业务需求!
|
6月前
|
数据采集 监控 数据库
OceanBase社区版可以通过Zabbix监控
OceanBase社区版可以通过Zabbix监控
268 4