zabbix API二次开发使用与介绍(68)

凉白开 zabbix386,67237字数 1814阅读6分2秒阅读模式

喜欢需要理由吗?需要吗?当然需要,zabbix的那么多功能足以让你喜欢她,现在还有zabbix API,zabbix真让我疯了,太牛逼了,太让人喜欢了。有zabbix API我们可以做很多,自己开发web界面、开发手机端zabbix、获取zabbix指定数据、创建zabbix监控项等等。

zabbix API开发库

zabbix API请求和响应都是json,并且还提供了各种语法的lib库,http://zabbix.org/wiki/Docs/api/libraries,包含php、c#、PythonPerl、go等等语言,简单看了下phpzabbixapi,使用非常方便。文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-dev-api/

请求zabbix API

post json数据到api接口地址,例如你得zabbix地址是http://company.com/zabbix,那么你得接口地址是:http://company.com/zabbix/api_jsonrpc.php,必须包含content-type头,值为application/json-rpc, application/json or application/jsonrequest之一。文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-dev-api/

POST http://company.com/zabbix/api_jsonrpc.php HTTP/1.1
Content-Type: application/json-rpc

{"jsonrpc":"2.0","method":"apiinfo.version","id":1,"auth":null,"params":{}}

 文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-dev-api/

zabbix API登陆

获取auth token(登陆)文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-dev-api/

在操作zabbix之前,我们必须先登陆zabbix,得到token,以后的操作带着这个token即可,要不然肯定没权限。文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-dev-api/

请求的json如下:文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-dev-api/

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

 文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-dev-api/

属性说明
jsonrps - JSON-RPC版本,基本上用2.0就行了;
method - 调用的API方法,方法列表请上官网;
params - 需要传递的参数,这边是user和password;
id - 请求标志;
auth - 用户token,这边使用null,因为还没通过验证文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-dev-api/

验证成功,会返回如下json数据文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-dev-api/

{
    "jsonrpc": "2.0",
    "result": "0424bd59b807674191e7d77572075f33",
    "id": 1
}

result便是我们要德token数据,id对应请求的id。 文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-dev-api/

zabbix api检索主机

通过验证之后,我们带着token使用host.get获取主机列表,请求的json如下:文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-dev-api/

{
    "jsonrpc": "2.0",
    "method": "host.get",
    "params": {
        "output": [
            "hostid",
            "host"
        ],
        "selectInterfaces": [
            "interfaceid",
            "ip"
        ]
    },
    "id": 2,
    "auth": "0424bd59b807674191e7d77572075f33"
}

获取到如下数据文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-dev-api/

{
    "jsonrpc": "2.0",
    "result": [
        {
            "hostid": "10084",
            "host": "Zabbix server",
            "interfaces": [
                {
                    "interfaceid": "1",
                    "ip": "127.0.0.1"
                }
            ]
        }
    ],
    "id": 2
}

请使用你的程序处理一下即可。文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-dev-api/

 文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-dev-api/

zabbix API就是这么简单,请求、响应然后处理,更多API方法请直接上官方文档,里面有几百个方法等着你。如果你使用zabbix二次开发,千万不要直接操作zabbix数据,太.....,为何不使用zabbix API。文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-dev-api/ 文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-dev-api/

weinxin
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
凉白开
  • 本文由 发表于 30/12/2014 01:00:15
  • 转载请务必保留本文链接:https://www.ttlsa.com/zabbix/zabbix-dev-api/
  • nagios
  • zabbix
  • zabbix api
  • zabbix_server
  • zabbix二次开发
评论  3  访客  3
    • hahaha
      hahaha 1

      你好,如果利用api请求历史趋势数据,取7天的数据量,会造成请求时间过长,请问 有好的办法解决吗,或者 请求的时候 ,有什么参数可以把返回结果数据从每90秒一条稀疏到1天一条(平均值)

      • stronger
        stronger 0

        为什么通过API不能删除host
        API Error : {“message”:”Application error.”,”data”:”No permissions to referred object or it does not exist!”,”code”:-32500}

          • 匿名
            匿名 9

            @ stronger No permissions 没有权限

        评论已关闭!