zabbix 实现批量监控端口状态 批量监控无固定端口的进程服务状态_zabbix不监控指定网口

本文介绍了一个软件测试者分享的资源包,包含从零基础到进阶的学习资料,以及如何使用Python脚本配合Zabbix实现端口监控,旨在帮助程序员高效自学并提升技术能力。
摘要由CSDN通过智能技术生成

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
img

正文

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 ( N F   / [ 0 − 9 ] ∗ NF~/^[0-9]* NF /[09]/) 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来说更加便捷。

在/etc/zabbix/zabbix_agentd.d/下创建目录externalscripts

mkdir -p /etc/zabbix/zabbix_agentd.d/externalscripts

将脚本放在客户端 /etc/zabbix/zabbix_agentd.d/externalscripts 路径下面。并赋予执行权限。

[root@mysql-master externalscripts]# chmod +x check_port.py
[root@mysql-master externalscripts]# ll -a check_port.py
-rwxr-xr-x. 1 root root 672 Jul 1 01:25 check_port.py

2. 在 /etc/zabbix/zabbix_agentd.d/ 下创建 userparameter_checkport.conf 文件,并编辑。内容如下:

[root@mysql-master zabbix_agentd.d]# more userparameter_checkport.conf
UserParameter=tcpport.listen,/etc/zabbix/zabbix_agentd.d/externalscripts/check_port.py

敢这么做是因为:

通常在zabbix_agentd.conf文件中有这段代码 include zabbix_agentd.d/*.conf。(如果注释掉的话就解除注释)

重启客户端服务。

[root@mysql-master ~]# systemctl restart zabbix-agent.service

3. 服务端测试

执行命令: zabbix_get -s 192.168.158.141 -p 10050 -k tcpport.listen

会发现zabbix报错,报错信息:(Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.)

解决方法:

zabbix_agentd端执行命令

chmod +s /bin/netstat

服务端再次使用zabbix_get 测试,便不会有报错信息。

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

如果客户端对check_port.py赋权方式采用的 chmod u+x check_port.py  即-rwxr–r-- 则,在服务端zabbix_get进行测试时,会报没有权限。如下所示:

[root@zabbix_nginx ~]# zabbix_get -s 192.168.158.141 -p 10050 -k tcpport.listen
sh: /etc/zabbix/zabbix_agentd.d/externalscripts/check_port.py: Permission denied

二 页面配置

1. 创建端口监控专用主机群组

配置 > 主机群组 > 创建主机群组

2. 创建模板

配置 > 模板 > 创建模板

3. 添加自动发现规则

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

说明:上面的key 一定要和监控客户端配置文件中的 key 保持一致。

4. 创建监控项原型

创建自动发现规则后,点击该规则下的 “监控项原型” ----> 创建监控项原型

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

5. 创建触发器原型

其中,表达式详情如图:

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

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

三 将端口监控模板链接到相关主机

将端口监控模板链接到相关主机上即可

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

报警效果:



扩展1:

批量添加指定端口

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

要实现这个功能我们只需要,将脚本替换成下面的内容即可(以只监控8080,3306两个端口为例

#!/usr/bin/env python

import json

portlist = [“8080”,“3306”]

new_port_list = []

port_dict = {“data”:None}

#cmd = ‘’‘netstat -tnlp|egrep -i “$1”|awk {‘print $4’}|’‘’

#cmd += ‘’‘awk -F’:’ ‘{if ( N F   / [ 0 − 9 ] ∗ NF~/^[0-9]* NF /[09]/) print $NF}’|sort -n| uniq 2>/dev/null’‘’

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

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



扩展2
自动发现批量监测指定端口方案优化

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
#python3
#print(jsonStr)

#python2
print jsonStr



扩展2
自动发现批量监测指定端口方案优化

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-D3FWcmy5-1713170191009)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 16
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值