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

[经验分享] 基于zabbix API添加监控主机

[复制链接]

尚未签到

发表于 2019-1-19 13:59:48 | 显示全部楼层 |阅读模式

  •   由于zabbix监控的主机虽为同一个业务,但是由于其跨机房并且网络为为16位,两个机房导致zabbix的自动添加扫描的主机数量就差不多有12w多个,严重影响其效率和性能.
  •   使用zabbix API的基本步骤如下:

    •   连接http://x.x.x.x/api_jsonrpc.php,(在zabbix网页文件的目录下为api_jsonrpc.php),提供用户名和密码,并标识HTTP头部"Content-Type":"application/json",HTTP方法为post.
    •   获取SESSION
    •   通过SESSION建立后续连接.
    •   提交POST数据,格式为JSON,其中存放对应的API方法,获取(提交)需要的数据

  •   添加HOST示例(用python写的示例,python>=2.6)
  • #!/usr/bin/env python
    #coding=utf-8
    import json
    import urllib2
    import sys
    from urllib2 import Request,urlopen,URLError,HTTPError
    #zabbix的地址,用户名,密码
    zabbix_url="http://x.x.x.x/api_jsonrpc.php"
    zabbix_header={"Content-Type":"application/json"}
    zabbix_user="admin"
    zabbix_pass="zabbix"
    auth_code=""
    #用户认证信息,最终目的是需要得到一个SESSIONID
    #下面是生成一个JSON格式的数据:用户名和密码
    auth_data=json.dumps(
    {
      "jsonrpc":"2.0",
      "method":"user.login",
      "params":
          {
            "user":zabbix_user,
            "password":zabbix_pass
          },
      "id":0
    })
    request = urllib2.Request(zabbix_url,auth_data)
    for key in zabbix_header:
      request.add_header(key,zabbix_header[key])
    try:
      result = urllib2.urlopen(request)
    except HTTPError,e:
      print 'The server couldn\'t fulfill the request,Error code: ' ,e.code
    except URLError,e:
      print 'We failed to reach a server.Reason:',e.reason
    else:
      response=json.loads(result.read())
      result.close()
    if 'result' in response:
      auth_code=response['result']
    else:
      print response['error']['data']
    #下面是API的请求,方法是host.create创建一个主机,具体API的方法可以参考官网的,上面很全
    json_data={
      "method":"host.create",
      "params":{'groups':[{'groupid':'8'}],
                'host':'192.168.2.208',
                'proxy_hostid':'10107',  #代理服务器
                'interfaces':[{'dns':'',
                               'ip':'192.168.2.208',
                               'main':1,
                               'port':'10050',
                               'type':1,
                               'useip':1
                             }],
                'templates':[{'templateid':'10429'},{'templateid':'10129'}] #用到的模板
         }
    }
    json_base={
      "jsonrpc":"2.0",
      "auth":auth_code,
      "id":1
    }
    json_data.update(json_base)
    if len(auth_code) == 0:
      sys.exit(1)
    if len(auth_code) != 0:
      get_host_data = json.dumps(json_data)
      request = urllib2.Request(zabbix_url,get_host_data)
      for key in zabbix_header:
        request.add_header(key,zabbix_header[key])
      try:
        result = urllib2.urlopen(request)
      except URLError as e:
        if hasattr(e,'reason'):
          print 'We failed to reach a server'
          print 'Reason:',e.reason
        elif hasattr(e,'code'):
          print 'The server could not fulfill the request'
          print 'Error code:',e.code
      else:
        response = json.loads(result.read())
        result.close()
        print response
        print "Number of hosts",len(response['result'])
  5.其实主要还是python和API的使用方法.提供一个思路,至于如何批量操作,只需要从这里扩展就行了,文章参考吴兆松的,这书还是挺不错的.嘿嘿....
  





运维网声明 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-665253-1-1.html 上篇帖子: Zabbix 实现微信短信告警 下篇帖子: 使用Zatree来一览Zabbix图表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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