zabbix-api的介绍和使用

2018-01-27 分类:监控 阅读(4277) 评论(0)

首先介绍一下zabbix-api的作用:

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

  • 创建新的应用程序以使用Zabbix;
  • 将Zabbix与第三方软件集成;
  • 自动执行常规任务。

 

本文主要简单讲解zabbix-api的使用

环境要求:首先部署一套zabbix

这里我的zabbix-server版本是3.0;zabbix-server的ip为10.0.0.11

 

在使用zabbix-api之前,先获取一个token

命令行直接执行下面的curl命令

curl -s -X POST -H 'Content-Type:application/json' -d '

{

"jsonrpc": "2.0",

"method": "user.login",

"params": {

"user": "Admin",

"password": "zabbix"

},

"id": 1

}' http://10.0.0.11/zabbix/api_jsonrpc.php

返回示例如下:

{"jsonrpc":"2.0","result":"6cfaa6e6b3086b0bf2a05493cce99d1a","id":1}

 

其中6cfaa6e6b3086b0bf2a05493cce99d1a部分,就是我们需要的token。

 

这里我直接写了一个shell脚本来获取token

[root@controller ~]# cat zabbix-get-token.sh

#!/bin/bash

admin=Admin #zabbix用户

pass=zabbix #密码

ZBX='10.0.0.11' #zabbix-server的地址

curl -s -X POST -H 'Content-Type:application/json' -d '

{

"jsonrpc": "2.0",

"method": "user.login",

"params": {

"user": "'$admin'",

"password": "'$pass'"

},

"id": 1

}' http://$ZBX/zabbix/api_jsonrpc.php|grep -Po 'result[" :]+\K[^"]+'

只要执行脚本就可以获取到一个token

 

zabbix-api的json格式主要包括以下内容:

  • jsonrpc - API使用的JSON-RPC协议的版本; Zabbix API实现JSON-RPC版本2.0;
  • method - 调用的API方法;
  • params - 将被传递给API方法的参数;
  • auth -用户认证令牌;
  • id - 请求的任意标识符;

示例:

curl -s -X POST -H 'Content-Type:application/json' -d '

{

"jsonrpc": "2.0",

"method": "host.update",

"params": {

"hostid": "10084",

"status": 1

},

"auth": "6cfaa6e6b3086b0bf2a05493cce99d1a",

"id": 1

}' http://10.0.0.11/zabbix/api_jsonrpc.php

执行这个例子,可以将hostid为10084的主机,状态设置为DisableD。

通过这个例子你可以发现,熟练使用zabbix-api,还需要了解zabbix的表结构

 

hosts主要表结构和各字段的意思

hostid 主机ID/模版ID readonly

proxy_hostid 代理主机ID,即这台主机通过该代理主机去监控

host 主机名,监控agent端ID字段

status 主机状态

0 已启用,监视这台主机

1 停用的,不监视这台主机

3 模版

5 主动模式 创建代理时使用

6 被动模式 创建代理时使用

available 客户端agent主机是否可用 readonly

0 未知或模版

1 可用

2 不可用

description 描述主机

disable_until 下一次轮询一个不可用主机的时间,默认只读readonly

ipmi_authtype 认证算法

-1 默认

0 无

1 MD2

2 MD5

4 Straight

5 OEM

6 RMCP+

ipmi_privilege 特权级别

1 回调

2 用户 默认

3 操作者

4 管理者

5 OEM

ipmi_available 可用的ipmiagent

0 未知

1 可用

2 不可用

ipmi_disable_until ipmi不可用时下一次的轮询时间

ipmi_error ipmi不可用的错误信息

ipmi_errors_from ipmi不可用状态从什么时候开始

ipmi_password ipmi 密码

ipmi_username ipmi用户名

jmx_available 可用的jmxagent

0 未知

1 可用

2 不可用

jmx_disable_until 当jmx不可用时下一次轮询当时间

jmx_error jmx不可用错误信息

jmx_errors_from jmx 不可用状态开始时间

maintenance_from 资产维护开始时间

maintenance_status 生效当状态

0 不维护

1 维护生效

maintenance_type 生效维护的类型

0 通过数据收集维护 默认

1 非数据收集维护

maintenanceid 维护的ID,如果当前主机处于维护状态,否则为null

snmp_available snmp是否可用

0 未知

1 可用

2 不可用

snmp_disable_until 当snmp不可用时下一次轮询时间

snmp_error 不可用时错误信息

snmp_errors_from 错误开始时间

error 当agent不可用时显示当错误信息

error_from 故障时间 当agent不可用时开始的时间

name 主机显示的名称,即可见名称,默认是用host字段是值填充

flags 主机来源

0 表示普通的主机

4 表示自动发现的主机

inventory_mode 主机资产类型

-1 禁用

0 手动,默认值

  1. 自动

 

监控项items

itemid 监控项ID

type 监控项类型

0 Zabbix 客户端,

1 SNMPv1 客户端,

2 Zabbix采集器,

3 简单检查,

4 SNMPv2 客户端,

5 Zabbix内部,

6 SNMPv3 客户端,

7 Zabbix客户端(主动式),

8 Zabbix整合,

10 外部检查,

11 数据库监控,

12 IPMI客户端,

13 SSH 客户端,

14 TELNET客户端,

15 可计算的,

16 JMX agent代理程序,

17 SNMP trap

hostid 关联主机ID

name 监控项名称

key_ 监控项key值

delay 间隔/秒

history 历史数据保留时间/天

trends 趋势数据保留时间/天 默认365天

status 监控项启用状态

0 启用

1 禁用

value_type 数据类型,对应的存放历史数据表

0 history表 numeric float

1 history_str表 character

2 history_log表 log

3 history_uint表 numeric unsigned

4 history_text表 text

authtype ssh认证方法,只有通过ssh代理方式时使用

0 密码

1 public key

units 数据类型单位

data_type 数据类型

0 decimal 十进制

1 octal 八进制

2 hexadecimal 十六进制

3 boolean 布尔

delay_flex 自定义间隔

delta 存储的值

0 (default) as is

1 Delta, speed per second

2 Delta, simple change

error 如果监控项有问题会自动更新这个错误信息 readonly

history 监控项保持的历史数据时长,默认90天,单位天

formula 公式,自定义乘数

1 默认值

lastclock 监控项最后一次更新时间

logtimefmt 格式化日志时间

templateid 监控项对应的父模版ID,该ID自关联,模版对应的为hostid相当于模版分组

flags 监控项来源

0 普通

4 自动发现

interfaceid 网卡IP,对应interface表interfaceid

params 额外的参数类型取决于监控项

针对ssh和telnet监控项 执行脚本

数据库监控项 执行sql

计算类型 执行公式

port 针对snmp监控项,端口监控

password 密码认证,针对简单检查,ssh,telnet,数据库监视,jmx监控项

 

description 监控项描述信息

state 该监控项是否适用

0 支持

  1. 不支持

 

 

创建host主机的api示例:

curl -s -X POST -H 'Content-Type:application/json' -d '

{

"jsonrpc": "2.0",

"method": "host.create",

"params": {

"host": "10.0.0.12",

"interfaces": [

{

"type": 1,

"main": 1,

"useip": 1,

"ip": "10.0.0.12",

"dns": "",

"port": "10050"

}

],

"groups": [

{

"groupid": "2"

}

],

"templates": [

{

"templateid": "10001"

}

]

},

"auth": "6cfaa6e6b3086b0bf2a05493cce99d1a",

"id": 1

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

返回结果如下:

{

"id": 1,

"jsonrpc": "2.0",

"result": {

"hostids": [

"10105"

]

}

}

这里返回了新创建的hostid为10105

 

通过这个,也可以证明刚才已经通过api成功创建了一台host主机,hostid为10105

 

接下来再演示如何,删除一台host主机

curl -s -X POST -H 'Content-Type:application/json' -d '

{

"jsonrpc": "2.0",

"method": "host.delete",

"params": ["10105"],

"auth": "6cfaa6e6b3086b0bf2a05493cce99d1a",

"id": 1

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

返回结果如下:

{

"id": 1,

"jsonrpc": "2.0",

"result": {

"hostids": [

"10105"

]

}

}

再回到web界面检查,发现刚才创建的host主机已经没有了

 

 

官网的API文档内容非常多,就不一一演示了,最后演示一个关于创建用户的api

首先来看看官网对于创建用户的api的介绍

curl -s -X POST -H 'Content-Type:application/json' -d '

{

"jsonrpc": "2.0",

"method": "user.create",

"params": {

"alias": "qiangge",

"passwd": "123456",

"usrgrps": [

{

"usrgrpid": "7"

}

]

    },

"auth": "6cfaa6e6b3086b0bf2a05493cce99d1a",

"id": 1

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

返回结果如下:

{

"id": 1,

"jsonrpc": "2.0",

"result": {

"userids": [

"3"

]

}

}

api请求之前

api请求之后

 

删除之前的用户

curl -s -X POST -H 'Content-Type:application/json' -d '

{

"jsonrpc": "2.0",

"method": "user.delete",

"params": [

"3"

],

"auth": "6cfaa6e6b3086b0bf2a05493cce99d1a",

"id": 1

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

返回结果如下:

{

"id": 1,

"jsonrpc": "2.0",

"result": {

"userids": [

"3"

]

}

}

刷新之后,用户已经被删除了

评论已关闭

登录

忘记密码 ?

切换登录

注册