marclee44 / me

1 stars 0 forks source link

Zabbix API获取监控数据 #21

Open marclee44 opened 2 years ago

marclee44 commented 2 years ago

接口地址

Zabbix 网站访问地址:http://[ip]:[port] Zabbix API调用地址:http://[ip]:[port]/api_jsonrpc.php

访问方式

基本请求内容

参数 数据类型 描述
jsonrpc string API使用的JSON-RPC协议的版本。Zabbix API实现的JSON-RPC版本是2.0
method string 被调用的API方法名
params object 将被传递给API方法的参数
auth string 用户认证令牌,登录以获取。登录时,不必设置
id string 请求的任意标识符

常用请求参数(params)

参数 数据类型 描述
countOutput boolean 返回结果中的记录数,而不是实际的数据。
editable boolean 如果设置为 true ,则只返回用户具有写权限的对象。 默认值: false。
excludeSearch boolean 返回与在 search 参数中给定的条件不匹配的结果。
filter object 仅返回与给定过滤条件完全匹配的结果。 过滤条件是一个数组,其中键是属性名,值可以是单个值或要匹配的值数组。 不适用于 text 字段。
limit integer 限制返回记录的数据。
output query 要返回的对象属性。 默认值: extend.即全部属性
preservekeys boolean 在结果数组中,使用 ID 作为键。
search object 返回给定通配符(不区分大小写)匹配到的结果。 接受一个数组,键是属性名,其值是要搜索的字符串。如果没有其他选项,将执行LIKE “%…%”搜索 。 仅适用于 string 和 text 字段。
searchByAny boolean 如果设置为 true,则返回在 filter 或 search 参数中给出的任何条件匹配的结果,而不是所有条件。 默认值: false。
searchWildcardsEnabled boolean 如果设置为 true,则可以在search 中使用 “*” 作为通配符。 默认值: false。
sortfield string/array 按给定属性对结果进行排序。有关可用于排序的属性列表,请参考特定的API get方法描述。宏在排序前不会被展开。
sortorder string/array 排序顺序。 如果传递数组,则每个值都将与 sortfield 参数中给定的相应属性匹配。 可选的值为: ASC - 升序; DESC - 降序。
startSearch boolean search 参数将比较字段的开始,即执行 LIKE “…%” 搜索。 如果 searchWildcardsEnabled 设置为 true,则忽略。

基本返回内容

参数 数据类型 描述
jsonrpc string API使用的JSON-RPC协议的版本。Zabbix API实现的JSON-RPC版本是2.0
result string/object/array 被调用的API方法名
id string 请求的任意标识符

获取监控数据流程

流程图

调用方法

  1. 登录 方法名user.login 特有参数
参数 数据类型 描述
user string 用户名
password string 用户密码。无加密

返回值:auth字符串,为其他所有方法的必须字段 请求样例

{
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
        "user": "Admin",
        "password": "zabbix"
    },
    "id": 1
}

返回样例

{
    "jsonrpc": "2.0",
    "result": "0424bd59b807674191e7d77572075f33",
    "id": 1
}
  1. 获取主机列表 方法名host.get 常用参数outputfiltersearchsearchByAnysearchWildcardsEnabledstartSearch主机对象属性:非常多,但对于后续获取监控项,通常仅hostidhost有意义
属性 数据类型 描述
hostid string 主机ID。后续获取监控项的必须参数
host string 主机名

请求样例: 列出所有名字为MySQLLinux的主机,仅返回hostidhost属性

{
    "jsonrpc": "2.0",
    "method": "host.get",
    "params": {
        "output": [
            "hostid",
            "host"
        ],
        "search": {
            "host": ["MySQL", "Linux"]
        },
        "searchByAny": true
    },
    "auth": "0424bd59b807674191e7d77572075f33",
    "id": 1
}

返回样例

{
    "jsonrpc": "2.0",
    "result": [
        {
            "hostid": "10160",
            "host": "MySQL"
        },

{
            "hostid": "10161",
            "host": "Linux"
        }
    ],
    "id": 1
}
  1. 获取监控项 方法名item.get 常用参数outputfiltersearchsearchByAnysearchWildcardsEnabledstartSearch特有参数
属性 数据类型 描述
hostids string/array 主机ID列表。仅一台主机时,填写主机id的字符串即可

监控项对象主要属性

参数 数据类型 描述
hostid string 主机ID
itemid string 监控项ID。默认返回
name string 监控项名称
key_ string 监控项键值。search用
units string 单位
lastvalue string 当前值
prevvalue string 前一个值

监控项常用键值前缀

参数 描述
system.cpu.util CPU使用率
vm.memory.util 内存使用率
vm.memory.total 总内存
vm.memory.used 已用内存
vfs.fs.pused 硬盘使用率(每块硬盘单列一项)
vfs.fs.total 硬盘总大小(每块硬盘单列一项)
vfs.fs.used 硬盘已用大小(每块硬盘单列一项)
net.if.in[ 当前网络接收速率(每块网卡单列一项)
net.if.out[ 当前网络发送速率(每块网卡单列一项)

请求样例

{
    "jsonrpc": "2.0",
    "method": "item.get",
    "params": {
        "output":[
            "hostid",
            "name",
            "units",
            "lastvalue",
            "prevvalue"
        ],
        "hostids": "10160",
        "search": {
            "key_": [
                "system.cpu.util",
                "vm.memory.util",
                "vm.memory.total",
                "vm.memory.used",
                "vfs.fs.pused",
                "vfs.fs.total",
                "vfs.fs.used",
                "net.if.in[",
                "net.if.out["
            ]
        },
        "searchByAny": true
    },
    "id": 1,
    "auth": "0424bd59b807674191e7d77572075f33"
}

返回样例

{
    "jsonrpc": "2.0",
    "result": [
        {
            "itemid": "23298",
            "hostid": "10160",
            "name": "CPU xxxxxxx",
            "units": "%",
            "lastvalue": "10.45744423",
            "prevvalue": "25.95464746"
        },
        {
            "itemid": "23299",
            "hostid": "10160",
            "name": "Memory xxxx",
            "units": "%",
            "lastvalue": "40.29122046",
            "prevvalue": "25.95464746"
        }, 
        {
            "itemid": "23300",
            "hostid": "10160",
            "name": "Memory xxxxxxx",
            "units": "B",
            "lastvalue": "2595464746",
            "prevvalue": "2595464746"
        }, 
        {
            "itemid": "23298",
            "hostid": "10160",
            "name": "CPU xxxxxxx",
            "units": "B",
            "lastvalue": "1045744423",
            "prevvalue": "673643724"
        }, 
        {
            "itemid": "23305",
            "hostid": "10160",
            "name": "C:\\xxxx",
            "units": "%",
            "lastvalue": "40.29122046",
            "prevvalue": "25.95464746"
        }, 
        {
            "itemid": "23306",
            "hostid": "10160",
            "name": "C:\\xxxx",
            "units": "B",
            "lastvalue": "259546474600",
            "prevvalue": "259546474600"
        }, 
        {
            "itemid": "23307",
            "hostid": "10160",
            "name": "C:\\xxxx",
            "units": "B",
            "lastvalue": "104574442300",
            "prevvalue": "673643724000"
        }, 
        {
            "itemid": "23316",
            "hostid": "10160",
            "name": "Wlan xxxxx",
            "units": "bps",
            "lastvalue": "2595464.746",
            "prevvalue": "1595464.746"
        }, 
        {
            "itemid": "23317",
            "hostid": "10160",
            "name": "Wlan xxxxx",
            "units": "bps",
            "lastvalue": "10.457",
            "prevvalue": "6.736"
        }
    ],
    "id": 1
}