iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >用Python实现Zabbix-API
  • 161
分享到

用Python实现Zabbix-API

PythonZabbixAPI 2023-01-30 22:01:16 161人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

    做运维的朋友应该知道,公司IDC机房经常有上架、下架、报修和报废的服务器。如果服务器数量很多的时候很容易造成监控遗漏。       大的互联网公司把监控系统和CMDB(资产管理系统|配置管理数据库系统)集成在一起,当上架一台新机

 

  做运维的朋友应该知道,公司IDC机房经常有上架、下架、报修和报废的服务器。如果服务器数量很多的时候很容易造成监控遗漏。
       大的互联网公司把监控系统和CMDB(资产管理系统|配置管理数据库系统)集成在一起,当上架一台新机器的时候CMDB里面会记录相关的信息,Zabbix根据CMDB里面信息自动Link相关的模块,添加|删除监控。很多小的公司没有资产管理系统,但作为监控的负责人应该每天知道上架了哪些新的机器,确保能添加到Zabbix监控里面。
      首先给大家说一下脚本思路:
1)通过Nmap工具扫描网段,扫描出已经使用的IP地址。
2)通过Nmap检测已经扫描IP的3389或者22端口是否开放,可以判断那些事windows机器,那些是linux机器。
3)Linux下面通过ssh + hostname命令找出Linux主机名。
4)Windows下面通过nmblookup -A 命令找出Windows主机名。
5)用python脚本读扫描结果文件,把主机名写到列表里面。
6)用Zabbix Python api 调用已经监控的主机名,写到列表里面。
7)两个列表取交集,用for循环判断哪些主机名没有监控。
8)发邮件通知监控负责人。

    下面我分享一下我写的Python写的脚本,其中scan_Machine.sh是我调用的用shell写的关于Nmap扫描的脚本,scan_hostname.log是Nmap扫描的结果,里面内容是IP 主机名。

#!/usr/bin/env python#create by:sfzhang 20140820#coding=utf-8import os,sysimport JSONimport urllib2import datetime,timefrom urllib2 import URLError
nmap_cmd = "/shell/machine/scan_machine.sh"def runCmd(command):
    global mail_cmd
    mail_cmd = '''mail -s "Report on not monitor Hosts of Zabbix" shifeng_zhang88 < /shell/machine/result/result.txt'''
    return os.system(command)runCmd(nmap_cmd)def nmap_host():
    hostiplst = []
    hostnamelst = []
    f = file('/shell/machine/result/scan_hostname.log')
    for line in f.readlines():
        hostip = line.split()[0]
        hostname = line.split()[1]
        hostiplst.append(hostip)
        hostnamelst.append(hostname)
    hostnamelst.sort()
    #print hostiplst
    return hostnamelst
    f.close()def zabbix_host():
    zabbixhostlst= []
    #based url and required header
    url = "Http://192.168.161.128/api_jsonrpc.PHP"
    header = {"Content-Type": "application/json"}
    #request json
    data = json.dumps(
    {  
    "jsonrpc": "2.0",
      "method": "host.get",
      "params":{
          "output":["hostid","name"],
         "filter":{"host":""}
    },    
    #auth id
    "auth":"Zabbix Auth ID",
    "id": 1,
    })
    #create request object
    request = urllib2.Request(url,data)
    for key in header:    
    request.add_header(key,header[key])
    #get host list
    try:
    result = urllib2.urlopen(request)
    except URLError as e:
    print "The server could not fulfill the request.",e.reason    else:
        reponse = json.loads(result.read())
    result.close()
    #print "Number of Hosts:",len(reponse['result'])
    for host in reponse['result']:
            #print "Host ID:",host['hostid'],"Host Name:",host['name']
            zbxhosts=host['name']
            zabbixhostlst.append(zbxhosts)
        zabbixhostlst.sort()
        return zabbixhostlst    def main():
    nmaphostlst = nmap_host()  
    zbxhostlst = zabbix_host()  
    diff = list(set(nmaphostlst) ^ set(zbxhostlst))  
    content = "\n"
    nomonitorlst = [] 
    if len(diff) != 0:  
        for host in diff:  
            if host in nmaphostlst:  
                nomonitorlst.append(host)
                
    else:  
        sys.exit()
    #print zbxhostlst
    string = '\n'.join(nomonitorlst)
    f = file('/shell/machine/result/result.txt','w')
    f.write(string)
    f.flush()
    f.close()
    runCmd(mail_cmd)if __name__ == "__main__":  
    main()

 

   把脚本添加到crontab,每台会收到关于那些主机没有添加监控的信息。

 

 总结

     1)Zabbix API相关信息可以查看官方详细资料,看不懂英文的可以参考下面这篇文档。http://paperplane.ruhoh.com/zabbix/intro-to-zabbix-api/

     2)通过该脚本可以知道那些主机没有添加监控,希望对大家有帮助,如果有更好的解决方法欢迎多多交流。     

-----------------------------------------------

推荐阅读:

kafka实现消息推送

大数据spark与StORM技术选型

华为Java编程军规,每季度代码验收标准

你可以不懂但一定要知道的代码审查 Code Review

6 个重构方法可帮你提升 80% 的代码质量

--结束END--

本文标题: 用Python实现Zabbix-API

本文链接: https://www.lsjlt.com/news/179614.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 用Python实现Zabbix-API
        做运维的朋友应该知道,公司IDC机房经常有上架、下架、报修和报废的服务器。如果服务器数量很多的时候很容易造成监控遗漏。       大的互联网公司把监控系统和CMDB(资产管理系统|配置管理数据库系统)集成在一起,当上架一台新机...
    99+
    2023-01-30
    Python Zabbix API
  • python利用zabbix API添加
    首先说一下坑的地方就是python2和python3的模块改变问题,当然精通python的可以略过。这个在网上百度一下吧,第二个是导入xlsx文件的时候需要xlrd模块,而这个模块最好跟着我下面的方法走,那个python2 就可以用我下边的...
    99+
    2023-01-31
    python zabbix API
  • zabbix实现Python邮件报警
    zabbix是个非常强大的监控工具,可以监控linux和windows的服务器数据,也可以通过自定义key来扩展默认的监控项,但是自带的邮件报警提供的信息却不太友善。本文想通过自定脚本的方式,实现在报警邮件的同时发送对应的图像和url连接。...
    99+
    2023-01-31
    邮件 zabbix Python
  • Zabbix api的使用方法(pyth
    Zabbix API简介时间2013-12-21作者 itnihao邮箱 itnihao@qq.com博客 http://www.itnihao.com如需引用,请注明以上信息,谢谢合作       Zabbix API具有重要的功能,为第...
    99+
    2023-01-31
    使用方法 Zabbix api
  • Python实现Restful API
    Python实现Restful API 最近写了一个网络验证登录的爬虫,需要发布为Rest服务,然后发现Flask是一个很好的Web框架,使用Python语言实现。 1. 安装flask pip install flask 2....
    99+
    2023-01-31
    Python Restful API
  • 原创:用zabbix api批量添加we
    代码如下,进攻大家参考,转载的话说明来源前面5个变量自行补齐, #!/usr/local/python3.51/bin/python3 # Author:         Anxinhai@wondersgroup # Mail:     ...
    99+
    2023-01-31
    批量 zabbix api
  • zabbix 自动发现 python
    disk name#/usr/bin/python #This script is used to discovery disk on the server import subprocess import json args="cat /...
    99+
    2023-01-31
    发现 zabbix python
  • 【Zabbix】教你搭建elasticsearch与实现zabbix对接
    一.  搭建elasticsearch      上传jdk-8u181-linux-x64.tar.gz和elasticsearch-6.1.4.tar.gz文件到系统任意目录,...
    99+
    2023-06-05
  • 如何用 Python 实现实时 API 并发?
    在当今互联网时代,API 已经成为了各种应用程序之间通信的重要方式,而 API 并发则是保证应用程序高效运行的重要环节。本文将介绍如何用 Python 实现实时 API 并发,以提高应用程序的效率。 一、Python 实现实时 API 并发...
    99+
    2023-09-12
    实时 api 并发
  • Python实现简单的API
    代码实现 # coding:utf-8 import json from urlparse import parse_qs from wsgiref.simple_server import make_server # 定...
    99+
    2023-01-31
    简单 Python API
  • python如何实现API的调用详解
    目录前言API数据接口API的调用和数据接口的调用调用的基础-请求方法几种常见API调用实例百度AI相关API百度地图API有道APIuuidsign常用API分享总结前言 在日常工...
    99+
    2024-04-02
  • zabbix用python发送邮件
    !/usr/bin/pythoncoding: utf-8import smtplibimport sysfrom email.mime.text import MIMEText_user = "12345678@qq.com"_pwd ...
    99+
    2023-01-31
    发送邮件 zabbix python
  • Python调用API接口实现人脸识别
    目录准备工作代码流程在开始之前,先问问大家: 什么是百度Aip模块? 百度AI平台提供了很多的API接口供开发者快速的调用运用在项目中本文写的是使用百度AI的**在线接口SDK模块(...
    99+
    2023-02-13
    Python调用API接口 Python 人脸识别
  • Python调用ChatGPT的API实现文章生成
    目录实操目标实操内容具体操作成品展示实操目标 最近ChatGPT大火,在3.5版本后开放了接口API,所以很多人开始进行实操,这里我就用python来为大家实现一下,如何调用API并...
    99+
    2023-03-22
    Python ChatGPT生成文章 Python 生成文章 Python ChatGPT
  • Python 调用GPT-3 API实现过程详解
    目录用 Python 调用 GPT-3 API安装 GPT-3特征工程模型选择生成合成数据公共数据集的询问提示机器学习问题整理询问研究项目用 Python 调用 GPT-3 API ...
    99+
    2023-02-16
    Python调用GPT-3 API Python调用GPT
  • 如何使用Python API实现数组同步?
    随着Python在数据科学和机器学习领域的广泛应用,对于数组同步的需求也越来越高。在实际应用中,我们经常需要将两个或多个数组进行同步,以便进行进一步的数据处理和分析。本文将介绍如何使用Python API实现数组同步。 一、数组同步的概念 ...
    99+
    2023-08-17
    api 数组 同步
  • 如何使用Python API实现实时数组同步?
    随着数据科学和人工智能的快速发展,实时数组同步成为了一个热门话题。Python是一种非常流行的编程语言,为了实现实时数组同步,我们可以使用Python API来完成任务。 在本文中,我们将介绍如何使用Python API来实现实时数组同步...
    99+
    2023-08-17
    api 数组 同步
  • 想要实现实时 API 并发?用 Python 可以吗?
    在当今互联网时代,API 作为连接不同服务的桥梁,具有非常重要的作用。而在实际的应用场景中,API 的并发请求处理能力也成为了一个重要的考量因素。本文将介绍如何使用 Python 实现实时 API 并发处理,并给出相应的示例代码。 首先,...
    99+
    2023-09-12
    实时 api 并发
  • Python实现简单的API接口
    代码实现# coding:utf-8 import json from urlparse import parse_qs from wsgiref.simple_server import make_server # 定义函数,参数...
    99+
    2023-01-31
    接口 简单 Python
  • zabbix配置nginx监控的实现
    目录案例:zabbix 配置 nginx 监控1. 修改配置文件2. 编写 nginx 监控脚本3. 修改 zabbix 配置文件4. 服务端验证5. 添加模块6. 创建应用集7. ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作