zabbix接口php获取数据类型,zabbix-api 获取监控值的简单介绍

一、zabbix api介绍

1.Zabbix API允许以编程方式检索和修改Zabbix的配置,并提供对历史数据的访问。它广泛用于:

1)创建新的应用程序以使用Zabbix

2)将Zabbix与第三方软件集成

3)自动执行常规任务

2.Zabbix API是基于Web的API,作为Web前端的一部分提供。它使用JSON-RPC 2.0协议,这意味着两件事:

1)该API包含一组独立的方法;

2)客户端和API之间的请求和响应使用JSON格式进行编码。

3.Zabbix API由许多名义上分组的独立API方法组成。每个方法执行一个特定任务。例如,方法 host.create 隶属于 host 这个API分组 ,用于创建新主机。历史上,API分组有时被称为“类”。

大多数API至少包含四种方法: get, create, update 和 delete ,分别是检索,创建,更新和删除数据,但是某些API提供一套完全不同的一组方法。

根据单个或分布式平台上不同软件应用程序间的数据共享性能,可以将 API 分为四种类型:

1)远程过程调用(RPC):通过作用在共享数据缓存器上的过程(或任务)实现程序间的通信。

2)标准查询语言(SQL):是标准的访问数据的查询语言,通过通用数据库实现应用程序间的数据共享。

3)文件传输:文件传输通过发送格式化文件实现应用程序间数据共享。

4)信息交付:指松耦合或紧耦合应用程序间的小型格式化信息,通过程序间的直接通信实现数据共享。主机和主机组

一般来讲,Zabbix主机是指希望监控的那些设备,例如服务器、工作站、交换机等等。

创建主机是使用Zabbix过程中的一个首要任务。例如,如果想在一台服务器“X”上监控一些参数,必须首先创建一个主机称之为“服务器X”,然后就可以查看添加监控项到这台“服务器X”上。

主机组是由主机组成的

4.zabbix-api调用地址:http://zabbix服务器地址/zabbix/api_jsonrpc.php

5.获取监控项的步骤

1)获取token的值def getToken(self):

data = {

"jsonrpc":"2.0",  # API使用的JSON-RPC协议的版本

"method":"user.login",  # 被调用的API方法名,用于登录并获取身份验证令牌

"params": {# 将被传递给API方法的参数

"user":zabbix账号,

"password":

zabbix登录密码

},

"id":1,  # 请求的任意标识符

"auth":None  # 用户认证令牌; 因为我们还没有一个,它的设置null

}

r = requests.post(url=self.url, headers=headers, data=json.dumps(data))

token = json.loads(r.content).get("result")

return token

2)获取hostid(此处根据主机名只获取一个主机ID)def getHosts(self):

data = { "jsonrpc": "2.0", "method": "host.get", # 使用 host.get 方法检索所有已配置主机的ID,主机名

"params": { "output": [ "hostid", "host" ] },

"id": 2,

"auth": self.token }

r = requests.post(url=self.url, headers=headers, data=json.dumps(data))

# hostid = json.loads(r.content).get("result")[0] #获取zabbix-server的主机名,hostid

hostid = json.loads(r.content).get("result")[0].get("hostid") return hostid

3)获取内存总量def get_web_time(self,hostid):    #传入上一个方法反悔的hostid的值

data = {

"jsonrpc":"2.0",

"method":"item.get",

"params": {

"output":"extend",

"hostids": hostid,

"search": {

"key_":"vm.memory.size[total]"

}

},

"id":3,

"auth":self.token

}

r = requests.post(url=self.url, headers=headers, data=json.dumps(data))

memory=int(json.loads(r.content).get("result")[0]["lastvalue"])/1024 /1024 /1024

print 'total_memory:'+str(memory)+'GB'

6.目前为止使用过的方法

1)user.login    用来获取token值

2) host.get      用来获取主机信息

3)item.get       用来获取item的监控值

4)alert.get       用于获取告警信息

5)triggers,get   获取触发器信息

6)httptest.get   方法允许根据给定的参数检索Web场景

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值