利用ZABBIX进行服务器自动巡检并导出报表
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,实现思路主要是利用zabbix的api来对数据进行获取处理,实现思路如下:zabbix提供了丰富的api,可以根据此api获取zabbix得主机信息,监控项ID,监控项的趋势数据和历史数据首先根据主机
千家信息网最后更新 2026年11月01日利用ZABBIX进行服务器自动巡检并导出报表
实现思路
主要是利用zabbix的api来对数据进行获取处理,实现思路如下:
- zabbix提供了丰富的api,可以根据此api获取zabbix得主机信息,监控项ID,监控项的趋势数据和历史数据
- 首先根据主机组ID获取组内的所有主机信息,包括主机名和IP地址
- 循环主机组内的主机ID,并在循环里再嵌套一个根据监控项键值获取监控项ID的请求
- 根据获取到的监控项ID分别获取历史数据和趋势数据
- 将历史数据和趋势数据的值写到一个字典里,并把循环之后的所有字典添加到列表中
- 将列表中的信息写入到Excel中,把脚本放到定时任务中定时执行
定义获取的时间间隔
x=(datetime.datetime.now()-datetime.timedelta(minutes=120)).strftime("%Y-%m-%d %H:%M:%S")y=(datetime.datetime.now()).strftime("%Y-%m-%d %H:%M:%S")def timestamp(x,y): p=time.strptime(x,"%Y-%m-%d %H:%M:%S") starttime = str(int(time.mktime(p))) q=time.strptime(y,"%Y-%m-%d %H:%M:%S") endtime= str(int(time.mktime(q))) return starttime,endtime根据主机组ID获取主机信息
def get_hosts(groupids,auth): data ={ "jsonrpc": "2.0", "method": "host.get", "params": { "output": [ "name"], "groupids": groupids, "filter":{ "status": "0" }, "selectInterfaces": [ "ip" ], }, "auth": auth, # theauth id is what auth script returns, remeber it is string "id": 1 } gethost=requests.post(url=ApiUrl,headers=header,json=data) return json.loads(gethost.content)["result"]根据获取到的主机信息构建循环,获取主机监控项的数据
获取历史数据
host=[] print(hosts) for i in hosts: item1=[] item2=[] #print(i) dic1={} for j in ['vfs.fs.size[C:,total]','vm.memory.size[total]','system.cpu.num']: data={ "jsonrpc": "2.0", "method": "item.get", "params": { "output": [ "itemid" ], "search": { "key_": j }, "hostids": i['hostid'] }, "auth":auth, "id": 1 } getitem=requests.post(url=ApiUrl,headers=header,json=data) item=json.loads(getitem.content)['result'] hisdata={ "jsonrpc":"2.0", "method":"history.get", "params":{ "output":"extend", "time_from":timestamp[0], #"time_till":timestamp[1], "history":0, "sortfield": "clock", "sortorder": "DESC", "itemids": '%s' %(item[0]['itemid']), "limit":1 }, "auth": auth, "id":1 } gethist=requests.post(url=ApiUrl,headers=header,json=hisdata) hist=json.loads(gethist.content)['result'] item1.append(hist)获取趋势数据
for j in ['vfs.fs.size[C:,used]','vm.memory.size[used]','system.cpu.load']: data={ "jsonrpc": "2.0", "method": "item.get", "params": { "output": [ "itemid" ], "search": { "key_": j }, "hostids": i['hostid'] }, "auth":auth, "id": 1 } getitem=requests.post(url=ApiUrl,headers=header,json=data) item=json.loads(getitem.content)['result'] trendata={ "jsonrpc":"2.0", "method":"trend.get", "params":{ "output": [ "itemid", "value_max", "value_avg" ], "time_from":timestamp[0], "time_till":timestamp[1], "itemids": '%s' %(item[0]['itemid']), "limit":1 }, "auth": auth, "id":1 } gettrend=requests.post(url=ApiUrl,headers=header,json=trendata) trend=json.loads(gettrend.content)['result'] item2.append(trend) 对获取到的数据进行处理,并导出到csv文件中
dic1['Hostname']=i['name'] dic1['IP']=i['interfaces'][0]['ip'] dic1['磁盘C:Total(B)']=round(float(item1[0][0]['value'])/1024**3,2) dic1['磁盘最大C:Used(B)']=round(float(item2[0][0]['value_max'])/1024**3,2) dic1['内存Total(B)']=round(float(item1[1][0]['value'])/1024**3,2) dic1['内存最大Used(B)']=round(float(item2[1][0]['value_max'])/1024**3,2) dic1['内存平均used(B)']=round(float(item2[1][0]['value_avg'])/1024**3,2) dic1['CPU负载最大值']=item2[2][0]['value_max'] dic1['CPU负载平均值']=item2[2][0]['value_avg'] dic1['CPU 核数']=item1[2][0]['value'] x = time.localtime(int(item1[2][0]['clock'])) item1[2][0]['clock'] = time.strftime("%Y-%m-%d %H:%M:%S", x) dic1['clock']=item1[2][0]['clock'] host.append(dic1) print(item) print(host) return host def writecsv(getitem1): with open('data.csv','w',encoding='utf-8-sig') as f: #f.write(codecs.BOM_UTF8) writer = csv.DictWriter(f,csvheader) writer.writeheader() for row in getitem1: writer.writerow(row)实现效果如下:

完整代码可以访问github地址:"https://github.com/sunsharing-note/zabbix/blob/master/xunjian_auto.py"
zabbix API地址:https://www.zabbix.com/documentation/4.0/zh/manual/api/reference/history/get
欢迎各位关注个人公号"没有故事的陈师傅"
数据
主机
监控
信息
历史
历史数据
趋势
循环
最大
内存
地址
字典
思路
磁盘
处理
个人
中将
代码
任务
师傅
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技有限公司
山东特亿宝互联网科技有限公司
互联网与科技发展
华宇互联网科技
互联网 卓越科技
壹账通互联网科技
科技创新互联网企业
广州善班互联网科技
华脉科技工业互联网产品
南山科技园互联网公司有哪些
本届互联网博览会上的黑科技
深圳市罗太互联网科技有限公司
长沙茂晟互联网科技有限公司
高科技互联网套路
广州千川互联网科技有限公司
扫呗互联网科技有限公司
杭州融税互联网科技有限公司
华人运通互联网科技公司
瑞安市蟠桃会互联网科技有限公司
互联网的黑科技实验室
哈尔滨大商圈互联网科技有限公司
远拓互联网科技
金融科技与互联网金融相同和不同
上海宁丞科技互联网
互联网公司黑科技创始人
中国互联网有什么科技
启辰互联网科技
互联网与数字科技关系
国产互联网科技公司
科技美学互联网 艺术