zabbix的api统计zabbix监控的主机数量与主机名

python通过zabbix的api获取监控的主机名和主机数量

#!/usr/bin/env python
# -*- encoding: utf8 -*-

#导入模块,urllib2是一个模拟浏览器HTTP方法的模块
import json
import urllib2
import sys
import smtplib
from urllib2 import Request,urlopen,URLError,HTTPError

#url and url header
#zabbix的API地址、用户名、密码、这里修改为实际的参数
zabbix_url="http://ip/api_jsonrpc.php"
zabbix_header = {"Content-Type":"application/json"}
zabbix_user = "zabbix"
zabbix_pass = "admin"
auth_code = ""

#auth user and password
#用户认证信息的部分,最终的目的是得到一个SESSIONID
#下面是生成一个JSON格式的数据:用户名和密码
def auto_login():
    auth_data = json.dumps(
        {
            "jsonrpc" : "2.0",
            "method" : "user.login",
            "params" :
                      {
                      "user":zabbix_user,
                      "password":zabbix_pass
                      },
            "id":0
        })
# create request object
    request = urllib2.Request(zabbix_url,auth_data)
    for key in zabbix_header:
        request.add_header(key,zabbix_header[key])
#认证和获取SESSION ID
    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())
        return response
res=auto_login()

#判断SESSIONID是否在返回的数据中
def check_sessionid():
   if ‘result‘ in res:
  # if ‘result‘ in auto_info:
       auth_code = res[‘result‘]
   else:
       print res[‘error‘][‘data‘]

   json_data ={
       "method":"host.get",
       "params":{
                 "output":"extend",
       }
   }

   json_base={
        "jsonrpc":"2.0",
        "auth":auth_code,
        "id":1
   }
   json_data.update(json_base)

#用得到的SESSIONID去验证,获取主机的信息(用http.get方法)
   if len(auth_code) == 0:
       sys.exit(1)
   host=[]
   if len(auth_code) != 0:
       get_host_data = json.dumps(json_data)
       #create request object
       request = urllib2.Request(zabbix_url,get_host_data)
       for key in zabbix_header:
               request.add_header(key,zabbix_header[key])

        #get host list
       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
   for i in response[‘result‘]:
           #print i
            if unicode(str(i[‘host‘][-1])).isdecimal() == True:
                 H= i[‘host‘]
                 host.append(H)
   return host

if __name__ == "__main__":
    return_host=check_sessionid()
    print return_host
    print len(return_host)
时间: 2024-10-05 09:26:21

zabbix的api统计zabbix监控的主机数量与主机名的相关文章

Zabbix Python API 应用实战

做监控的同学应该知道,公司IDC机房经常有上架.下架.报修和报废的服务器.如果服务器数量很多的时候很容易造成监控遗漏.    大的互联网公司把监控系统和CMDB(资产管理系统|配置管理数据库系统)集成在一起,当上架一台新机器的时候CMDB里面会记录相关的信息,Zabbix根据CMDB里面信息自动Link相关的模块,添加|删除监控.很多小的公司没有资产管理系统,但作为监控的负责人应该每天知道上架了哪些新的机器,确保能添加到Zabbix监控里面.    首先给大家说一下脚本思路:1)通过Nmap工具

PHP通过Zabbix API获取服务器监控信息

开源监控系统Zabbix提供了丰富的API,供第三方系统调用. 基本步骤如下: 1.获取合法认证:连接对应Zabbix URL,并提供用户名和密码,HTTP方法为"POST",HTTP头部类型为"application/json" 1 public function zabbixJsonRequest($uri, $data) { 2 try{$json_data = json_encode($data); 3 $c = curl_init(); 4 curl_se

zabbix入门到精通之Zabbix对linux主机的监控

我们大概了解了怎么对台主机进行监控,主要步骤设计到添加主机,并且为主机添加监控项,这里主要为item,然后在item的基础上对item进行绘图并且通过screen的方式把不同的监控图像汇总到一张screen上.通过对quick章节我们认识到item监控项在zabbix中是非常重要的,而item的监控是通过key来定义的,key又分为系统预定义好的key和自定义的key组成,这一节,我们通过对zabbix预定义的内存key来了解一下key到底是怎么组成和怎么使用的. Key 参数 类型 单位 举例

Zabbix(一):server,agent端 安装配置及主机,监控项,触发器,动作,媒介配置步骤

Zabbix(一):server端配置.agent端配置及创建主机组.主机.Application.Item.Trigger步骤详解 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供柔软的通知机制以让系统管理员快速定位/解决存在的各种问题.  Zabbix的逻辑组件: - 主机(host):被监控的网络设备,通常可以使用IP或DNS名称来指定: - 主机组(hostgroup):主机的逻

zabbix调用api接口批量添加主机

zabbix调用api接口批量添加主机,这里用的是python 2.7(需安装xlrd模块处理表格). (1)到官网下载xlrd模块:https://pypi.python.org/pypi/xlrd (2)解压压缩包:tar xvf xlrd-1.0.0.tar.gz(3)进入到解压的文件夹运行python setup.py install命令安装 1.整理一个excel表格(test.xlsx),格式如下: 2.addhost.py脚本,添加主机名.显示名称.dns主机名.群组.模板字段(网

Zabbix服务安装部署及监控配置

1.1 Zabbix服务介绍 官方网站:http://www.zabbix.com/ The Enterprise-class Monitoring Solution for Everyone 企业级监控解决方案 zabbix是一个基于Web界面提供分布式系统监控以及网络监视功能的企业级的开源解决方案 Zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以及让系统管理员快速定位解决存在的各种问题. 1.1 Zabbix主要特点 安装与配置简单,学习成本地,支持多语言(包

Zabbix+Grafana打造高逼格监控系统

第一章 zabbix监控的意义 1.1 为什么要监控 业务安全性的保障 系统的保障 产品持续性的运行 1.2 监控的内容 1.3 zabbix的选择性 [x] 纯命令监控太局限性 [x] 监控三剑客(Nagios.zabbix.Cacti ) [x] 可及时发现故障,并在故障恢复的第一时间得到通知 [x] 灵活运用,包括zabbix的阈值定义,自动发现,API接口,触发动作等功能 1.4 zabbix的工作组件及告警流程 数据采集:Zabbix 通过 SNMP.Agent.ICMP.SSH.IP

47 监控系统基础及zabbix介绍、zabbix工作原理及安装配置、zabbix on CentOS7、zabbix配置

02    zabbix工作原理及安装配置 配置环境 node1192.168.1.120CentOS6.7 node2192.168.1.121CentOS6.7 1.安装配置zabbix #安装前准备 [[email protected] ~]#yum -y install mysql-server mysq [[email protected] ~]# mysql mysql> CREATE DATABASE zabbix CHARACTER SET utf8; mysql> GRANT

zabbix源码安装,自定义监控205的用户数,有触发器但没有邮件报警

zabbix源码安装,自定义监控205的用户数,有触发器但没有邮件报警 监控端配置:(192.168.4.5) 1基础环境:(实验环境可以关闭防火墙,但生产环境不能关闭,否则不安全,要设置相应规则) [[email protected]桌面]# /etc/init.d/iptables stop [[email protected]桌面]# setenforce 0 2搭建lamp平台,(它运行在lamp平台上) [[email protected]桌面]# yum -y install htt