zabbix api的使用
2021-03-30 11:26
标签:ace src cond jmx 特权 ola md5 ref 获取 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 [root@zabbix 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脚本批量创建主机 [root@zabbix 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脚本批量删除上面创建的主机 [root@zabbix 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 zabbix api的使用 标签:ace src cond jmx 特权 ola md5 ref 获取 原文地址:https://www.cnblogs.com/ssgeek/p/9279775.html