• 欢迎访问蜷缩的蜗牛博客 蜷缩的蜗牛
  • 微信搜索: 蜷缩的蜗牛 | 联系站长 kbsonlong@qq.com
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

利用zabbix API进行管理 推荐

Zabbix 蜷缩的蜗牛 7个月前 (02-27) 42次浏览 已收录

    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):
        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):
        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/fb3050a5b34b42f39ccad83ebebc89c1

zabbix 自动化课程目录(需求更新中):

1、zabbix 生产环境如何使用

2、saltstack 批量部署 zabbix_agent

3、zabbix API 简单使用讲解

4、web UI 讲解

5、开始监控之添加一个简单的 linux 监控

6、zabbix 强大的内置 key 讲解

7、内置 key 的使用、 端口、用户数、磁盘读取状态出图

8、trigger 表达式学习,实现用户登录数,端口检查告警

9、zabbix 邮件告警设置与维护周期

10、zabbix 自定义 Key 添加,tcp 状态模板编写

11、自定义监控之、监控 nginx 解析与实现

12、自定义监控之 php-fpm 监控

13、自定义监控之 mysql 状态监控

14、自定义监控之缓存服务器 memcached,redis 监控

15、自动化之 saltstack 管理 zabbix,批量推送 key 生效

16、zabbix 自动发现绑定删除模板,自动注册

17、zabbix lld 发现讲解以及端口发现监控告警出图

18、zabbix lld 发现 web 站点以及批量获取状态码

19、zabbix lld 复习和监控磁盘的运行状况

20、zabbix 生成环境规范和按月生成报表资源统计

21、微信公众号告警

本文转载自 利用 zabbix API 进行管理 推荐


蜷缩的蜗牛 , 版权所有丨如未注明 , 均为原创丨 转载请注明利用 zabbix API 进行管理 推荐
喜欢 (0)
[]
分享 (0)