设为首页 收藏本站
查看: 1287|回复: 0

[经验分享] zabbix API基本使用方法介绍

[复制链接]

尚未签到

发表于 2019-1-19 08:46:02 | 显示全部楼层 |阅读模式
  前言:
  以下内容根据zabbix 3.2官方文档总结:https://www.zabbix.com/documentation/3.2/manual/api
  此文档只是简单的介绍API的基本使用,关于一些完整功能或高级功能将在后续的博文中展现

  

  调用Zabbix api使用的是HTTP的POST请求方式
  其中请求的头部为:
{"Content-Type": "application/json-rpc"}  请求的URL为:
http://zabbix.aek.com/api_jsonrpc.php  如果url中包含目录需要把目录写上,如http://zabbix.aek.com/zabbix/api_jsonrpc.php,最后就是请求的数据(data),比如获取Token,创建主机,获取主机ID,获取模板ID,获取组ID,删除主机等。
  

  接下以以Python调用 API为例,例出用法案例:
  测试连接是否成功
#!/usr/bin/python
#coding:utf:8
import requests
import json
url = "http://zabbix.aek.com/zabbix/api_jsonrpc.php"
header = {"Content-Type": "application/json-rpc"}
data = {"jsonrpc":"2.0","method":"apiinfo.version","id":1,"auth":None,"params":{}}
request = requests.post(url=url, headers=header, data=json.dumps(data))
print(request.content)  上面的data用来测试是否可连接成功,官方文档中auth的值为null,但在python中null用None表示,所以需要改成None。
  成功后返回值大概如下:会显示zabbix版本
{"jsonrpc":"2.0","result":"3.2.3","id":1}  获取Token
#!/usr/bin/python
#coding:utf:8
import requests
import json
url = "http://zabbix.aek.com/zabbix/api_jsonrpc.php"
header = {"Content-Type": "application/json-rpc"}
data = {"jsonrpc": "2.0",
        "method": "user.login",
        "params": {
            "user": "Admin",
            "password": "zabbix"
        },
        "id": 1,
        "auth": None
        }
request = requests.post(url=url, headers=header, data=json.dumps(data))
print(request.content)  成功后返回值如下:会返回一个Token
{"jsonrpc":"2.0","result":"391277f070a3ebc5b2afe9cf466cb74c","id":1}  最后以一个完整的Python脚本通过zabbix API获取所有主机的信息为例:

#!/usr/bin/python
#coding:utf:8
import requests
import json
class Zabbix:
    def __init__(self, url, header, username, password):
        self.url = url
        self.header = header
        self.username = username
        self.password = password
    def getToken(self):
        #获取Token并返回字符Token字符串
        data = {"jsonrpc": "2.0",
                "method": "user.login",
                "params": {
                    "user": self.username,
                    "password": self.password
                },
                "id": 1,
                "auth": None
                }
        token = requests.post(url=self.url, headers=self.header, data=json.dumps(data))
        return json.loads(token.content)["result"]
    def getAllHost(self):
        #获取所有主机信息
        data = {"jsonrpc": "2.0",
                "method": "host.get",
                "params": {
                    "output": [
                        "hostid",
                        "host",
                    ],
                    "selectGroups": "extend",
                    "selectInterfaces": [
                        "interfaceid",
                        "ip"
                    ]
                },
                "id": 2,
                "auth": self.getToken()
                }
        hosts = requests.post(url=self.url, headers=self.header, data=json.dumps(data))
        return json.loads(hosts.content)["result"]

if __name__ == "__main__":
    header = {"Content-Type": "application/json-rpc"}
    url="http://zabbix.aek.com/zabbix/api_jsonrpc.php"
    test = Zabbix(url=url, header=header, username="Admin", password="zabbix")
    print(test.getAllHost())  通过以上的学习相信大家对Zabbix API已经有一个初步的认识,后面将会通过API去完成主机的自动添加,自动化报表等使用




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-665011-1-1.html 上篇帖子: zabbix agent 类型所有 key 下篇帖子: Zabbix节点node架构搭建
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表