利用zabbix API进行管理

zabbix 现在之所以那么流行,个人感觉跟zabbix 强大的API有一个很大的关系,利用API可以帮我们完成很多事情:

1、获取相关组,主机信息。

2、比如有人喜欢获取历史数据重新出图。

3、添加删除主机,绑定删除模板。

4、添加删除维护周期

这里我使用pipy提供的zabbix_client模块来进行,这样就不用我们自己去写登录函数,只要在模块开始指定用户名密码即可:

1、安装zabbix_client:

pip install zabbxi_client

2、API管理脚本,替换成自己用户名密码即可:

#coding:utf-8
import time
from zabbix_client import ZabbixServerProxy
class Zabbix():
    def __init__(self):
        self.zb = ZabbixServerProxy("http://192.168.10.100/zabbix")
        self.zb.user.login(user="Admin", password="zabbix")
     ############## 查询组所有组获取组id ###############
    def get_hostgroup(self):
        data = {
           "output":[‘groupid‘,‘name‘]
         }
        ret = self.zb.hostgroup.get(**data)
        return ret 
  
     ########### 通过组id获取相关组内的所有主机 ###############
    def get_hostid(self,groupids=2):
        data = {
        "output": ["hostid", "name"],
        "groupids": groupids
        }
        ret = self.zb.host.get(**data)
        return ret
     ########## 通过获取的hostid查找相关监控想itemid ###################
    def item_get(self, hostids="10115"):
        data = {
       "output":["itemids","key_"],
       "hostids": hostids,
        }
        ret = self.zb.item.get(**data)
        return ret
  ######### 通过itemid(传入itemid和i0表示flast类型)获取相关监控项的历史数据 ###########
    def history_get(self, itemid, i ,limit=10):
        data = { "output": "extend",
          "history": i,
          "itemids": [itemid], 
          "limit": limit 
          }
        ret = self.zb.history.get(**data)
        return ret
  
   ###############添加主机并且指定到组(传入主机名,IP地址和组ID)#####################
    def add_zabbix_host(self,hostname="test_zabbix",ip="192.168.10.100",groupid="2"):
        data = {
         "host": hostname,
         "interfaces": [
            {
                "type": 1,
                "main": 1,
                "useip": 1,
                "ip": ip,
                "dns": "",
                "port": "10050"
            }
         ],
         "groups": [
             {
                "groupid": groupid
             }
         ]
        }
        ret = self.zb.host.create(data)
        return ret
    #####################查看现有模板,绑定主机到模板#######################
    def get_template(self,hostid=10129):
        datalist = []
        datadict={}
        data = {
           "hostid": hostid,
           "output":["templateid","name"]
        }
        ret =  self.zb.template.get(data)
        for i in ret:
            datadict[i[‘name‘]] = i[‘templateid‘]
            datalist.append(datadict)
        return datalist 
    
     #################### 关联主机到模板##################################
    def link_template(self, hostid=10156, templateids=10001):
        data = {
            "hostid":hostid,
             "templates":templateids
        }      
  
        ret = self.zb.host.update(data)
        return ret
   
    ###################  添加维护周期,,######################################
 
    def create_maintenance(self,name="test",hostids=10156,time=2):
        data =  {
            "name": name,
            "active_since": 1458142800,
            "active_till": 1489678800,
            "hostids": [
                hostids
            ],
            "timeperiods": [
                {
                    "timeperiod_type": 0,
                    "period": 3600
                }
            ]
        }
        ret = self.zb.maintenance.create(data)
        self.host_status(10130, 1)
        return ret
    ################获取维护周期,,#########################
    def get_maintenance(self):
        data = {
            "output": "extend",
            "selectGroups": "extend",
            "selectTimeperiods": "extend"
        }
        ret = self.zb.maintenance.get(data)
        return ret
    ##############获取维护周期之后,通过传入maintenanceid删除维护周期###########
    def del_maintenance(self,maintenanceids):
        return self.zb.maintenance.delete(maintenanceids) 
    #########################添加维护周期时候需要吧zabbix_host设置成非监控状态##################
    def host_status(self, hostid, status):
        data = {
            "hostid":hostid,
            "status":status
        }
        return self.zb.host.update(data)
    ###########通过hostids删除主机id,顺带也删除模板#########
    
    def host_del(self,hostids=10155):
        return self.zb.host.delete(hostids)
if __name__ == "__main__":
    zabbix_server = Zabbix()
    #print zabbix_server.get_hostgroup()
    #print zabbix_server.get_hostid()
    #print zabbix_server.item_get(10156)   
    #data = zabbix_server.history_get("24889",0) 
    #print zabbix_server.get_hostgroup()
    #print zabbix_server.add_zabbix_host()
    #data = zabbix_server.get_template()
    #print data[0][‘Template OS Linux‘]
    #print zabbix_server.link_template()
    #print zabbix_server.create_maintenance()
   # print zabbix_server.host_del(10155)
    #print zabbix_server.get_maintenance()
    print zabbix_server.del_maintenance(15)

更多zabbix视频可以查看:

http://www.roncoo.com/details?cid=fb3050a5b34b42f39ccad83ebebc89c1

时间: 2024-10-30 15:03:04

利用zabbix API进行管理的相关文章

利用Zabbix API创建主机宏

#!/usr/bin/python #coding:utf-8 from zabbix_api import ZabbixAPI import json server="http://172.16.206.130/zabbix" username="Admin" password="zabbix" zapi = ZabbixAPI(server=server,path="",log_level=0) zapi.login(us

利用zabbix api添加、删除、禁用主机

python环境配置yum -y install python-pip安装argparse模块pip install -i https://pypi.douban.com/simple/ argparse 脚本修改请修改脚本中zabbix登录地址以及zabbix管理员帐户及密码 #!/usr/bin/env python #-*- coding: utf-8 -*- import json import sys import urllib2 import argparse from urllib

python利用zabbix API添加监控

首先说一下坑的地方就是python2和python3的模块改变问题,当然精通python的可以略过.这个在网上百度一下吧,第二个是导入xlsx文件的时候需要xlrd模块,而这个模块最好跟着我下面的方法走,那个python2 就可以用我下边的脚本了. 1.安装xlrd读取Excel文件 1.1. 下载setuptools-38.2.4.zip,上传至zabbix服务器解压安装,下载地址:https://pypi.python.org/packages/69/56/f0f52281b5175e3d9

利用Zabbix API 获取各个分组下的服务器列表以及详细信息

现在越来越多的公司选择使用开源软件Zabbix来做服务器业务监控,其高逼格的用户管理是个亮点,所以可以通过调用它的接口将权限管理应用到很多地方,比如说堡垒机权限.以下是用python简单写了个小脚本,通过定义分组名便可以得到分组下的服务器信息. #coding=utf-8 __author__ = 'Perling' from urllib import urlencode import urllib2 import json def post(post_data):     api_url =

利用Zabbix API 创建主机

#!/usr/bin/env python2.7 # coding=utf-8 from zabbix_api import ZabbixAPI import urllib2 import sys ###get visible_name inet_ip=sys.argv[1] url = 'http://10.47.102.185/api/ecs/?ip={0}'.format(inet_ip) response = urllib2.urlopen(url) result = response.

利用zabbix api 带入 组ID 和 监控项目键值 获取所有主机的值

def  chaxun(groupid,items_value):  是自己写的,带入组ID 和 监控项目键值,返回 主机和值的结果. 做了判断,如果这个主机没有想要的监控项目,就去除掉. #!/usr/bin/env python #coding=utf-8 import urllib.request import json import re url = 'http://XXXXXXXXXXXXXXXX/api_jsonrpc.php' username = 'Admin' password

基于zabbix api根据hostname管理多个template

基于zabbix api根据hostname添加多个template 之前写了一个关联模版的api但是考虑到每个添加一个template是有点复杂,而且最近有那么一个需求,所以改了一下方法,使得可以根据hostname添加多个template. 话不多说直接上脚本和效果: (env1) ?  ~ cat zabbix_add_template.py #!/usr/bin/python #-*- coding:utf-8 -*- #__author__ == 'chenmingle' import

ZABBIX API简介及使用

API简介 Zabbix API开始扮演着越来越重要的角色,尤其是在集成第三方软件和自动化日常任务时.很难想象管理数千台服务器而没有自动化是多么的困难.Zabbix API为批量操作.第三方软件集成以及其他作用提供可编程接口. Zabbix API是在1.8版本中开始引进并且已经被广泛应用.所有的Zabbix移动客户端都是基于API,甚至原生的WEB前端部分也是建立在它之上.Zabbix API 中间件使得架构更加模块化也避免直接对数据库进行操作.它允许你通过JSON RPC协议来创建.更新和获

基于python的API接口管理平台开发(V1.0)

今天博主终于完成了API接口管理平台,最后差的就是数据库的维护, 博主这里介绍下平台的设计原理,首先基于python,利用flask的web框架+bootstrap前端框架完成,先阶段完成了前台展示页 二期要加入登录退出,后台管理 下面是文档结构图 涉及的python第三方模块:flask.flask-bootstrap.sqlalchemy 整体页面的布局:页头的导航,右侧的API分类,页面信息 页面信息内容包括:接口说明,请求参数,返回参数,请求示例,返回示例 下面是定义数据库对象的mode