iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >zabbix 自动发现 python
  • 143
分享到

zabbix 自动发现 python

发现zabbixpython 2023-01-31 05:01:55 143人浏览 薄情痞子

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

摘要

disk name#/usr/bin/python #This script is used to discovery disk on the server import subprocess import JSON args="cat /


  1. disk name

#/usr/bin/python
#This script is used to discovery disk on the server
import subprocess
import JSON
args="cat /proc/diskstats |grep -E '\ssd[a-z]\s|\sxvd[a-z]\s|\svd[a-z]\s'|awk '{print $3}'|sort|uniq 2>/dev/null"
t=subprocess.Popen(args,shell=True,stdout=subprocess.PIPE).communicate()[0]
 
disks=[]
 
for disk in t.split('\n'):
    if len(disk) != 0:
       disks.append({'{#DISK_NAME}':disk})
print json.dumps({'data':disks},indent=4,separators=(',',':'))


2.监控网站访问时间

#!/usr/bin/env Python
# -*- coding: utf-8 -*-
import os,sys
import time
import sys
import pycurl
import json
urllist=['a.com','b.com','c.com','d.com','e.com']
class Test:
    def __init__(self):
        self.contents = ''
    def callback(self,curl):
        self.contents = self.contents + curl
def test_gzip(url):
    data = {}
    t = Test()
    c = pycurl.Curl()
    c.setopt(pycurl.WRITEFUNCTioN,t.callback)
    c.setopt(pycurl.ENCODING, 'gzip')
    c.setopt(pycurl.URL,url)
    c.perfORM()
    data['Http_CODE']=c.getinfo(c.HTTP_CODE)
    data['NAMELOOKUP_TIME']=(c.getinfo(c.NAMELOOKUP_TIME))*1000
    data['CONNECT_TIME']=(c.getinfo(c.CONNECT_TIME))*1000
    data['PRETRANSFER_TIME']=(c.getinfo(c.PRETRANSFER_TIME))*1000
    data['SPEED_DOWNLOAD']=c.getinfo(c.SPEED_DOWNLOAD)
    return data
def WEB_name_discovery():
    web_list=[]
    web_dict={"data":None}
    for url in urllist:
        url_dict={}
        url_dict["{#NAME}"]=url
        web_list.append(url_dict)
    web_dict["data"]=web_list
    jsonStr = json.dumps(web_dict, sort_keys=True, indent=4)
    return jsonStr
def get_web_status():
    data=test_gzip(sys.argv[2])
    return data[sys.argv[3]]
if __name__ == '__main__':
    if sys.argv[1] == "web_name_discovery":
        print web_name_discovery()
    elif sys.argv[1] == "get_web_status":
        print get_web_status()


3.输出指定目录Tomcat名称

#/usr/bin/python
#This script is used to discovery disk on the server
import subprocess
import os
import Socket
import json
import glob
 
java_names_file='java_names.txt'
javas=[]
if os.path.isfile(java_names_file):
#   print 'java_names_file exists!'
#####
##### here should use % (java_names_file) instead of using the python variable java_names_file directly inside the '''   ''' quotes
#####
 
   args='''awk -F':' '{print $1':'$2}' %s'''  % (java_names_file)
   t=subprocess.Popen(args,shell=True,stdout=subprocess.PIPE).communicate()[0]
elif glob.glob('/xx/xx/*_tomcat') and not os.path.isdir('/opt/logs/logstash') and not os.path.isdir('/opt/app/elasticsearch/config'):
   t=subprocess.Popen('cd /xx/xx && ls *_tomcat|grep _tomcat',shell=True,stdout=subprocess.PIPE)
  
for java in t.stdout.readlines():
    if len(java) != 0:
       javas.append({'{#JAVA_NAME}':java.strip('\n').strip(':')})
print json.dumps({'data':javas},indent=4,separators=(',',':'))


4.port

#!/usr/bin/python
#coding=utf-8
import commands
import os,sys   
##########返回命令执行结果
def getComStr(comand):
    try:
        stat, proStr = commands.getstatusoutput(comand)
    except:
        print "command %s execute failed, exit" % comand
    #将字符串转化成列表
    #proList = proStr.split("\n")
    return proStr
   
##########获取系统服务名称和监听端口
def filterList():
    tmpStr = getComStr("netstat -tpln")
    tmpList = tmpStr.split("\n")
    del tmpList[0:2]
    newList = []
    for i in tmpList:
        val = i.split()
        del val[0:3]
        del val[1:3]
        #提取端口号
        valTmp = val[0].split(":")
        val[0] = valTmp[1]
        #提取服务名称
        valTmp = val[1].split("/")
        val[1] = valTmp[-1]
        if val[1] != '-' and val not in newList:
            newList.append(val)
    return newList
   
def main():
    netInfo = filterList()
    #格式化成适合zabbix lld的json数据
    json_data = "{\n" + "\t" + '"data":[' + "\n"
    #print netInfo
    for net in netInfo:
        if net != netInfo[-1]:
           json_data = json_data + "\t\t" + "{" + "\n" + "\t\t\t" + '"{#PPORT}":"' + str(net[0]) + "\",\n" + "\t\t\t" + '"{#PNAME}":"' + str(net[1]) + "\"},\n"
        else:
           json_data = json_data + "\t\t" + "{" + "\n" + "\t\t\t" + '"{#PPORT}":"' + str(net[0]) + "\",\n" + "\t\t\t" + '"{#PNAME}":"' + str(net[1]) + "\"}]}"
    print json_data
   
if __name__ == "__main__":
    main()
[root@xx ~]# /usr/bin/python  /usr/local/zabbix/bin/ports.py
{
	"data":[
		{
			"{#PPORT}":"10050",
			"{#PNAME}":"zabbix_agentd"},
		{
			"{#PPORT}":"10051",
			"{#PNAME}":"zabbix_server"},
		{
			"{#PPORT}":"9000",
			"{#PNAME}":"PHP-fpm"},
		{
			"{#PPORT}":"27017",
			"{#PNAME}":"monGod"},
		{
			"{#PPORT}":"3306",
			"{#PNAME}":"Mysqld"},
		{
			"{#PPORT}":"6379",
			"{#PNAME}":"Redis-server"},
		{
			"{#PPORT}":"111",
			"{#PNAME}":"rpcbind"},
		{
			"{#PPORT}":"80",
			"{#PNAME}":"Nginx"},
		{
			"{#PPORT}":"8080",
			"{#PNAME}":"java"},
		{
			"{#PPORT}":"43088",
			"{#PNAME}":"rpc.statd"},
		{
			"{#PPORT}":"22",
			"{#PNAME}":"sshd"},
		{
			"{#PPORT}":"631",
			"{#PNAME}":"cupsd"},
		{
			"{#PPORT}":"3000",
			"{#PNAME}":"grafana-serve"},
		{
			"{#PPORT}":"4505",
			"{#PNAME}":"python2.6"},
		{
			"{#PPORT}":"25",
			"{#PNAME}":"master"},
		{
			"{#PPORT}":"4506",
			"{#PNAME}":"python2.6"},
		{
			"{#PPORT}":"20474",
			"{#PNAME}":"java"}]}



5.监控api返回的值

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import subprocess
import json
args = '''awk -F' ' '{print $1}' /usr/local/zabbix/scripts/warn.txt|grep -v "#"'''
t = subprocess.Popen(args, shell=True, stdout=subprocess.PIPE).communicate()[0]
lwarns = []

for mongo in t.split('\n'):
    if len(mongo) != 0:
        lwarns.append({'{#WARN_HOST}': mongo})
print json.dumps({'data': lwarns}, indent=4, separators=(',', ':'))

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import urllib2,sys
import json
if len(sys.argv) == 2:
    argv1 = sys.argv[1]
def http_get():
    url = argv1  # 页面的地址
    response = urllib2.urlopen(url)  # 调用urllib2向服务器发送get请求
    return response.read()  # 获取服务器返回的页面信息
ret = http_get()
retj=json.loads(ret)
if retj['action'] == "NONE":
    print 0
elif retj['action'] == "DEBUG":
    print 0
else:
    print 1


6.tcp 应用端口

[root@xx zabbix_agentd.conf.d]# cat tcp_services.conf 
UserParameter=tcp_services, /usr/bin/python /usr/local/zabbix/bin/tcp_services.py

#/usr/bin/python
#This script is used to discovery disk on the server
import subprocess
import os
import socket
import json
import glob
 
java_names_file='java_names.txt'
javas=[]
if os.path.isfile(java_names_file):
#   print 'java_names_file exists!'
#####
##### here should use % (java_names_file) instead of using the python variable java_names_file directly inside the '''   ''' quotes
#####
 
   args='''awk -F':' '{print $1':'$2}' %s'''  % (java_names_file)
   t=subprocess.Popen(args,shell=True,stdout=subprocess.PIPE).communicate()[0]
elif glob.glob('/xx/xx/*_tomcat') and not os.path.isdir('/opt/logs/logstash') and not os.path.isdir('/opt/app/elasticsearch/config'):
   t=subprocess.Popen('cd /xx/xx && ls *|grep _tomcat',shell=True,stdout=subprocess.PIPE)
  
for java in t.stdout.readlines():
    if len(java) != 0:
       S=java.strip('\n').strip(':')
       args="cat /xx/xx/%s/conf/server.xml|grep port|sed -n '2p'|awk '{print $2}'|awk -F '=' '{print $2}'|tr -d '\"'" % S
       port=subprocess.Popen(args,shell=True,stdout=subprocess.PIPE).communicate()[0].strip('\n')
       STR1={'{#PROCNAME}':S}
       STR2={'{#PORT}':port}
       STR3=dict(STR1, **STR2)
       javas.append(STR3)
print json.dumps({'data':javas},indent=4,separators=(',',':'))

[root@xx zabbix_agentd.conf.d]# /usr/bin/python /usr/local/zabbix/bin/tcp_services.py
{
    "data":[
        {
            "{#PORT}":"80",
            "{#PROCNAME}":"dubbo_tomcat"
        }
    ]
}




--结束END--

本文标题: zabbix 自动发现 python

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

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

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

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

下载Word文档
猜你喜欢
  • 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的自动发现功能
    Zabbix的自动发现功能是指Zabbix监控系统可以自动识别和添加新的网络设备、服务器、虚拟机、应用程序等监控对象,无需手动配置。...
    99+
    2024-03-11
    Zabbix
  • Python自动化导出zabbix数据并发邮件脚本
    import smtplibfrom email.mime.multipart import MIMEMultipartfrom e...
    99+
    2023-08-17
    Python
  • Python怎么自动化导出zabbix数据
    要自动化导出Zabbix数据,你可以使用Zabbix API和Python编程语言进行操作。以下是一个基本的示例,用于导出Zabbi...
    99+
    2023-08-18
    python
  • 解析Zabbix 5.0磁盘自动发现和读写监控的问题
    自动发现磁盘 配置键值 注意:此键值仅支持Linux平台。 此发现键值返回两个宏 : {#DEVNAME} :设备名 {#DEVTYPE} :设备类型 例如: ...
    99+
    2024-04-02
  • Zabbix 5.0磁盘自动发现和读写监控的示例分析
    这篇文章给大家分享的是有关Zabbix 5.0磁盘自动发现和读写监控的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。自动发现磁盘配置键值注意:此键值仅支持Linux平台。此发现键值返回两个宏 :{#DEV...
    99+
    2023-06-15
  • Python实现自动化发送邮件
    目录开门见山自动化发送邮件SMTP 介绍开启SMTP服务邮件的属性配置发送文本邮件发送HTML邮件发送附件邮件后记总结开门见山 自动化测试过程中,一般测试结果都会以邮件的形式发送给相...
    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如何实现自动发送邮件
    目录自动发送邮件使用邮箱的第一步一份邮件的组成正式发送一份邮件批量发送邮件自动发送邮件 我们把报表做出来以后一般都是需要发给别人查看,对于一些每天需要发的报表或者是需要一次发送多份的...
    99+
    2024-04-02
  • 用Python实现Zabbix-API
        做运维的朋友应该知道,公司IDC机房经常有上架、下架、报修和报废的服务器。如果服务器数量很多的时候很容易造成监控遗漏。       大的互联网公司把监控系统和CMDB(资产管理系统|配置管理数据库系统)集成在一起,当上架一台新机...
    99+
    2023-01-30
    Python Zabbix API
  • Python如何实现自动化邮件发送
    今天就跟大家聊聊有关Python如何实现自动化邮件发送,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。使用Python实现自动化邮件发送,可以让你摆脱繁琐的重复性业务,可以节省非常多的...
    99+
    2023-06-26
  • Python怎么实现自动化发送邮件
    这期内容当中小编将会给大家带来有关Python怎么实现自动化发送邮件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向对象的脚...
    99+
    2023-06-26
  • 如何用Python实现自动发送微博
    目录一、软件准备1.安装Python 环境2.安装selenium库二、实现方法2.1 使用 Selenium 工具自动化模拟浏览器,当前重点是了解对元素的定位2.2 对元素进行的操...
    99+
    2024-04-02
  • zabbix如何监控页面自动截图
    这篇文章将为大家详细讲解有关zabbix如何监控页面自动截图,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。#coding:utf-8import os,sys,timeimport x...
    99+
    2023-06-02
  • python怎么实现微信自动发送信息
    要实现微信自动发送信息,可以使用Python的第三方库itchat来实现。itchat是一个开源的微信个人号接口,可以通过Pytho...
    99+
    2023-08-31
    python
  • Python实战之自动发送邮件的实现
    目录1.开启SMTP服务2.准备3.编写脚本4.小例子自动发送邮件能应用于许多场景,比如我想要知道股票策略中的股票池是否有实时的更新,这时候如果再拉一遍数据,跑一遍脚本,实在是太浪费...
    99+
    2024-04-02
  • Python实现直播弹幕自动发送功能
    目录前言发送请求循环发弹幕最后看看效果怎么样前言 今天制作的这一款能在B站能指定直播间、自动发弹幕的功能的脚本,因为没做那么多的功能,所以代码很简单,适合刚入门的同学学习 先打开一个...
    99+
    2024-04-02
  • python实现半自动化发送微信信息
    本文实例为大家分享了python半自动化发送微信信息的具体代码,供大家参考,具体内容如下 相关第三方库 1.pyautogui 自动操作鼠标、键盘的第三方库 2.pyperclip...
    99+
    2024-04-02
  • Python如何实现报表自动化和自动发送到目的邮箱
    本文小编为大家详细介绍“Python如何实现报表自动化和自动发送到目的邮箱”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python如何实现报表自动化和自动发送到目的邮箱”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知...
    99+
    2023-07-06
  • 通过python为ZABBIX发告警邮件
    最近部署ZABBIX的邮件告警时,用刚学的python来写告警邮件脚本。python代码如下 #!/usr/bin/python #coding:utf-8 import smtplib from email.mime.text impor...
    99+
    2023-01-31
    邮件 python ZABBIX
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作