Zabbix如何实现批量监控端口状态
引言
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
在监控生产环境的服务的时候,通常需要对多个端口进行监控,如果我们手动一个一个的添加,这将是一件很麻烦的事情,为了减少这样的情况,我们采用批量添加监控端口的方法,这是
非常常见的需求,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如何实现批量监控端口状态的更多相关文章
- shell批量监控网站状态码
shell批量监控网站状态码脚本,使用curl很慢.等我学完其他方式,在来更新. #!/bin/bash #GuoYabin yuming=`/bin/cat yuming.txt` for i in ...
- Zabbix 监控端口状态并邮件报警
Zabbix监控端口 前提 zabbix安装 zabbix邮件报警 添加监控项 添加触发器 添加动作 设置完成后,在配置过报警媒介后也就是 邮件报警 后就完成了.
- zabbix问题之snmp监控端口流量断图
zabbix之snmp监控端口断图问题 在使用zabbix的snmp方式的监控端口流量时,某一个图总是断断续续的(被监控设备有较大的端口流量),经常会出现几分钟内没有图像的问题. 端口流量断图原因: ...
- telnet批量检测端口状态(linux)
批量检测端口通信: 准备文件树状图 telnet.sh 脚本内容如下: 文件说明 telnet_alive.txt : 活动的端口 telnet_die.txt : 离线的端口 telnet ...
- 辉哥用的这种方法实现ZABBIX的MYSQL批量监控
不错的.集中和分布式,总是一对要解决的问题.应该可以再想更好的策略~~ 一.方案需求及思路 因跑MySQL服务的服务器比较多,并且每台服务器可能会运行多个不同端口的数据库,如果单独手动一台一台去修改a ...
- Zabbix 监控 Nginx 状态
简介: 如何使用 Zabbix 监控 Nginx 状态 ? 1.获取 Nginx 状态( HTTP Stub Status ) shell > /usr/local/nginx/sbin/ngi ...
- Zabbix Agent active批量调整客户端为主动模式监控
Zabbix Agent active批量调整客户端为主动模式监控 zabbix_server端当主机数量过多的时候,由Server端去收集数据,Zabbix会出现严重的性能问题,主要表现如下: 1. ...
- Zabbix 监控 Mysql 状态
简介: 如何使用 Zabbix 来监控 Mysql 状态 ? Zabbix 有自带监控 Mysql 的模板,但是却不能直接使用.. 需要我们根据模板提供的 Key 自己写脚本获取数据 1.查看都有哪些 ...
- zabbix监控端口
使用zabbix自带key监控进程与端口 每个公司都有自己的程序,自己的进程名与端口监听,对于nagios来说,这些都经常需要自己去写插件,但是zabbix不需要,它自己就有监控进程与端口的key. ...
随机推荐
- 点击button1弹出form2,并在form2中点击button2来调用form1的方法
链接地址:http://www.sufeinet.com/thread-1273-1-1.html 1. private void button1_Click(object sender, ...
- 正则表达式 cheat sheet
- SpringMVC底层数据传输校验的方案
团队的项目正常运行了很久,但近期偶尔会出现BUG.目前观察到的有两种场景:一是大批量提交业务请求,二是生成批量导出文件.出错后,再执行一次就又正常了. 经过跟踪日志,发现是在Server之间进行jso ...
- application19事件 20多少步骤 具体20多少只有微软知道!!!
- springBoot系列教程08:拦截器(Interceptor)的使用
拦截器intercprot 和 过滤器 Filter 其实作用类似 在最开始接触java 使用struts2的时候,里面都是filter 后来springmvc时就用interceptor 没太在意 ...
- PHP 微信分享页面(图文)
首先确保你的公众号配置没有问题,详细请看: PHP 微信公众号-创建菜单-配置 1.获取签名包 这里需要你的appid 和 开发者密码 //获取签名包 public function getSignP ...
- TP框架如何开启log日志
1. 日志的处理工作是由系统自动进行的,在开启日志记录的情况下,会记录下允许的日志级别的所有日志信息. 其中,为了性能考虑,SQL日志级别必须在调试模式开启下有效,否则就不会记录. 系统的日志记录由核 ...
- 【漏洞分析】dedecms有前提前台任意用户密码修改
0x00 前言 早上浏览sec-news,发现锦行信息安全发布了一篇文章<[漏洞分析] 织梦前台任意用户密码修改>,看完之后就想着自己复现一下. 该漏洞的精髓是php的弱类型比较,'0. ...
- ERP报错:所在的期间无效,但又无法新增账套期间。
问题: 进入2018新年月,客户在新增单据的时候,报错:日期[2018-01-03]所在的期间无效 正常解决方法 过账期间里面设置一下路径:管理----期间与结账----过账期间设置 先设置年期间-- ...
- 扩充表字段长度,引发的意外KILLED/ROLLBACK
这一段时间,因为系统升级,新系统产生的数据长度,比原来的数据长度要长,所以说要扩充一下字段长度. ) --修改字段长度sql 在执行的时候,有这样一个情况. 例如Student表的Name字段长度是n ...