zabbix监控nginx 端口篇

简介:

wKiom1kBoo7SqRGNAACDJwrhX-c762.png

监听端口

1.cat /usr/local/zabbix/bin/ports.py

#!/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()


2.cat ports_discovery.conf 

UserParameter=ports.discovery,sudo /usr/bin/python  /usr/local/zabbix/bin/ports.py


3.模板 

All TCP Ports discovery

ports.discovery

Listen Port $1

net.tcp.listen[{#PPORT}]

{Ports Monitoring:net.tcp.listen[{#PPORT}].last()}=0


wKioL1kBosKzwrNwAAArCC-sRgY096.png


如果是监听tomcat

cat /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('/opt/xx/*_tomcat') and not os.path.isdir('/opt/logs/logstash') and not os.path.isdir('/opt/app/elasticsearch/config'):

   t=subprocess.Popen('cd /opt/xx && ls *|grep xx_tomcat',shell=True,stdout=subprocess.PIPE)

  

for java in t.stdout.readlines():

    if len(java) != 0:

       S=java.strip('\n').strip(':')

       args="cat /opt/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=(',',':'))


监听tcp状态

cat /usr/local/zabbix/bin/tcp_status_ss.sh

#!/bin/bash 

#scripts for tcp status 

function SYNRECV { 

/usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'SYN-RECV' | awk '{print $2}'

function ESTAB { 

/usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'ESTAB' | awk '{print $2}'

function FINWAIT1 { 

/usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'FIN-WAIT-1' | awk '{print $2}'

function FINWAIT2 { 

/usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'FIN-WAIT-2' | awk '{print $2}'

function TIMEWAIT { 

/usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'TIME-WAIT' | awk '{print $2}'

function LASTACK { 

/usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'LAST-ACK' | awk '{print $2}'

function LISTEN { 

/usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'LISTEN' | awk '{print $2}'

$1


cat tcp_status_ss.conf 

UserParameter=tcp[*],/usr/local/zabbix/bin/tcp_status_ss.sh $1



本文转自 liqius 51CTO博客,原文链接:http://blog.51cto.com/szgb17/1909119,如需转载请自行联系原作者

相关文章
|
3月前
|
监控 应用服务中间件 nginx
基于Zabbix的SLA监控体系构建与实践
本文由Zabbix社区专家褚凤彬分享,详解SLA在Zabbix中的应用。通过Trigger与Service联动,构建Web应用的多层级监控体系,并介绍SLA计算规则、维护期处理及升级注意事项,助力企业精准掌控服务可用性。
416 36
|
9月前
|
运维 监控 安全
【案例分享】中国通号卡斯柯公司:ZABBIX如何破解轨道交通监控难题
本文根据2023上海峰会上朱林贤的演讲整理,聚焦中国通号卡斯柯公司如何借助Zabbix实现轨道交通信号系统的智能化管理。作为中外合资企业,卡斯柯通过统一平台整合设备监控,大幅降低成本并提升灵活性,成功应用于国内外项目。文章探讨了传统监控系统的痛点、研发维护经验及国产化与开源技术挑战,为行业转型提供了宝贵启示。未来,开放协作将是推动轨道交通智能化发展的关键。
453 8
|
11月前
|
存储 缓存 监控
|
12月前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
182 23
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
291 25
|
12月前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
363 22
|
监控 安全 前端开发
使用 Zabbix 监控堆外应用
使用 Zabbix 监控堆外应用
240 9
|
监控 数据可视化 Java
zabbix全面的监控能力
zabbix全面的监控能力
490 7
|
监控 Java Shell
监控堆外第三方监控工具Zabbix
监控堆外第三方监控工具Zabbix
330 5
|
SQL 监控 数据库
OceanBase社区版可以通过Zabbix监控
OceanBase社区版可以通过Zabbix监控
459 7

推荐镜像

更多