zabbix接口php获取数据类型,使用python通过zabbix API获取后台历史数据 | Linux系统运维联盟...

对于zabbix自身web所展示的数据,其实官方给出了很多其他方式获取数据的方式:

比如说用过zabbix_get -k 加key 获取value 这种是主动请求数据

也可以客户端zabbix_send发送数据

或者通过web API的方式。zabbix本身提供了一个api交互的页面 api_jsonrpc.php。

下面我简单介绍几个:

一、首先肯定显示登陆。我们所有基于api操作都需要先登录认证,然后成功后会返回一个authid。然后后续的接口只需要通过authid来做各种查询即可

method=user.login方法获取zabbix server的认证结果官方地址:https://www.zabbix.com/documentation/2.2/manual/api/reference/user/login

[root@localhost python]# cat zabbix_auth.py

#!/usr/bin/env python2.7

#coding=utf-8

import json

import urllib2

# based url and required header

url = "http://ip地址/zabbix/api_jsonrpc.php"

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

# auth user and password

data = json.dumps(

{

"jsonrpc": "2.0",

"method": "user.login",

"params": {

"user": "Admin",

"password": "zabbix"

},

"id": 0

})

# create request object

request = urllib2.Request(url,data)

for key in header:

request.add_header(key,header[key])

# auth and get authid

try:

result = urllib2.urlopen(request)

except URLError as e:

print "Auth Failed, Please Check Your Name AndPassword:",e.code

else:

response = json.loads(result.read())

result.close()

print"Auth Successful. The Auth ID Is:",response['result']

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

method=user.login方法获取zabbixserver的认证结果官方地址:https://www.zabbix.com/documentation/2.2/manual/api/reference/user/login

[root@localhostpython]# cat zabbix_auth.py

#!/usr/bin/env python2.7

#coding=utf-8

importjson

importurllib2

# based url and required header

url="http://ip地址/zabbix/api_jsonrpc.php"

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

# auth user and password

data=json.dumps(

{

"jsonrpc":"2.0",

"method":"user.login",

"params":{

"user":"Admin",

"password":"zabbix"

},

"id":0

})

# create request object

request=urllib2.Request(url,data)

forkeyinheader:

request.add_header(key,header[key])

# auth and get authid

try:

result=urllib2.urlopen(request)

exceptURLErrorase:

print"Auth Failed, Please Check Your Name AndPassword:",e.code

else:

response=json.loads(result.read())

result.close()

print"Auth Successful. The Auth ID Is:",response['result']

二、通过history_get来获取历史记录

history.get方法获取单个监控项的历史数据根据第4项的获取到的所有items id的值,找到想要监控的那项,获取它的历史数据。

官方地址:https://www.zabbix.com/documentation/2.2/manual/api/reference/history/get

catget_items_history.py

#!/usr/bin/env python2.7

#coding=utf-8

import json

import urllib2

# based url and required header

url = "http://1.1.1.1/zabbix/api_jsonrpc.php"

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

# request json

data = json.dumps(

{

"jsonrpc":"2.0",

"method":"history.get",

"params":{

"output":"extend",

"history":3,

"itemids":"25159",

"limit":10

},

"auth":"3c0e88885a8cf8af9502b5c850b992bd", # theauth id is what auth script returns, remeber it is string

"id":1,

})

# create request object

request = urllib2.Request(url,data)

for key in header:

request.add_header(key,header[key])

# get host list

try:

result = urllib2.urlopen(request)

except URLError as e:

if hasattr(e, 'reason'):

print 'We failed to reach a server.'

print 'Reason: ', e.reason

elif hasattr(e, 'code'):

print 'The server could not fulfill the request.'

print 'Error code: ', e.code

else:

response = json.loads(result.read())

result.close()

print "Number Of Hosts: ", len(response['result'])

for host in response['result']:

print host

#print "Host ID:",host['hostid'],"HostName:",host['name']

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

catget_items_history.py

#!/usr/bin/env python2.7

#coding=utf-8

importjson

importurllib2

# based url and required header

url="http://1.1.1.1/zabbix/api_jsonrpc.php"

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

# request json

data=json.dumps(

{

"jsonrpc":"2.0",

"method":"history.get",

"params":{

"output":"extend",

"history":3,

"itemids":"25159",

"limit":10

},

"auth":"3c0e88885a8cf8af9502b5c850b992bd",# theauth id is what auth script returns, remeber it is string

"id":1,

})

# create request object

request=urllib2.Request(url,data)

forkeyinheader:

request.add_header(key,header[key])

# get host list

try:

result=urllib2.urlopen(request)

exceptURLErrorase:

ifhasattr(e,'reason'):

print'We failed to reach a server.'

print'Reason: ',e.reason

elifhasattr(e,'code'):

print'The server could not fulfill the request.'

print'Error code: ',e.code

else:

response=json.loads(result.read())

result.close()

print"Number Of Hosts: ",len(response['result'])

forhostinresponse['result']:

printhost

#print "Host ID:",host['hostid'],"HostName:",host['name']

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值