api查询所有记录 zabbix_调用zabbix api统计统计某个item的所有机器的history数据

该脚本利用Zabbix API收集指定时间范围内含有$itemkey(系统CPU负载)的机器Item的历史数据,计算最大值、最小值和平均值,并以CSV格式保存。主要步骤包括登录API获取token,检索item信息,获取主机信息,以及处理和输出数据。

这个脚本调用zabbix的api去抓取所有有$itemkey(数字类型的有效)的机器的item的指定时间的history的数据,计算出最大,最小和平均值,保存为csv文件,脚本一共输出5列(主机名,itemid,最大值,最小值,平均值)

#!/bin/bash

apiurl="http://10.1.x.x/zabbix/api_jsonrpc.php"

starttime="2016-09-01 00:00:00"

stoptime="2016-09-25 00:00:00"

username="username"

password="password"

itemkey="system.cpu.load[percpu,avg1]"

csvfile=/tmp/cpuinfo.csv

startts=`date +%s -d "$starttime"`

stopts=`date +%s -d "$stoptime"`

echo '"hostname","itemid","min","max","avg"' > $csvfile

gettoken() {

curl -d "{\"jsonrpc\": \"2.0\",\"method\": \"user.login\",\"params\": {\"user\": \"$username\",\"password\": \"$password\"},\"id\":1,\"auth\":null}" -H "Content-Type:application/json" $apiurl 2>/dev/null|sed 's/.*result":"//'|sed 's/".*$//'|| return 1

}

getdatabyitemid() {

itemdata=`curl -d "{\"jsonrpc\": \"2.0\",\"method\": \"history.get\",\"params\": {\"output\": \"extend\",\"history\": 0,\"itemids\": \"$1\",\"time_from\": $startts,\"time_till\": $stopts},\"id\": 1,\"auth\":\"$token\"}" -H "Content-Type:application/json" $apiurl 2>/dev/null`

max=`echo $itemdata|jq .|grep ' "value":'|sed 's/.*": "//'|sed 's/",//'|sort -n|tail -1`

min=`echo $itemdata|jq .|grep ' "value":'|sed 's/.*": "//'|sed 's/",//'|sort -n|head -1`

lc=`echo $itemdata|jq .|grep ' "value":'|sed 's/.*": "//'|sed 's/",//'|wc -l`

count=`echo $itemdata |jq .|grep ' "value":'|sed 's/.*": "//'|sed 's/",//'|awk '{i+=$1}'END'{print i}'`

avg=`awk 'BEGIN{printf "%.2f\n", '$count'/'$lc'}'`

echo "\"$host\",\"$1\",\"$min\",\"$max\",\"$avg\""

echo "\"$1\",\"$min\",\"$max\",\"$avg\"" >> $csvfile

}

getitems() {

curl -d "{\"jsonrpc\": \"2.0\",\"method\": \"item.get\",\"params\": {\"output\": \"extend\",\"search\": {\"key_\":\"$itemkey\"}},\"id\": 1,\"auth\":\"$token\"}" -H "Content-Type:application/json" $apiurl 2>/dev/null

}

gethostbyitemids() {

host=`curl -d "{\"jsonrpc\": \"2.0\",\"method\": \"host.get\",\"params\": {\"output\": \"extend\",\"itemids\": \"$1\"},\"id\": 1,\"auth\":\"$token\"}" -H "Content-Type:application/json" $apiurl 2>/dev/null |jq .|grep ' "host":'|awk -F'"' '{print $4}'`

echo "search host \"$host\" item \"$itemkey\" data....."

echo -n "\"$host\"," >> $csvfile

}

token=`gettoken`|| (echo "get token failed" && exit 1)

echo $token

itemids=`getitems`&& echo $itemids|jq .|grep ' "itemid":'|sed 's/.*itemid": "//'|sed 's/",//'|while read n;do gethostbyitemids $n;getdatabyitemid $n;done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值