由于工作原因 需要zabbix 制作一个报表 每日看到流量 情况 每周 每月服务器状态报表
网上找到以下脚本 可以出图 但是出图的时候提示
ERROR: zabbix has receieved an incorrect request.
Field "itemids" is mandatory
初步判断 是出在读取itemid 出错
请教如何获取到 Itemid
mysql 数据库items 里面的 itemid 貌似不对
请求组织 技术支援~~~ 要过年了 要命呀
脚本信息如下
#!/bin/bash
#不配置字符集,脚本放到crontab里发出的中文E-MAIL乱码
export LANG=en_US.UTF-8
#有点强迫症,习惯什么东西在什么地方干 ^_^
cd /home/zabbix/graph
#保存cookie文件名
COOKIE=zbx_cookie.txt
> $COOKIE
#我是在zbx上开一个组,弄一个只读账号,把想出图的主机放进去。
NAME="Admin"
PASSWD="renn8918abcdefg"
#EMAIL木什么好说地,有几个e-mail并排写就好啦。
EMAIL="[email protected]"
#需要提取数据的IP地址,其实这个IP主要是用来给图片命名用的。恩恩
IPADDR=(127.0.0.1)
#这个地方比较麻烦,因为itemid是唯一的,所以需要自己肉眼高速扫描的去查。
#这里我们拿内存和cpu来举个例子吧。恩恩。
CPU_ITEMID=(12345 67890)
MEM_ITEMID=(98765 65432)
#我们高大上的zbx地址
URL="http://61.186.251.202/zabbix"
#登录保存cookie
curl -vx -s -c $COOKIE -b $COOKIE -d "request=&name=${NAME}&password=${PASSWD}&autologi n=1&enter=Sign+in" $URL
#还是强迫症,木办法。
[[ -d cpu_png ]] || mkdir cpu_png
[[ -d mem_png ]] || mkdir mem_png
#PERIOD配置获取数据的时间段,用秒数来表示。
#ld需求要7天内的。604800,大家都懂的。
#这里举个例子我写的3600。
PERIOD=86400
#这是我们的开始时间,也就是当前时间,
STIME=$(date +%Y%m%d%H%M%S)
#图片宽度
WHIDTH=1200
#我是针对ITEMID组来进行循环创建图片的,为了显的好看点,我才这么写的。
#要不横着写起来太长鸟~!你们懂的。我们开始拼url
for i in $(seq 0 $[${#CPU_ITEMID[@]}-1]);do
curl -s -b $COOKIE \
-F "itemid=${CPU_ITEMID[i]}" \
-F "period=$PERIOD" \
-F "curtime=$STIME" \
-F "width=$WHIDTH" \
"$URL/chart.php" > cpu_png/${IPADDR[i]}_cpu.png
done
for i in $(seq 0 $[${#MEM_ITEMID[@]}-1]);do
curl -s -b $COOKIE \
-F "itemid=${MEM_ITEMID[i]}" \
-F "period=$PERIOD" \
-F "curtime=$STIME" \
-F "width=$WHIDTH" \
"$URL/chart.php" > mem_png/${IPADDR[i]}_mem.png
done
#我开始有点懒了,反正图片都出来了爱怎么地怎么地吧。我手动拼的。
#CPU_PNG="-a cpu_png/127.0.0.1_cpu.png -a cpu_png/127.0.0.1_cpu.png"
#MEM_PNG="-a mem_png/127.0.0.1_mem.png -a mem_png/127.0.0.1_mem.png"
#E-MAIL的TITLE,都懂的。不解释了。
CPU_TITLE="$(date +%Y年%m月%d日) Cpu idle 曲线图"
MEM_TITLE="$(date +%Y年%m月%d日) Memory realused 曲线图"
#卡卡卡开始对ld进行邮件轰炸,用不用写个死循环呢。
echo "附件为抽查服务器cpu idle曲线图" | mailx -s "$CPU_TITLE" $CPU_PNG $EMAIL
echo "附件为抽查服务器memory realused曲线图" | mailx -s "$MEM_TITLE" $MEM_PNG $EMAIL
#做事要干净,吃完饭记得擦嘴。
#[[ -d cpu_png ]] && rm -rf cpu_png
#[[ -d mem_png ]] && rm -rf mem_png
exit 0
网上找到以下脚本 可以出图 但是出图的时候提示
ERROR: zabbix has receieved an incorrect request.
Field "itemids" is mandatory
初步判断 是出在读取itemid 出错
请教如何获取到 Itemid
mysql 数据库items 里面的 itemid 貌似不对
请求组织 技术支援~~~ 要过年了 要命呀
脚本信息如下
#!/bin/bash
#不配置字符集,脚本放到crontab里发出的中文E-MAIL乱码
export LANG=en_US.UTF-8
#有点强迫症,习惯什么东西在什么地方干 ^_^
cd /home/zabbix/graph
#保存cookie文件名
COOKIE=zbx_cookie.txt
> $COOKIE
#我是在zbx上开一个组,弄一个只读账号,把想出图的主机放进去。
NAME="Admin"
PASSWD="renn8918abcdefg"
#EMAIL木什么好说地,有几个e-mail并排写就好啦。
EMAIL="[email protected]"
#需要提取数据的IP地址,其实这个IP主要是用来给图片命名用的。恩恩
IPADDR=(127.0.0.1)
#这个地方比较麻烦,因为itemid是唯一的,所以需要自己肉眼高速扫描的去查。
#这里我们拿内存和cpu来举个例子吧。恩恩。
CPU_ITEMID=(12345 67890)
MEM_ITEMID=(98765 65432)
#我们高大上的zbx地址
URL="http://61.186.251.202/zabbix"
#登录保存cookie
curl -vx -s -c $COOKIE -b $COOKIE -d "request=&name=${NAME}&password=${PASSWD}&autologi n=1&enter=Sign+in" $URL
#还是强迫症,木办法。
[[ -d cpu_png ]] || mkdir cpu_png
[[ -d mem_png ]] || mkdir mem_png
#PERIOD配置获取数据的时间段,用秒数来表示。
#ld需求要7天内的。604800,大家都懂的。
#这里举个例子我写的3600。
PERIOD=86400
#这是我们的开始时间,也就是当前时间,
STIME=$(date +%Y%m%d%H%M%S)
#图片宽度
WHIDTH=1200
#我是针对ITEMID组来进行循环创建图片的,为了显的好看点,我才这么写的。
#要不横着写起来太长鸟~!你们懂的。我们开始拼url
for i in $(seq 0 $[${#CPU_ITEMID[@]}-1]);do
curl -s -b $COOKIE \
-F "itemid=${CPU_ITEMID[i]}" \
-F "period=$PERIOD" \
-F "curtime=$STIME" \
-F "width=$WHIDTH" \
"$URL/chart.php" > cpu_png/${IPADDR[i]}_cpu.png
done
for i in $(seq 0 $[${#MEM_ITEMID[@]}-1]);do
curl -s -b $COOKIE \
-F "itemid=${MEM_ITEMID[i]}" \
-F "period=$PERIOD" \
-F "curtime=$STIME" \
-F "width=$WHIDTH" \
"$URL/chart.php" > mem_png/${IPADDR[i]}_mem.png
done
#我开始有点懒了,反正图片都出来了爱怎么地怎么地吧。我手动拼的。
#CPU_PNG="-a cpu_png/127.0.0.1_cpu.png -a cpu_png/127.0.0.1_cpu.png"
#MEM_PNG="-a mem_png/127.0.0.1_mem.png -a mem_png/127.0.0.1_mem.png"
#E-MAIL的TITLE,都懂的。不解释了。
CPU_TITLE="$(date +%Y年%m月%d日) Cpu idle 曲线图"
MEM_TITLE="$(date +%Y年%m月%d日) Memory realused 曲线图"
#卡卡卡开始对ld进行邮件轰炸,用不用写个死循环呢。

echo "附件为抽查服务器cpu idle曲线图" | mailx -s "$CPU_TITLE" $CPU_PNG $EMAIL
echo "附件为抽查服务器memory realused曲线图" | mailx -s "$MEM_TITLE" $MEM_PNG $EMAIL
#做事要干净,吃完饭记得擦嘴。
#[[ -d cpu_png ]] && rm -rf cpu_png
#[[ -d mem_png ]] && rm -rf mem_png
exit 0
Comment