1、目标
zabbix拥有丰富的图形展示,有时会需要将特定的实时生成的图形数据发给其他部门使用。这里就是有个将IMS系统的在线人数发给特定邮件组的需求实现过程。
2、环境
a、zabbix_server端已经设置好ims系统的在线人数图形展现,即登录zabbix front拥有权限的人可以在screen里面看到IMS在线人数的图形。
b、牵涉到发邮件,那么假定该服务器上已经安装了sendmail服务;
c、已经确定该图形发送周期为天,那么发送脚本可以放到crontab里面执行;
d、因为zabbix front需要cookie验证登录后的操作,本例使用curl来模拟浏览器的登录和后续操作,如果curl在系统中不存在请事先安装。
3、shell设置过程
a、第一步需要设置curl模拟的用户信息
b、第二步设置shell工作目录
c、设置生成图形的参数,包括图片宽度和显示周期
d、模拟登录zabbix front,获取符合c要求的图片
e、发送邮件给相应的邮件组,附件为下载的图片
f、设置crontab
#每天发ims邮件
0 18 * * * /home/zabbix/get_ims_png.sh
4、shell脚本内容
#!/bin/bash
source /etc/profile
#设定参数
cookie=za01.txt
name=“your_name"
password="your_password"
url=
#设定工作目录
cd /home/zabbix
#模拟登录zabbix
curl -c $cookie -b $cookie -d "request=&name=$name&password=$password&autologin=1&enter=Sign+in" $url/index.php
#设定下载ims在线用户数的参数
# graphid标示该张图; period标示周期,单位为秒; stime标示开始时间,这里取上一天的此时此刻; width为图片宽度
#graphid=2673&period=86400&stime=20140513143636&updateProfile=1&sid=2955dc34296ccec9
graphid=2673
period=86400
stime=`date -d -1day +%Y%m%d%H%M%S`
width=800
curl -b $cookie -F "graphid=$graphid" -F "period=$period" -F "stime=$stime" -F "width=$width" $url/chart2.php > ims.png
#发邮件
#收件人列表
reciever="xxx@xxx.com yyyy@yyy.com.cn "
cc_reciever="yunwei@xxx.com"
titile=`date +%Y年%m月%d日IMS在线用户数曲线图`
mail -s $titile -a ims.png -c $cc_reciever -r report@xxx.com $reciever
阅读(3854) | 评论(0) | 转发(1) |