zabbix api的使用

1、zabbix api介绍

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

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

将Zabbix与第三方软件集成

自动执行常规任务

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

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

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

调用api的过程:发送一个http请求,请求方法,提交数据,请求url

zabbix api的使用可以查阅官方文档https://www.zabbix.com/documentation/3.4/zh/manual/api

2、获取token

使用curl命令模拟登录获取到一个token

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

{

"jsonrpc": "2.0",

"method": "user.login",

"params": {

"user": "Admin",

"password": "zabbix"

},

"id": 1,

"auth": null

}‘ http://10.0.0.63/zabbix/api_jsonrpc.php

这里获取到的token值为29752350d3a88fc18e79b3e655b1506b

或者执行以下shell脚本获取token

[[email protected] scripts]# vim zabbix-get-token.sh

#!/bin/bash

admin=Admin #zabbix用户

pass=zabbix #密码

ZBX=‘10.0.0.63‘ #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

"auth": null

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

3、格式及参数说明

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

jsonrpc - API使用的JSON-RPC协议的版本; Zabbix API实现JSON-RPC版本2.0;

method - 调用的API方法;

params - 将被传递给API方法的参数;

auth -用户认证令牌;

id - 请求的任意标识符;

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 手动,默认值

自动

监控项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不支持

4、使用zabbix api进行操作示例

4.1 创建主机

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

{

"jsonrpc": "2.0",

"method": "host.create",        #指定方法创建主机

"params": {

"host": "10.0.0.51",        #主机ip

"interfaces": [

{

"type": 1,        #接口类型1代表agent接口

"main": 1,

"useip": 1,        #1表示使用ip

"ip": "10.0.0.51",    #ip地址

"dns": "",

"port": "10050"    #端口

}

],

"groups": [

{

"groupid": "9"    #组id

}

],

"templates": [

{

"templateid": "10001"        #模板id

}

]

},

"auth": "29752350d3a88fc18e79b3e655b1506b",

"id": 1

}‘ http://10.0.0.62/zabbix/api_jsonrpc.php

执行上述命令即可在命令行添加一台监控主机,可以进一步编写shell脚本批量创建主机

[[email protected] scripts]# vim hostadd.sh

#/bin/bash

for n in `seq -f 10.0.0.%0g 60 100`

do

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

{

"jsonrpc": "2.0",

"method": "host.create",

"params": {

"host": "‘$n‘",

"interfaces": [

{

"type": 1,

"main": 1,

"useip": 1,

"ip": "‘$n‘",

"dns": "",

"port": "10050"

}

],

"groups": [

{

"groupid": "9"

}

],

"templates": [

{

"templateid": "10001"

}

]

},

"auth": "29752350d3a88fc18e79b3e655b1506b",

"id": 1

}‘ http://10.0.0.62/zabbix/api_jsonrpc.php

done

4.2 删除主机

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

{

"jsonrpc": "2.0",

"method": "host.delete",

"params": [

"10117"    #主机id

],

"auth": "29752350d3a88fc18e79b3e655b1506b",

"id": 1

}‘ http://10.0.0.63/zabbix/api_jsonrpc.php

执行上述命令即可在命令行删除一台监控主机,可以进一步编写shell脚本批量删除上面创建的主机

[[email protected] scripts]# vim hostdel.sh

#/bin/bash

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

{

"jsonrpc": "2.0",

"method": "host.get",    #利用host.get方法得到主机id

"params": {

"output": "hostid",

"selectGroups": "groupid"

},

"auth": "29752350d3a88fc18e79b3e655b1506b",

"id": 1

}‘ http://10.0.0.63/zabbix/api_jsonrpc.php >/tmp/a.txt

for n in `seq 2 43`

do

hostid=`cat /tmp/a.txt|jq ‘.result[‘$n‘].hostid‘|sed ‘s#"##g‘`        #过滤出上面批量添加的主机id

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

{

"jsonrpc": "2.0",

"method": "host.delete",        #利用host.delete方法批量删除主机

"params": [

"‘$hostid‘"

],

"auth": "29752350d3a88fc18e79b3e655b1506b",

"id": 1

}‘ http://10.0.0.63/zabbix/api_jsonrpc.php

done

4.3 创建一个用户

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

{

"jsonrpc": "2.0",

"method": "user.create",        #利用user.create方法创建用户

"params": {

"alias": "test",                #用户名

"passwd": "123456",            #密码

"usrgrps": [

{

"usrgrpid": "7"                #用户所属组id

}

]

},

"auth": "29752350d3a88fc18e79b3e655b1506b",

"id": 1

}‘ http://10.0.0.63/zabbix/api_jsonrpc.php

4.4 删除一个用户

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

{

"jsonrpc": "2.0",

"method": "user.delete",        #利用user.delete方法删除用户

"params": [

"3"                            #用户id

],

"auth": "29752350d3a88fc18e79b3e655b1506b",

"id": 1

}‘ http://10.0.0.63/zabbix/api_jsonrpc.php

部分内容参考来源:https://www.qstack.com.cn/archives/228.html

原文地址:https://www.cnblogs.com/ssgeek/p/9279775.html

时间: 2024-10-08 22:02:14

zabbix api的使用的相关文章

16.使用zabbix api创建screen

zabbix的screen功能可以把graph聚合起来,统一进行展示, 我们的需求是把同一个主机组的同一个item聚合起来,比如一个screen显示同一个组的所有主机的内存使用率,达到类似ganglia的效果, 由于服务器较多,所以我们调用zabbix api来进行创建. 参考地址如下:谢谢各位大牛 https://www.zabbix.org/wiki/Python_script_to_create_Screen_from_all_Items/Graphs_of_a_host http://c

zabbix api

一般架设好server以后都会通过web front 来添加host啊, 模版什么的,这就带来一个效率的问题,比如说我要一时间添加100台host 进去,这个时候有个api ,然后通过脚本来调用就爽了,zabbix的作者们早已想到了这点,api 1.8 这个版本以后就发布了.网上有比较好的教程,我这里就不写了.可以参考我很敬佩的一个人 itnihao的博文: http://itnihao.blog.51cto.com/1741976/1343524 python还是非常好用的,调用api 什么的

ZABBIX API简介及使用

API简介 Zabbix API开始扮演着越来越重要的角色,尤其是在集成第三方软件和自动化日常任务时.很难想象管理数千台服务器而没有自动化是多么的困难.Zabbix API为批量操作.第三方软件集成以及其他作用提供可编程接口. Zabbix API是在1.8版本中开始引进并且已经被广泛应用.所有的Zabbix移动客户端都是基于API,甚至原生的WEB前端部分也是建立在它之上.Zabbix API 中间件使得架构更加模块化也避免直接对数据库进行操作.它允许你通过JSON RPC协议来创建.更新和获

用zabbix生成awstats图表以及通过Python调zabbix API自动化操作

awstats作为一款日志分析软件,功能不错,但是界面过于简单,也没有图表功能,这里我采取了一种变通的方法,将awstats的分析结果(pv.hits(文件数).bandwidth.visits(独立ip))添加到zabbix,并通过zabbix生成趋势图表. 在前两篇文章中,我们队awstats的使用及其工作方式进行了简明扼要的介绍:awstats对每个站点进行分析之后,会生成一个"awstats012016.txt"格式的"数据库"文件:awstats的展示页面

通过Zabbix API 添加host

脚本内容: #!/usr/bin/python #-*- coding:utf8 -*- import json,sys,argparse from zabbix_api import ZabbixAPI server = "http://172.16.206.128/zabbix" username = "Admin" password = "zabbix" zapi = ZabbixAPI(server=server, path="

使用zabbix API估算服务器磁盘空间可用天数

代码github位置. 主要功能:获取zabbix某个分组下的所有机器,计算这些机器的磁盘剩余空间按照"自然"增长还可以使用多少天. 主要流程: 获取某个group下所有机器.     def host_get_by_groupid(self,groupid):         data = json.dumps(                 {                     "jsonrpc": "2.0",           

基于zabbix API添加监控主机

由于zabbix监控的主机虽为同一个业务,但是由于其跨机房并且网络为为16位,两个机房导致zabbix的自动添加扫描的主机数量就差不多有12w多个,严重影响其效率和性能. 使用zabbix API的基本步骤如下: 连接http://x.x.x.x/api_jsonrpc.php,(在zabbix网页文件的目录下为api_jsonrpc.php),提供用户名和密码,并标识HTTP头部"Content-Type":"application/json",HTTP方法为po

python 调用zabbix api实现查询主机信息,输出所有主机ip

之前发现搜索出来的主机调用zabbix api信息都不是那么明确,后来通过zabbix官方文档,查到想要的api信息,随后写一篇自己这次项目中用到的api. #!/usr/bin/env python #coding:utf8 import requests import json headers = {'Content-Type': 'application/json-rpc'} server_ip = '10.37.149.109' url = 'http://%s/zabbix/api_j

Zabbix API学习_认证篇

zabbix很多都是可以直接通过 zabbix api 来进行辅助操作. 官方文档地址:https://www.zabbix.com/documentation 通过API操作,都必须组认证,拿到了认证token之后,才能进行相应操作: #-*- coding:utf-8 -*- ''' Created on 2016-6-8 @author: ''' import json import urllib2 from urllib2 import URLError class Zabbix_Aut

python调用zabbix api接口实时展示数据

近日公司准备自已做一个运维管理平台,其中的监控部分,打算调用zabbix api接口来进行展示. 经过思考之后,计划获取如下内容: 1.  获得认证密钥 2.  获取zabbix所有的主机组 3.  获取单个组下的所有主机 4.  获取某个主机下的所有监控项 5.  获取某个监控项的历史数据 6.  获取某个监控项的最新数据 计划最后展示框架如下内容(这只是值方面,其它的会再加): 主机组1 ----主机名1---监控项1----当前值 ---监控项2----当前值 ----主机名2----监控