前言
对于很多情况下手动创建监控项是很费劲的事,所以zabbix提供了自动发现的功能,我这里以自动发现agent端活动端口为例,再借助zabbix自带的端口监控项来实现自动监控。废话不多说,直接来硬的。
一、修改agent端配置文件
该位置以自己安装的为准,没找到可用locate搜索一下
vim /etc/zabbix/zabbix_agentd.conf
UnsafeUserParameters=1 # 默认为0,表示不允许自定义key
UserParameter=portall,/root/shell/python/postjson.py #自定义监控项
注意:如果不能成功获取到监控项数据(一般提示权限不够),请修改agent配置文件 AllowRoot=1
?
二、在agent上添加脚本
获得本地端口的shell语句如下:
netstat -ntl|tail -n +3|awk '{print $4}'|awk -F: '{print $NF}'|sort|uniq
然后写个python2的脚本,将数据转换成json格式
Vim /root/shell/python/postjson.py
#!/usr/bin/env python
import json
import oscmd=os.popen("""netstat -ntl|tail -n +3|awk '{print $4}'|awk -F: '{print $NF}'|sort|uniq""")ports=[]for port in cmd.readlines():r=port.strip()ports+=[{'{#PORT}':r}]print json.dumps({'data':ports},sort_keys=True,indent=4,separators=(',',':'))
效果截图
注意:记得给脚本加执行权限
三、重启agent服务,server端测试
server端使用zabbix_get测试监控项有效性。
四、创建自动发现规则
键值就是前面agent配置文件那里写的名称
五、创建监控项原型
注意:net.tcp.port[,{#PORT}]键值必须这么写,在写的时候参考官方文档不然监控项无效。
六、zabbix 查看监控项数据 ?
总结:
我这里主要是介绍zabbix有这个功能,简单的实现方法,如果自己有其他需求要自己去写脚本咯,监控项原型也可以是自己自定义的监控项,我希望我的文章对朋友们有帮助,记得点个赞啥的,哈哈