zabbix api php,Zabbix API 简介及使用

Zabbix API 简介

Zabbix API 开始扮演着越来越重要的角色,尤其是在集成第三方软件和自动化日常任务时。

很难想象管理数千台服务器而没有自动化是多么的困难。

Zabbix API 为批量操作、第三方软件集成以及其他作用提供可编程接口。

Zabbix API 是在 1.8 版本中开始引进并且已经被广泛应用。所有的 Zabbix 移动客户端都是基于 API,

甚至原生的 WEB 前端部分也是建立在它之上。

Zabbix API 中间件使得架构更加模块化也避免直接对数据库进行操作。

它允许你通过 JSON RPC 协议来创建、更新和获取 Zabbix 对象并且做任何你喜欢的操作【当然前提是你拥有认证账户】。

Zabbix API 提供两项主要功能:

1. 远程管理 Zabbix 配置

2. 远程检索配置和历史数据

使用 JSON

API 采用 JSON-RPC 实现。这意味着调用任何函数,都需要发送 POST 请求,输入输出数据都是以 JSON 格式。

Zabbix API 的使用流程

使用 API 的基本步骤

连接 http://x.x.x.x/api_jsonrpc.php 提供用户名和密码,

并标识 HTTP 头部 Content-Type:application/json,HTTP 方法为 POST。

获取 SESSIONID

通过 SESSIONID 建立后续的连接

提交 POST 数据,格式为 JSON,其中放对应的方法,获取需要的数据。

用 curl 模拟 API 的使用

# 1. 获取 SESSIONID

[root@linux-node1 ~]# curl -s -X POST -H 'Content-Type:application/json' -d '

> {

> "jsonrpc": "2.0",

> "method": "user.login",

> "params": {

> "user": "Admin",

> "password": "zabbix"

> },

> "id": 1

> }' http://192.168.56.11/zabbix/api_jsonrpc.php | python -m json.tool

{

"id": 1,

"jsonrpc": "2.0",

"result": "6a0d235908c25a495f0d356157fbb3d3"

}

# 2. 用获取的 SESSIONID 去调用 API 的 host.get 方法请求 hostid

[root@linux-node1 ~]# curl -s -X POST -H 'Content-Type:application/json' -d '

> {

> "jsonrpc": "2.0",

> "method": "host.get",

> "params": {

> "output": ["hostid"]

> },

> "auth": "6a0d235908c25a495f0d356157fbb3d3",

> "id": 1

> }' http://192.168.56.11/zabbix/api_jsonrpc.php | python -m json.tool

{

"id": 1,

"jsonrpc": "2.0",

"result": [

{

"hostid": "10084"

},

{

"hostid": "10120"

}

]

}

可以通过 API 来添加和删除 Host,这里就不举例了,具体方法参考官网文档。

在实际的 API 开发应用中,我们可以采用 Python 等其他编程语言中来实现。

如下,就是用 Python 写的用于认证获取 SESSIONID 的代码例子:

#!/usr/bin/env python

# -*- coding:utf-8 -*-

import requests

import json

url = 'http://192.168.56.11/zabbix/api_jsonrpc.php'

post_data = {

"jsonrpc": "2.0",

"method": "user.login",

"params": {

"user": "Admin",

"password": "zabbix"

},

"id": 1

}

post_header = {'Content-Type': 'application/json'}

ret = requests.post(url, data=json.dumps(post_data), headers=post_header)

zabbix_ret = json.loads(ret.text)

if not zabbix_ret.has_key('result'):

print 'login error'

else:

print zabbix_ret.get('result')

执行脚本时,注意要安装 Python requests 模块。

[root@linux-node1 ~]# python zabbix_auth.py

Traceback (most recent call last):

File "zabbix_auth.py", line 4, in

import requests

ImportError: No module named requests

[root@linux-node1 ~]# yum install python-pip -y

[root@linux-node1 ~]# pip install requests

[root@linux-node1 ~]# python zabbix_auth.py

f2453c4cc730d5158a87e0754940138e

Ref

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值