利用zabbix api 带入 组ID 和 监控项目键值 获取所有主机的值

def  chaxun(groupid,items_value):  是自己写的,带入组ID 和 监控项目键值,返回 主机和值的结果。

做了判断,如果这个主机没有想要的监控项目,就去除掉。
#!/usr/bin/env python
#coding=utf-8
import urllib.request
import json
import re

url = ‘http://XXXXXXXXXXXXXXXX/api_jsonrpc.php‘
username = ‘Admin‘
password = ‘XXXXX‘

#登陆
def requestJson(url,values):
    data = json.dumps(values).encode(‘utf-8‘)
    req = urllib.request.Request(url, data, {‘Content-Type‘: ‘application/json-rpc‘})
    response = urllib.request.urlopen(req, data)
    a = response.read().decode(encoding=‘utf-8‘)
    output = json.loads(a)
    try:
        message = output[‘result‘]
    except:
        message = output[‘error‘][‘data‘]
        print(message)
        quit()
    return output[‘result‘]

##登陆的API
def authenticate(url, username, password):
    values = {‘jsonrpc‘: ‘2.0‘,
              ‘method‘: ‘user.login‘,
              ‘params‘: {
                  ‘user‘: username,
                  ‘password‘: password
              },
              ‘id‘: ‘0‘
              }
    idvalue = requestJson(url,values)
    return idvalue

auth=authenticate(url,username,password)

##查询组ID {‘groupid‘: ‘8‘, ‘name‘: ‘Switch‘}
def groups(auth):
    values = {
            "jsonrpc":"2.0",
            "method":"hostgroup.get",
              "params":{
                    "output":["groupid","name"],
            },
              ‘auth‘: auth,
              ‘id‘: ‘1‘
              }
    output = requestJson(url,values)
    return output

##查询主机
def hosts(auth,a):
    values = {
            "jsonrpc":"2.0",
            "method":"host.get",
              "params":{
                    "output":["groupid","name"],
                    "groupids": a,
            },
              ‘auth‘: auth,
              ‘id‘: ‘1‘
              }
    output = requestJson(url,values)
    return output

##查询主机项目
def items(auth,a):
    values = {
            "jsonrpc":"2.0",
            "method":"item.get",
              "params":{
                  "output": ["itemids", "key_"],
                  "hostids": a,
                  },
              ‘auth‘: auth,
              ‘id‘: ‘1‘
              }
    output = requestJson(url,values)
    return output

##查询项目的历史值  ‘lastvalue‘: ‘-14760.0000‘
def his(auth,itemids):
    values = {
            "jsonrpc":"2.0",
            "method":"item.get",
              "params":{
                    "output": "extend",
                      "history": 0,
                      "itemids": itemids,
                      "sortfield": "itemid",
                      "sortorder": "DESC",
                      "limit": 1
                  },
              ‘auth‘: auth,
              ‘id‘: ‘1‘
              }
    output = requestJson(url,values)
    return output

##查询触发项目值和监控项目
def trigger(auth):
    values = {
              "jsonrpc":"2.0",
              "method": "trigger.get",
              "params": {
                      "output": [
                        "description",
              ],
              "filter": {
                  "hostid": "10108",
              },
              "selectItems":"",
              "sortfield": "hostname",
              "sortorder": "DESC"
              },
              ‘auth‘: auth,
              ‘id‘: ‘1‘
              }
    output = requestJson(url,values)
    return output

def  chaxun(groupid,items_value):

    host = hosts(auth, groupid) ##获取所有主机

    host_name = []
    host_id = []

    for i in host:
        host_id.append(i[‘hostid‘])
        host_name.append(i[‘name‘])
    hostall = dict(zip(host_id, host_name))  ## 所有主机     ‘10118‘: ‘云主机:10.8.8.65‘,‘10119‘: ‘云主机:10.8.8.66‘,

    host_names = []
    host_ids = []
    for i in host_id:    ##筛选,  有监控项目的   符合要求的主机ID,和主机名字
        host_id_value = items(auth, i) ## [{‘itemid‘: ‘29272‘, ‘key_‘: ‘BiosDate‘},{‘itemid‘: ‘29272‘, ‘key_‘: ‘BiosDate‘}]
        for index, value in enumerate(host_id_value):
            for k, v in value.items():
                if  items_value  in v:           ## items_value
                    host_ids.append(host_id_value[index][‘itemid‘])
                    host_names.append(i)

                    
                    

    host_names_list = []
    for i in   host_names:  ## 用符合要求的主机  获取它的名字
        for k, v in hostall.items():
            if i in k:
                host_names_list.append(v)

    history_value = []
    for i in host_ids:         ##查询主机ID的最新历史值
        history = his(auth, i)
        history_value.append(history[0][‘lastvalue‘])
    host_value = dict(zip(host_names_list, history_value))

    return  host_value  #返回主机和值的对应关系

ret = chaxun(5, "ProcThreadCount.[2]")#  组ID 和 想要查询的监控项目
print(ret)
时间: 2024-10-10 10:12:12

利用zabbix api 带入 组ID 和 监控项目键值 获取所有主机的值的相关文章

zabbix详解:(四)添加自定义的监控项目并使用

从安装的第一天,就必然有人会有疑问,默认的监控模板不好用,或者说根本没有自己想要的,这可怎么办呢?没关系,zabbix和nagios一样,可以自定义监控项目,当然包括报警规则和视图了,也不是很复杂. 添加自定义的监控项目: 操作之前要知道原理:原理是server端调用agent端配置的键值参数调用脚本,然后脚本参数传输给server端,server端写进数据库,然后获取到新的数值再进行处理并在前端显示给用户看. 所以我们需要做的事情有三个: 第一,编写监控脚本 第二,修改zabbix_agent

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 API进行管理

zabbix 现在之所以那么流行,个人感觉跟zabbix 强大的API有一个很大的关系,利用API可以帮我们完成很多事情: 1.获取相关组,主机信息. 2.比如有人喜欢获取历史数据重新出图. 3.添加删除主机,绑定删除模板. 4.添加删除维护周期 这里我使用pipy提供的zabbix_client模块来进行,这样就不用我们自己去写登录函数,只要在模块开始指定用户名密码即可: 1.安装zabbix_client: pip install zabbxi_client 2.API管理脚本,替换成自己用

利用Zabbix API创建主机宏

#!/usr/bin/python #coding:utf-8 from zabbix_api import ZabbixAPI import json server="http://172.16.206.130/zabbix" username="Admin" password="zabbix" zapi = ZabbixAPI(server=server,path="",log_level=0) zapi.login(us

利用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

利用Zabbix API 获取各个分组下的服务器列表以及详细信息

现在越来越多的公司选择使用开源软件Zabbix来做服务器业务监控,其高逼格的用户管理是个亮点,所以可以通过调用它的接口将权限管理应用到很多地方,比如说堡垒机权限.以下是用python简单写了个小脚本,通过定义分组名便可以得到分组下的服务器信息. #coding=utf-8 __author__ = 'Perling' from urllib import urlencode import urllib2 import json def post(post_data):     api_url =

利用Zabbix API 创建主机

#!/usr/bin/env python2.7 # coding=utf-8 from zabbix_api import ZabbixAPI import urllib2 import sys ###get visible_name inet_ip=sys.argv[1] url = 'http://10.47.102.185/api/ecs/?ip={0}'.format(inet_ip) response = urllib2.urlopen(url) result = response.

利用Zabbix监控Lync的实时在线人数

大家都知道windows性能监控一般依靠性能计数器, Lync实时在线人数统计就是SQL数据库实时连接数. 使用windows性能监视器对Lync的实时在线人数进行监控. 这个数值就是lync的实时在线人数 通过zabbix监控 为了方便zabbix监控我们需要找出这个性能参数值 我们将SQL服务器的性能计数参数都导出来 我们需要为SQL服务器新建一个监控项目 键值为: perf_counter[\SQLServer:User Settable(User counter 1)\Query] 再为

python调用zabbix api接口实时展示数据

近日公司准备自已做一个运维管理平台,其中的监控部分,打算调用zabbix api接口来进行展示. 经过思考之后,计划获取如下内容: 1.  获得认证密钥 2.  获取zabbix所有的主机组 3.  获取单个组下的所有主机 4.  获取某个主机下的所有监控项 5.  获取某个监控项的历史数据 6.  获取某个监控项的最新数据 计划最后展示框架如下内容(这只是值方面,其它的会再加): 主机组1 ----主机名1---监控项1----当前值 ---监控项2----当前值 ----主机名2----监控