基于zabbix API添加监控主机

  1. 由于zabbix监控的主机虽为同一个业务,但是由于其跨机房并且网络为为16位,两个机房导致zabbix的自动添加扫描的主机数量就差不多有12w多个,严重影响其效率和性能.
  2. 使用zabbix API的基本步骤如下:
    1. 连接http://x.x.x.x/api_jsonrpc.php,(在zabbix网页文件的目录下为api_jsonrpc.php),提供用户名和密码,并标识HTTP头部"Content-Type":"application/json",HTTP方法为post.
    2. 获取SESSION
    3. 通过SESSION建立后续连接.
    4. 提交POST数据,格式为JSON,其中存放对应的API方法,获取(提交)需要的数据
  3. 添加HOST示例(用python写的示例,python>=2.6)
  4. #!/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的使用方法.提供一个思路,至于如何批量操作,只需要从这里扩展就行了,文章参考吴兆松的<<Zabbix企业级分布式监控系统>>,这书还是挺不错的.嘿嘿....

时间: 2024-10-13 07:59:25

基于zabbix API添加监控主机的相关文章

基于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 添加host

脚本内容: #!/usr/bin/python #-*- coding:utf8 -*- import json,sys,argparse from zabbix_api import ZabbixAPI server = "http://172.16.206.128/zabbix" username = "Admin" password = "zabbix" zapi = ZabbixAPI(server=server, path="

zabbix服务器添加监控主机,使用监控模板及自定义监控项

上一篇博文记录了<Ubuntu系统LNMP环境下安装配置zabbix3.04>,这里我记录了添加监控主机,添加监控模板和自定义监控CPU 添加监控主机 1.监控主机安装zabbix-agent $ sudo apt-get install zabbix-agent 2.修改zabbix_agent.conf配置文件 $ sudo vi /etc/zabbix/zabbix_agentd.conf - Server=120.40.*.* #zabbix-server端IP - ServerAct

在zabbix中添加监控主机及Items

在http://ly36843.blog.51cto.com/3120113/1640289我们学习了zabbix的server和agent的编译安装方法 这里我们添加监控主机和监控 一.添加一个主机 填写监控主机的相关选项 主要填写:主机名称,选择哪个组即可 查看添加后的结果 二.添加Items 从上面的结果中我们能看到新添加的主机没有任何监控项目,这里我们简单的添加下监控项目 在主机列表中点击项目来创建新的监控项 填写监控项的相关参数 我们再添加一个网卡的出流量,结果如图 三.创建图形 我们

利用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 添加监控主机和相关配置

#在zabbix_1上操作 #安装 zabbix-agent [[email protected]_1 ~]# yum install -y zabbix-agent #启动zabbix-agent [[email protected]_1 ~]# systemctl start zabbix-agent.service #我们发现zabbix-server的  状态是:停用的 可用性为:zbx  (单击 停用的  就可以启用监控) #我们查看 zabbix-server所在的CPU负载  同时

zabbix批量添加主机监控-zabbix api调用

使用python调用zabbix api #!/usr/bin/env python # Version = 3.6.1 # __auth__ = 'warren' import json from urllib import request, parse ZABBIX_URL = 'http://192.168.22.22/zabbix' ZABBIX_USERNAME = "Admin" ZABBIX_PASSWORD = "123456" #以列表形式定义要添

zabbix主动和被动模式、添加监控主机和自动以模板、处理图形中的乱码、自动发现

主动模式和被动模式 主动或被动都是相对于客户端来讲的 被动模式,服务端会主动连接客户端获取监控项目数据,客户端被动的接受连接,并把监控信息传递给服务端. 服务端要到所有的客户端上取数据再返回放到数据库. 主动模式,客户端会主动把监控数据汇报给服务端,服务端只负责接受即可. 定义完监控项目之后,客户端就会根据设定的策略去采集相关项目的数据(cpu使用率.网卡流量.负载等),到点就把数据上传给服务端,服务端再把数据传到数据库. 当客户端数量非常多时,建议使用主动模式,这样可以降低服务端的压力. 服务