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

[经验分享] 利用zabbix API进行管理

[复制链接]

尚未签到

发表于 2019-1-25 09:48:41 | 显示全部楼层 |阅读模式
  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、微信公众号告警
  





运维网声明 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-667301-1-1.html 上篇帖子: Zabbix3.0.x zatree安装教程 下篇帖子: zabbix短信接口调用出现的问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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