zoukankan      html  css  js  c++  java
  • python3 使用 zabbix_client模块

    除了上一篇使用自己定义的函数,我们还可使用pipy提供的zabbix_client模块,这样就不用我们自己去写登录函数,只要在模块开始指定用户名密码即可,方便很多。

    #!/usr/bin/env python
    # Version = 3.5.2
    # __auth__ = '无名小妖'
    import time
    from zabbix_client import ZabbixServerProxy
    
    ZABBIX_URL = 'http://alyz.zabbix.com'
    ZABBIX_USERNAME = "Admin"
    ZABBIX_PASSWORD = "zabbix"
    
    
    class Zabbix:
    
        def __init__(self):
            self.zb = ZabbixServerProxy(ZABBIX_URL)
            self.zb.user.login(user=ZABBIX_USERNAME, password=ZABBIX_PASSWORD)
    
        def get_hostgroup(self):
            """
            查询组所有组获取组id和name
            :return: groupid和name
            """
            data = {
               "output": ['groupid', 'name']   # "output": "extend",   查看所有字段
            }
            ret = self.zb.hostgroup.get(**data)
            return ret
    
        def get_hostid(self, groupids=None):
            """
            通过组id获取相关组内的所有主机
            :param groupids: None表示获取所有组的主机,可以通过列表,元组等传入多个组id
            :return: "hostid"和"name"
            """
            data = {
                "output": ["hostid", "name"],
                "groupids": groupids
            }
            ret = self.zb.host.get(**data)
            return ret
    
        def item_get(self, hostids=None):
            """
            通过获取的hostid查找相关监控想itemid
            :param hostids: None表示获取所有主机的item,可以通过列表,元组等传入多个itemid
            :return: "itemids", "key_"
            """
            data = {
                "output": ["itemids", "key_"],
                "hostids": hostids,
            }
    
            ret = self.zb.item.get(**data)
            return ret
    
        def history_get(self, itemid, i, limit=10):
            """
            通过itemid 获取相关监控项的历史数据
            :param itemid:
            :param i: 0 - numeric float; 1 - character; 2 - log; 3 - numeric unsigned; 4 - text.
            :param limit: 获取数据的数量
            :return:
            """
            data = {"output": "extend",
                    "history": i,
                    "itemids": [itemid],
                    "limit": limit
                    }
            ret = self.zb.history.get(**data)
            return ret
    
        def add_zabbix_host(self, hostname="test_zabbix", ip="192.168.10.100", groupid="2"):
            """
            添加主机并且指定到组(传入主机名,IP地址和组ID)
            :param hostname:
            :param ip:
            :param groupid:
            :return:
            """
            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):
            """
            查看现有模板
            :return:
            """
            datalist = []
            datadict = {}
            data = {
                "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):
            """
            关联主机到模板
            :param hostid:
            :param templateids:
            :return:
            """
            data = {
                "hostid": hostid,
                "templates": templateids
            }
    
            ret = self.zb.host.update(data)
            return ret
    
        def create_maintenance(self, name="test", hostids=10156, time=2):
            """
            添加维护周期
            :param name:
            :param hostids:
            :param time:
            :return:
            """
            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):
            """
            获取维护周期
            :return:
            """
            data = {
                "output": "extend",
                "selectGroups": "extend",
                "selectTimeperiods": "extend"
            }
            ret = self.zb.maintenance.get(data)
            return ret
        #
        # def del_maintenance(self, maintenanceids):
        #     """
        #     获取维护周期之后,通过传入maintenanceid删除维护周期
        #     :param maintenanceids:
        #     :return:
        #     """
        #     return self.zb.maintenance.delete(maintenanceids)
    
        def host_status(self, hostid, status):
            """
            添加维护周期时候需要吧zabbix_host设置成非监控状态
            :param hostid:
            :param status:
            :return:
            """
            data = {
                "hostid": hostid,
                "status": status
            }
            return self.zb.host.update(data)
    
        # def host_del(self, hostids=10155):
        #     """
        #     通过hostids删除主机id,顺带也删除模板
        #     :param hostids:
        #     :return:
        #     """
        #     return self.zb.host.delete(hostids)
    
    
    if __name__ == "__main__":
        zabbix_server = Zabbix()
        print(zabbix_server.get_hostgroup())
        print(zabbix_server.get_hostid([2, 1]))
        print(zabbix_server.item_get())
        # data = zabbix_server.history_get("24889",0)
        # print(zabbix_server.add_zabbix_host())
        print(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)))
    

      

  • 相关阅读:
    2月份热门的 24 个 jQuery 插件
    走近求伯君1 求伯君,1964年11月26日出生于浙江新昌县。
    转CSDN,13原则
    SQL Server数据库如何正确加密?
    Zend Studio提供zend studio教程、zend studio下载等相关资源的公益性站点。 订阅
    高端人才必看,生意人必读
    有速度才有效率,支持Google gear离线的网站和应用
    2009.08.20总结与微软中国开发部经理段老师的通话无锡德立解决方案
    从SOA、SaaS到博科自主配置平台
    MySQL 1045错误的解决方法
  • 原文地址:https://www.cnblogs.com/wumingxiaoyao/p/7479650.html
Copyright © 2011-2022 走看看