前言:

查询监控项历史数据,最常见的办法就是在页面查询,但是页面只能展现最近的500个数值,如果要查询历史数据比较久远或要形成数据表格进行分析,这个办法就不适用了,但是利用zabbix—API查询zabbix监控项历史数据就可以满足这一需求,只需要指定查询的起止时间及监控项,就能以数据的形式进行输出,便于业务侧分析此期间的性能指标是否正常

具体脚本讲解如下:

#coding:utf-8

#给定主机IP获取一段时间内cpu的均值和峰值并写入文件(txt,可以跑完后直接把后缀名改为csv以表格形式打开);需要指定IP文件

import requests

import json

import csv

import time

def get_token():

data = {

"jsonrpc": "2.0",

"method": "user.login",

"params": {

"user": username,

"password": password

},

"id": 0

}

r = requests.get(zaurl, headers=header, data=json.dumps(data))

auth = json.loads(r.text)

return auth["result"]

def item_get(token, host, itemkey):

data = {

"jsonrpc": "2.0",

"method": "item.get",

"params": {

"host": host,

"search": {

"key_": itemkey

},

},

"auth": token,

"id": 1

}

request = requests.post(zaurl, data=json.dumps(data), headers=header)

dict = json.loads(request.content)

# print(dict)

return dict['result'][0]['itemid']

def getdata(token,itemid, start, stop):

data = {

"jsonrpc": "2.0",

"method": "history.get",

"params": {

"output": "extend",

"itemids": itemid,

"history": 0,

"time_from":start,

"time_till":stop

},

"id": 2,

"auth": token,

}

request = requests.post(zaurl, headers=header, data=json.dumps(data))

dict = json.loads(request.content)

print(dict)

return dict['result']

def timecovert(stringtime):

timeArray = time.strptime(stringtime, "%Y-%m-%d %H:%M:%S")

timeStamp = int(time.mktime(timeArray))

return timeStamp

if __name__ == "__main__":

zaurl = "http://IP/api_jsonrpc.php" # 访问zabbix页面的url

header = {"Content-Type": "application/json"}

username = "xxx" #zabbix的账户与密码

password = "xxx"

hostfile="ip.txt"

token = get_token()

starttime = "2020-05-24 11:30:00" #查询历史数据的起止时间

stoptime = "2020-05-24 12:30:00"

start = timecovert(starttime)

stop = timecovert(stoptime)

#生成一个txt文件

datafile = "/home/dwchenrongbin/linfan/data.txt"

fdata = open(datafile,'w')

with open(hostfile, "r") as f:

f1 = f.readlines()

for ips in f1:

host = ips.replace('\n', '').strip()

# 修改参数

#以下例子为cpu

itemkey = ["cpu_use_ag"] #要查询监控项的KEY值

itemid = item_get(token, host, itemkey)

data = getdata(token,itemid,start,stop)

if data:

valuelist = []

for i in data:

valuelist.append(float(i["value"]))

avge = sum(valuelist)/len(valuelist) #查询周期内的平均值

max1 = max(valuelist) #查询周期内的最大值

fdata.write(host + ',' + str(round(avge,2)) + ',' + str(round(max1,2)) + '\n')

print (host, avge, max1,valuelist) #打印出 主机名、平均值、最大值、历史数据

else:

print (host)

fdata.close()

以下是我根据脚本输出整理的Excel表历史数据(IP已被我过滤掉)

api查询所有记录 zabbix_利用zabbix—API查询zabbix监控项历史数据、均值、峰值详细讲解...相关推荐

  1. MySQL查询时记录行号rownum MySQL查询显示行号MySQL查询显示行号MySQL流水号自MySQL自增行号

    MySQL查询时记录行号rownum MySQL查询显示行号MySQL查询显示行号MySQL流水号自MySQL自增行号 一.前言 Oracle中有rownum,实现查询的时候记录行号,MySQL中没有 ...

  2. zabbix入门之添加监控项

    zabbix入门之添加监控项 添加一个不带参数的监控项(system.cpu.switches) 进入"配置"-->"主机"选择某主机的"监控项 ...

  3. api查询所有记录 zabbix_通过Zabbix API获取历史监控数据

    Zabbix API可以通过JSON RPC协议来获取历史数据. 可以采用脚本或者任何支持JSON RPC的工具来使用API. 基本请求格式 Zabbix API 简化的JSON请求如下: { &qu ...

  4. mysql客户端查询_MySQL数据库之利用mysql客户端查询UCSC数据库

    本文主要向大家介绍了MySQL数据库之利用mysql客户端查询UCSC数据库 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. UCSC Genome Browser是由Unive ...

  5. mysql数据库补充知识3 查询数据库记录信息之多表查询

    一 介绍 准备表 company.employee company.department 复制代码#建表 create table department( id int, name varchar(2 ...

  6. zabbix应用之获取监控项的graph曲线图

    在使用zabbix的过程中,我们经常有这样的需求:查看CPU或内存等监控项在某一时间段内的graph曲线图.通常的做法是进入"Latest data"界面,找到主机的监控项,点击右 ...

  7. Zabbix 3.4配置监控项及监控Linux、Windows客户端

    此博客就不再啰嗦那么多了,直接配置,关于Zabbix工作原理及概述请访问之前写的博客: Centos 7搭建Zabbix 4.0监控系统 一.安装Zabbix3.4 二.访问zabbix的Web界面 ...

  8. zabbix详解之监控项自动发现(LLD)

    概述 自动发现(LLD)提供了一种为受监控节点的不同监控指标自动创建监控项,触发器和图形的分发.例如,Zabbix可以在你的机器上自动开始监控服务端口,而无需为每个服务端口手动创建监控项. 此外,可以 ...

  9. 云原生丨手把手教你使用zabbix监控postgresql数据库(超详细讲解)

    文章目录 一.前言 二.什么是zabbix 三.zabbix安装步骤 四.监控postgresql实现步骤 一.前言 对于运维人员来说,监控是非常重要的,因为如果想要保证线上业务整体能够稳定运行,那么 ...

最新文章

  1. html css发展前景,网页设计的发展趋势
  2. SAP MM 物料主数据采购视图中的字段'Var. OUn'的作用?
  3. nginx获得response自定义的header
  4. Win7下硬盘安装Redhat双系统
  5. js 实现文件导出、文件下载
  6. 奔跑吧兄弟变成机器人是哪一期_强竞技的《奔跑吧3》蜕变为“生活服务类综艺”,你还愿意看吗?...
  7. 人工智能在生活中的应用都有哪些?
  8. Linux Shall命令入门
  9. lol更新显示正在连接服务器,wegame更新游戏显示正在连接服务器
  10. python开发指法练习软件_利用“金山打字通”或其它指法训练软件,学习和掌握键盘指法指法输入规则。如果你的电脑中未安装,请到网上下载并自行安装,这里是“金山打字通2016”。...
  11. 小程序服务器装rsshub,RssHub 部署
  12. 简单实用计划提醒便签软件 界面简洁功能一目了然
  13. COMPUTER METHODS AND PROGRAMS IN BIOMEDICINE期刊投稿
  14. 7000字和你聊聊如何设计一款高并发架构(建议收藏)
  15. Uipath的下载与使用教程
  16. 你需要的导航网站,这里都有
  17. ADB命令封装批处理文件(无线调试、安装 apk 到指定已连接设备)
  18. Oracle 给其他用户授权表的权限
  19. SQL创建用户、创建表
  20. 攻防世界Web题 - unseping 总结

热门文章

  1. 焊接件技术要求怎么写_焊接件通用技术要求
  2. python实现修改桌面壁纸
  3. 5G安全:5G-AKA链接攻击及对策
  4. 解决电脑部分软件显示网络连接异常,或者界面加载不成功问题
  5. 摄影后期用计算机,摄影后期处理中计算机技术结合分析.doc
  6. mysql重启数据库_重启MySQL数据库的实际操作步骤概述
  7. 门市之星,进销存,坑爹之路
  8. 研磨时光的文房四宝之砚台鉴赏:混沌初开砚,匠心所在
  9. 基于ZigBee的无线温度监测与控制器设计
  10. Python 生成8位必含数字、大小写字母的字符串(密码)