• 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

    [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

  • 相关阅读:
    字符数组(判断字符串大小)
    http请求文件流
    webservice接口调用
    面试基础-线程(一)
    面试基础-redis(二)
    面试基础-redis(一)
    面试基础--JVM
    【转】支付系统
    springcloud搭建高可用注册中心的时候注册中心在unavailable-replicas中的问题
    springboot+javafx所有依赖一起打包
  • 原文地址:https://www.cnblogs.com/ssgeek/p/9279775.html
Copyright © 2020-2023  润新知