调用zabbix API实现批量管理主机及个监控项

首先贴上zabbix官网和中文官网的地址:

  https://www.zabbix.com/documentation/3.4/manual/api/reference/item/object

  https://www.zabbix.com/documentation/3.4/zh/manual/api 任何时候任何难题在官网上几乎都能找到答案

 首先,我们想用利用zabbix的restful api来访问zabbix,肯定是需要登陆认证的。在zabbix的后续操作中,必须要有一个TOKEN,这也是官方介绍的:官方上实现的方法如下

{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1,
"auth": null
}
jsonrpc - API使用的JSON-RPC协议的版本; Zabbix API实现JSON-RPC版本2.0; (必须的)
method - 调用的API方法;
params - 将被传递给API方法的参数;
id - 请求的任意标识符; 这个的id需要特别理解下,我之前一直不是很理解。这里的id其实就是一个标志,设置多少无所谓,主要是做返回标志用,也就是这里设置多少,返回数据也会有一个相同的ID 用来标志这个返回对应那个请求!
auth -用户认证令牌; 因为我们还没有一个,它的设置null。

了解了之后我们构造一个请求函数----目的是获取token
def init():
self.url = ‘http://192.168.1.10/zabbix/api_jsonrpc.php
self.headers = {‘Content-Type‘: ‘application/json‘}
auth = {
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "admin", ###验证
"password":"zabbix"
},
"id": 1,
"auth":None,
}
response = requests.post(self.url, data=json.dumps(auth), headers=self.headers)
authid = json.loads(response.text)[‘result‘] ### auth的id 也就是token

OK 我们已经获取了TOKEN 了接下来就可以为所欲为了!

第二步我们获取所有主机list信息(其实也可以去数据库里面取--但是如果去数据库里面取 还得写数据库函数 输入账号密码等等等。。。。)

def get_hosts():
neirong={
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": [
"hostid",
"host"
],
"selectInterfaces": [
"interfaceid",
"ip"
]
},
"id": 2,
"auth": ”AAA“
}
response = requests.post(self.url, data=json.dumps(neirong), headers=self.headers)
print(response.text)

注意这里的interfacse很重要 因为以后对主机项的操作(比如添加item)就需要这个玩意儿。。 我在这里卡了很久 以为这个不重要 官网的说法如下:

第三步:创建主机ITEM
机上上一步我们说到了创建主机 item,我们就来创建一个 上一步我们已经获取到了 主机的 hostid 10255 interfaceid 3 这两个是添加item必须的对于创建item官网的实例为:

{
"jsonrpc": "2.0",
"method": "item.create",
"params": {
"name": "Free disk space on $1",
"key_": "vfs.fs.size[/home/joe/,free]",
"hostid": "10084",
"type": 0,
"value_type": 3,
"interfaceid": "1",
"delay": 30
},
"auth": "0424bd59b807674191e7d77572075f33",
"id": 3
}
好了 我们稍稍改一下:

def itemcreate():
neirong ={
"jsonrpc": "2.0",
"method": "item.create",
"params": {
"name": "Free disk space on $1",
"key
": "vfs.fs.size[/boot,pused]",
"hostid": "10255",
"type": 0,
"value_type": 0,
"interfaceid": "3",
"delay": 5
},
"auth": authid ,(注意这个autid是一个坑一会说明)
"id": 3
}
response1 = requests.post(self.url, data=json.dumps(neirong), headers=self.headers)
print(response1.text)
print("OK")

            这里面的type  value_type的意思可以去官网详细看看 我这里设置的是0 0  也就是代表 zabbix_agent float  相信有zabbix基础的同学是秒懂

接下来我们去zabbix图形化界面上看一看吧:

OK,到此完毕,图形出不来的看下边脚本:

def graf_create(self, authid):
neirong = {
"jsonrpc": "2.0",
"method": "graph.create",
"params": {
"name": "test1",
"width": 900,
"height": 200,
"gitems": [
{
"itemid": "28257",
"color": "00AA00"
}
]
},
"auth": authid,
"id": 4
}

    response1 = requests.post(self.url, data=json.dumps(neirong), headers=self.headers)
    print(response1)
    print(response1.text)
    print("OK")

咱们再说那个authid的问题

调用一下这个函数

原文地址:http://blog.51cto.com/13120271/2165072

时间: 2024-10-27 07:44:11

调用zabbix API实现批量管理主机及个监控项的相关文章

Python调用Zabbix API接口批量修改(禁用/启用)触发器trigger

#!/bin/env python3 #coding:utf-8 import json import os import requests url = "http://192.168.1.1/zabbix/api_jsonrpc.php" # 此处域名修改为相应的地址 headers = { 'Content-Type': 'application/json-rpc' } def token_get(): #根据账号密码获取token data = { "jsonrpc&q

python 调用zabbix api实现查询主机信息,输出所有主机ip

之前发现搜索出来的主机调用zabbix api信息都不是那么明确,后来通过zabbix官方文档,查到想要的api信息,随后写一篇自己这次项目中用到的api. #!/usr/bin/env python #coding:utf8 import requests import json headers = {'Content-Type': 'application/json-rpc'} server_ip = '10.37.149.109' url = 'http://%s/zabbix/api_j

python调用zabbix api接口实时展示数据

近日公司准备自已做一个运维管理平台,其中的监控部分,打算调用zabbix api接口来进行展示. 经过思考之后,计划获取如下内容: 1.  获得认证密钥 2.  获取zabbix所有的主机组 3.  获取单个组下的所有主机 4.  获取某个主机下的所有监控项 5.  获取某个监控项的历史数据 6.  获取某个监控项的最新数据 计划最后展示框架如下内容(这只是值方面,其它的会再加): 主机组1 ----主机名1---监控项1----当前值 ---监控项2----当前值 ----主机名2----监控

zabbix专题:第四章 添加自定义监控项Items

添加监控项Items 对Linux有兴趣的朋友加入QQ群:476794643 在线交流 本文防盗链:http://zhang789.blog.51cto.com 本节目录大纲 什么是item item构成 实战添加网卡流入流出监控项 zabbix专题:第四章 添加监控项Items 什么是item Items是从主机里面获取的所有数据.通常情况下我叫itme为监控项,例如我需要监控它的cpu负载.监控网卡流入流出,那么实现这个方法的东西就叫item.接下来zabbix教程中提到的item都翻译为监

设置zabbix (3.4.2)添加监控项,触发器,让CPU使用超过85%就报警:

zabbix (3.4.2)添加监控项,触发器,让CPU使用超过85%就报警: zabbix自带模板有一个 Template OS Linux模板.这个模板有监控CPU的监控项,如果没有添加一个监控项" CPU idle time" 这个监控项监控的是CPU剩余的时间.监控到这个指标也就可以监控到使用了多少. 1.首先,如果没有添加一个监控项" CPU idle time",具体步骤如下: 1.1:配置->模板-->找到Template OS Linux

(二)Python调用Zabbix api之从入门到放弃——登录并获取身份验证令牌

访问zabbix api的URL是: http://x.x.x.x/zabbix/api_jsonrpc.php x.x.x.x可能是你的IP或者域名 访问流程概览: 1.首先登录 2.认证成功后zabbix server返回一个token 3.带着这个token去访问各种数据,做各种操作 4.完毕! 一.用RESTClient进行登录 在json请求的正文中,具有以下属性: jsonrpc - API使用的JSON-RPC协议的版本; Zabbix API实现JSON-RPC版本2.0; me

(一)Python调用Zabbix api之从入门到放弃——准备工作

需要准备: 1.有可以用的zabbix服务端 2.准备一个火狐浏览器插件--RESTClient,用于调试使用 3.你必须具备python知识,如不具备,请放弃.谢谢! 4.你最好再有一个方便使用的python IDE,我的是Pycharm 原文地址:http://blog.51cto.com/freshair/2132723

(三)Python调用Zabbix api之从入门到放弃——从本节开始放弃

因为忙着写项目.所以没有时间来回倒腾!因此开始讨厌写一些技术博客,所以从本节开始放弃,刚入门就要放弃了!可能我是一个不善于分享的人,也可能我是一个自私的人.不得不承认白羊座的人做事情确实是三分钟热度.昨天还想着好好的写一篇系列文章,除了当是给自己做一些总结之外,也可以帮助到有需要的朋友.不过,确实是三分钟热度了,今天是拔凉拔凉的. 好了,下面是获取IP,HOSTS,HOSTID,GROUPID,ITEMID的Python代码,随便贴点,希望起到抛砖引玉的效果.当然,也是不完整的. # -*- c

zabbix批量添加主机监控-zabbix api调用

使用python调用zabbix api #!/usr/bin/env python # Version = 3.6.1 # __auth__ = 'warren' import json from urllib import request, parse ZABBIX_URL = 'http://192.168.22.22/zabbix' ZABBIX_USERNAME = "Admin" ZABBIX_PASSWORD = "123456" #以列表形式定义要添