zabbix-2.0.8日常巡检-检测项目状态

在日常的监控运维中,因监控的内容较多,人较少的情况下,监控对本省的日常巡检成了一个重大的累赘(我们不可能每天对每一个检测项的状态进行检查,工作量,我的天呢),虽然我们可以使用zabbix自身报警,邮件等手段,但是,填写巡检表的时候,嘿嘿嘿,麻烦的让人想吐。监控自身巡检就成了必要的手段了。

由于时间问题和需求不定,我就暂将存在故障检测项的IP输出,未做处理(可以做成表格输出,大方,简洁,方便),还望抱歉。

前期准备:

1.修改zabbix的url,用户,密码

2.修改检测项目对应的key:keyinfo(巡检需要列出大量需要检测的key)

3.由于我含有多个省份xxxx,yyyy,可以酌情添加减少

#!/usr/bin/env python
# coding:utf-8
##########################
# Function : 该script可以针对部署的监控进行的检测,也可进行日常巡检
# Editer   : graysky
# Version  : 1.0.0
# Mail     : [email protected]
# Date	   : 2016-08-14
##########################

import json
import urllib2
import xlrd
class api_work:
    def __init__(self, url, user, passwd):
        self.url = url
        self.user = user
        self.passwd = passwd
        self.login_authid = self.zabbix_login()
    def json_work(self, work_json):
        zabbix_header = {"Content-Type": "application/json"}
        self.work_json = work_json
        used_json = json.dumps(self.work_json)
        used_json_reques = urllib2.Request(self.url, used_json)
        for key in zabbix_header:
            used_json_reques.add_header(key, zabbix_header[key])
        try:
            used_json_result = urllib2.urlopen(used_json_reques)
        except Exception:
            print "Get failed"
        else:
            used_json_respones = json.loads(used_json_result.read())
            used_json_group = used_json_respones[‘result‘]
            used_json_result.close()
            return used_json_group
    def zabbix_login(self):
        login_json = {"jsonrpc": "2.0",
                      "method": "user.login",
                      "params": {"user": self.user, "password": self.passwd},
                      "id": 0}
        login_authid = self.json_work(login_json)
        return login_authid
    def get_hostinfo(self):
        hostinfo_group = {}
        host_json = {"jsonrpc": "2.0",
                     "method": "host.get",
                     "params": {"output": "extend",
                                },
                     "auth": self.zabbix_login(),
                     "id": 0,}
        for hostinfo in self.json_work(host_json):
            hostinfo_group[hostinfo["hostid"]] = hostinfo["host"]
        return hostinfo_group
    def get_itemsinfo_by_hostidmonitor(self,hostid,monitor_key):
        itemsinfo_group = {}
        items_json = {"jsonrpc": "2.0",
                      "method": "item.get","params":
                          {"output": "extend",
                           "hostids": hostid,
                           "search":{"key_": monitor_key},
                           "sortfield": "name"
                           },
                      "auth": self.login_authid,
                      "id": 0}
        for itemsinfo in self.json_work(items_json):
            itemsinfo_group[itemsinfo[‘itemid‘]] = itemsinfo[‘status‘]
        return itemsinfo_group
if __name__ == "__main__":
    def provincework(provinceinfo,key_info):
        if provinceinfo == "xxxx":
            zabbix_url = "http://xxxx/zabbix/api_jsonrpc.php"
            zabbix_user = "Admin"
            zabbix_passwd = "xxxx"
        elif provinceinfo == "yyyy":
            zabbix_url = "http://yyyyy/zabbix/api_jsonrpc.php"
            zabbix_user = "Admin"
            zabbix_passwd = "yyyy"
        api_init = api_work(zabbix_url,zabbix_user,zabbix_passwd)
        hostinfogroup = api_init.get_hostinfo()
        ‘‘‘
        for hostip in hostinfogroup.values():
            print hostip
        ‘‘‘
        ItemsErrorHostIP = []
        for hostid in hostinfogroup.keys():
            itemsstatusinfo_group = api_init.get_itemsinfo_by_hostidmonitor(hostid,key_info)
            for itemsstatusinfo in itemsstatusinfo_group.values():
                if int(itemsstatusinfo) > 0 :
                    ItemsErrorHostIP.append(hostinfogroup[hostid])
        return ItemsErrorHostIP

    provincegroup = [‘xxxx‘,‘yyyy‘]
    keyinfo = ‘OS.Core.Dir.Change[/etc/init.d/]‘
    for province in provincegroup:
        erroritemsipgroup = provincework(province,keyinfo)
        if len(erroritemsipgroup) == 0 :
            print "省份%s检测结果: 添加完成-通过 "%province
        else:
            print "省份%s检测结果: 未添加完成-未通过IP如下:"%province
            for erroritemsip in erroritemsipgroup:
                type(erroritemsip)
                print "\t\t\t\t%s"%erroritemsip
时间: 2024-10-17 09:41:33

zabbix-2.0.8日常巡检-检测项目状态的相关文章

Zabbix-2.0.8利用excel表格快速添加检测项目和触发器

在日常的监控运维中,对于添加检测项目和触发器基本上都是使用前台和鼠标来创建,如果是在模板中添加或机器数量较少的情况下,工作量还是可以接受.如果监控服务器上k级别,且大部分需要定制的时候,手动添加将是一个让人抓狂的工作. 最近公司有监控新需求啦,新需求啦.每次听到这个,我都很郁闷,公司服务器1500+,因绝大部分的新需求都是需要定制的,而且因为历史原因,模板的套用也是问题(有大量复用导致定制话模板无法加入同一台服务器),每次添加都是一个痛苦的过程,而本文就是在这个情况下诞生的. 前期准备: 1.收

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

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

深入浅出Zabbix 3.0 -- 第二章 Zabbix Web操作与定义

第二章  Zabbix Web操作与定义 本章介绍Zabbix 中一些基本概念的定义和web前端页面的操作,包括Zabbix中使用的一些术语的定义,Web页面中用户管理.主机和主机组的管理,以及监控项.模板.触发器.告警的管理和操作,还有Graphs.Screens.Maps及Reports等.通过本章的学习掌握一些基本概念并能够通过Web页面的操作完成对Zabbix的管理. 2.1 定义 hosts(主机) Zabbix中需要监控的服务器.交换机及其他设备我们都统一称作host,这些设备与Za

深入浅出Zabbix 3.0 -- 第三章 Zabbix 监控方式

第三章  Zabbix 监控方式 有人说通过Zabbix可以完成任何监控任务,只有你想不到的,但没有监控不了的,真是这样吗?当你通过本章了解了Zabbix提供的多种监控方式后,你就会发现此言非虚. 这里所说的监控方式,实际上就是Zabbix中的配置监控项时选择的监控项类型.为了适应各种应用场景的需要,Zabbix提供了多种方法帮助你更好的完成监控任务. Zabbix 3.0中提供的监控方式包括: Active agents Passive agents Extending agents Simp

Zabbix 3.0 生产案例 [四]

Zabbix 3.0 生产案例 [四] zabbix 时间:2016年9月22日 笔者QQ:381493251 Abcdocker交流群:454666672 如果遇到什么问题可以进群询问,我们是一个乐于帮助的集体! Zabbix 生产案例实战 一.项目规划 1.主机分组: 交换机 Nginx Tomcat MySQL 2.监控对象识别: 1.使用SNMP监控交换机 2.使用IPMI监控服务器硬件 3.使用Agent监控服务器 4.使用JMX监控Java应用 5.监控MySQL 6.监控Web状态

Oracle 数据库日常巡检

Oracle 数据库日常巡检 阅读目录 1. 检查数据库基本状况 2. 检查Oracle相关资源的使用情况 3. 检查Oracle数据库备份结果 4. 检查Oracle数据库性能 5. 检查数据库cpu.I/O.内存性能 6. 检查数据库安全性 7. 其他检查 回到顶部 1. 检查数据库基本状况 包含:检查Oracle实例状态,检查Oracle服务进程,检查Oracle监听进程,共三个部分. 1.1. 检查Oracle实例状态 select instance_name,host_name,sta

Zabbix 3.0 部署监控 [三]

Zabbix 3.0 部署监控 [三] zabbix 时间:2016年9月22日 笔者QQ:381493251 Abcdocker交流群:454666672 如果遇到什么问题可以进群询问,我们是一个乐于帮助的集体! Dashboard首页信息介绍 Status of Zabbix(Zabbix状态)介绍 Zabbix server is running                           #Zabbix服务器是否运行 Number of hosts (enabled/disabl

Zabbix 3.0 基础介绍 [一]

Zabbix 3.0 基础介绍 [一] zabbix 一.Zabbix介绍 zabbix 简介   Zabbix 是一个高度集成的网络监控解决方案,可以提供企业级的开源分布式监控解决方案,由一个国外的团队持续维护更新,软件可以自由下载使用,运作团队靠提供收费的技术支持赢利   zabbix是一个基于Web界面的,提供分布式系统监控以及网络监视功能的企业级的开源解决方案.   zabbix能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题

渗透测试02------windows日常巡检,应急响应等总结

一:日常巡检: 1.日志: a:事件查看器中,查看日志.应用程序,安全性,系统,观察是否被入侵. b:查看历史记录在c:\DOCUMENTS AND SETTINGS c:修改后门账号密码.进去查看历史浏览网页等一些东西 2.进程,端口,网络连接,服务: a:tasklisk 查看进程 b:netstatt -an 查看端口连接状态 c:使用一些安全工具,分析后台木马等 d:在服务中,查看是否插入了系统进程.. 4.cpu,内存,流量: 可能用服务器发动DDOS攻击,或者扫描其它服务器,导致cp