引言

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

  在监控生产环境的服务的时候,通常需要对多个端口进行监控,如果我们手动一个一个的添加,这将是一件很麻烦的事情,为了减少这样的情况,我们采用批量添加监控端口的方法,这是

非常常见的需求,zabbix也是支持这种方式的,需要使用zabbix的Discovery功能来实现,下面小编就给大家分享一下批量添加对口的占用。

  使用Zabbix监控如何监控服务器端口状态,大概的流程:zabbix监控服务自带端口监控的监控项,所以需要我们自己手动定义所监控的item,客户端获取的端口列表通过agent传送到服务端,

只需在服务端进行端口监控模板配置,然后自定义监控图形,添加监控项即可!

   下面就来给大家分享一下批量添加端口的方法!

第一:自动扫描端口并监控报警

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

1.编写脚本扫描端口

vim check_port.py

#!/usr/bin/env python

import os

import json

portlist = []

new_port_list = []

port_dict = {"data":None}

cmd = '''netstat -tnlp|egrep -i "$1"|awk {'print $4'}|'''

cmd += '''awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort -n| uniq 2>/dev/null'''

auto_localport = os.popen(cmd).readlines()

for ports in auto_localport:

new_port = ports.strip()

portlist.append(new_port)

for port in portlist:

pdict = {}

pdict["{#TCP_PORT}"] = port

new_port_list.append(pdict)

port_dict["data"] = new_port_list

jsonStr = json.dumps(port_dict,sort_keys=True,indent=4)

#python3

#print(jsonStr)

#python2

print jsonStr

脚本的作用就是从被监控的服务器上面采集数据,并且转换为特定的字典格式,这种格式是zabbix可以识别的一种数据字典格式,使用python来编写相对shell来说更加便捷。

将脚本放在客户端 /usr/lib/zabbix/alertscripts 路径下面

2.修改被监控端的zabbix_agent.conf配置文件

UnsafeUserParameters=1

UserParameter=tcpportlisten,/usr/lib/zabbix/alertscripts/check_port.sh

重启客户端服务

3.服务端测试

执行命令:zabbix_get -s 192.168.92.9 -p 10050 -k tcpportlisten

出现上面格式的数据,说明脚本编写成功!!!

第二:页面配置

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

1.添加模板

2.添加自动发现规则

在上新创建的模板中点击-->自动发现规则-->然后选择创建发现规则

说明:上面的key 一定要和配置文件中的key 保持一致。就是我们在zabbix_agent.conf文件中添加的两行代码中的第二行中添加的参数key

3.创建监控项原型

上面中的键值 中的 #TCP_PORT} 和我们的脚本 check_port.sh 中的参数一致

4.创建触发器类型

添加按钮进入-->选择原型

注意这里的表态示count(#3,0,eq) > 1表示最近3次的返回值为0,这个条件触发一次则报警.

配置到这我们就完成了,zabbix自动扫描并监控的功能.

第三:批量添加指定端口

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

有时候我们不需要监控自动扫描出来的所有的端口,这些端口需要我们指定,这个需求也是比较常见的,有了上面的基础,实现这个东西其实是比较简单,其实仔细看看脚本就能实现。

要实现这个功能我们只需要,将脚本替换成下面内容即可:

#!/usr/bin/env python

import json

port_list = ["80",

     "10050",

     "3306",

     "22",

     "8080"]

new_port = []

port_dict = {"data":None}

for port in port_list:

pdict = {}

pdict["{#TCP_PORT}"] = port

new_port.append(pdict)

port_dict["data"] = new_port

jsonStr = json.dumps(port_dict,sort_keys=True,indent=4)

#python3

#print(jsonStr)

#python2

print jsonStr

我们只需要在port_list中添加想要监控的端口号即可!注意格式,以逗号隔开!

Zabbix如何实现批量监控端口状态的更多相关文章

  1. shell批量监控网站状态码

    shell批量监控网站状态码脚本,使用curl很慢.等我学完其他方式,在来更新. #!/bin/bash #GuoYabin yuming=`/bin/cat yuming.txt` for i in ...

  2. Zabbix 监控端口状态并邮件报警

    Zabbix监控端口 前提 zabbix安装 zabbix邮件报警 添加监控项 添加触发器 添加动作 设置完成后,在配置过报警媒介后也就是 邮件报警  后就完成了.

  3. zabbix问题之snmp监控端口流量断图

    zabbix之snmp监控端口断图问题 在使用zabbix的snmp方式的监控端口流量时,某一个图总是断断续续的(被监控设备有较大的端口流量),经常会出现几分钟内没有图像的问题. 端口流量断图原因: ...

  4. telnet批量检测端口状态(linux)

    批量检测端口通信: 准备文件树状图 telnet.sh 脚本内容如下: 文件说明 telnet_alive.txt  : 活动的端口 telnet_die.txt    :  离线的端口 telnet ...

  5. 辉哥用的这种方法实现ZABBIX的MYSQL批量监控

    不错的.集中和分布式,总是一对要解决的问题.应该可以再想更好的策略~~ 一.方案需求及思路 因跑MySQL服务的服务器比较多,并且每台服务器可能会运行多个不同端口的数据库,如果单独手动一台一台去修改a ...

  6. Zabbix 监控 Nginx 状态

    简介: 如何使用 Zabbix 监控 Nginx 状态 ? 1.获取 Nginx 状态( HTTP Stub Status ) shell > /usr/local/nginx/sbin/ngi ...

  7. Zabbix Agent active批量调整客户端为主动模式监控

    Zabbix Agent active批量调整客户端为主动模式监控 zabbix_server端当主机数量过多的时候,由Server端去收集数据,Zabbix会出现严重的性能问题,主要表现如下: 1. ...

  8. Zabbix 监控 Mysql 状态

    简介: 如何使用 Zabbix 来监控 Mysql 状态 ? Zabbix 有自带监控 Mysql 的模板,但是却不能直接使用.. 需要我们根据模板提供的 Key 自己写脚本获取数据 1.查看都有哪些 ...

  9. zabbix监控端口

    使用zabbix自带key监控进程与端口 每个公司都有自己的程序,自己的进程名与端口监听,对于nagios来说,这些都经常需要自己去写插件,但是zabbix不需要,它自己就有监控进程与端口的key. ...

随机推荐

  1. Linux 学习记录 二 (文件的打包压缩).

     前言:本文参考<鸟哥的Linux 私房菜>,如有说的不对的地方,还请指正!谢谢!  环境:Centos 6.4    和window不同,在Linux压缩文件需要注意的是,压缩后的文件会 ...

  2. calling c++ from golang with swig--windows dll (三)

    calling c++ from golang with swig--windows dll 三 使用动态链接库(DLL)主要有两种方式:一种通过链接导入库,在代码中直接调用DLL中的函数:另一种借助 ...

  3. c语言中的转义序列

    c中的输出函数printf()可以带以下的转义序列,不同的转义序列会得到不同的结果. 1.\a:警报 2.\b:退格(光标回退一格)3.\f:换页4.\n:换行(光标去到下一行的起始处)5.\r:回车 ...

  4. Q:javax.comm 2.0 windows下Eclipse的配置

    @转自http://blog.csdn.net/zhuanghe_xing/article/details/7523744处 要在Windows下,对计算机的串口或并口等进行编程,可以选择使用Java ...

  5. 2、公司部门的组成 - CEO之公司管理经验谈

    今天讲讲公司部门的组成.公司部门一般是根据公司业务来进行划分的,IT企业和其它企业的部门划分有一定的区别.企业部门的划分还是比较重要的,部门主要明确各部门所具有的自己的职责.这里对IT企业的部门做了一 ...

  6. 发短信utils

    package cn.itcast.bos.utils;   import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; ...

  7. ubuntu环境下python虚拟环境的安装

    一. 虚拟环境搭建 在开发中安装模块的方法: pip install 模块名称 之前我们安装模块都是直接在物理环境下安装,这种安装方法,后面一次安装的会覆盖掉前面一次安装的.那如果一台机器上面开发多个 ...

  8. CSS开发规范

    虽然很久之前整理过一份简单的CSS规范,但是当时写的也不是很全面,有些细节也没有照顾到.记录一份较详细的版本,以备不时之需. 命名规范 [强制] class一律使用小写字母+下划线格式命名 例: cl ...

  9. 动态求区间K大值(权值线段树)

    我们知道我们可以通过主席树来维护静态区间第K大值.我们又知道主席树满足可加性,所以我们可以用树状数组来维护主席树,树状数组的每一个节点都可以开一颗主席树,然后一起做. 我们注意到树状数组的每一棵树都和 ...

  10. APP网络测试要点和弱网模拟

    当前APP网络环境比较复杂,网络制式有2G.3G.4G网络,还有越来越多的公共Wi-Fi.不同的网络环境和网络制式的差异,都会对用户使用app造成一定影响.另外,当前app使用场景多变,如进地铁.上公 ...