背景
端口监控是很普遍的一个需求,当一台机器上跑了几十个服务,就想着能不能自动发现并监控所有的端口呢?
毕竟我们的宗旨是能自动绝不手动,摸鱼才是工作的真谛。
![7ea8cfd45fdaf47eb2ecba2a66e20bdf.png](https://i-blog.csdnimg.cn/blog_migrate/28d08a95d4cb184e2284f4c12ab1f462.jpeg)
实施
解决方案基于 Linux 命令 ss,下面看下输出:
AllowKey=system.run["ss --tcp --listening --numeric"]
如果希望在模板中整合命令而不是使用 UserParameter ,则需要将此 items keys 写入 zabbix_agentd.conf或zabbix_agent2.conf :
AllowKey=system.run["ss --tcp --listening --numeric"]
如果是 zabbix 5.0 之前的版本,则需要修改该参数
EnableRemoteCommands=1
如果服务器上没有远程执行命令的条件,则使用 UserParameter:
UserParameter=ss.tcp.listening,ss --tcp --listening --numeric
接下来配置 zabbix 自动发现(lld)
![37f94c1d90e7dc9885061587b9f1fa9b.png](https://i-blog.csdnimg.cn/blog_migrate/239f1248d32be30fef714cd20899e758.jpeg)
如果你使用 UserParameter,则是这样
![2109479a12cbb8f9046d7ab91f4ac31b.png](https://i-blog.csdnimg.cn/blog_migrate/8529403f2d0461de3a0c89fdff8c6d6c.jpeg)
接下来看下输出:
ss --tcp --listening --numeric
输出:
State Recv-Q Send-Q Local Address:Port Peer Address:PortLISTEN 0 128 0.0.0.0:17500 0.0.0.0:*LISTEN 0 50 0.0.0.0:445 .0.0.0:*LISTEN 0 128 [::]:17500 [::]:*LISTEN 0 50 [::]:445 [::]:*LISTEN 0 128 *:3306 *:*LISTEN 0 50 [::]:139 [::]:*
我们只需要获取第四列的数据,这里使用 JavaScript 正则表达式预处理
- 获取所有端口号
return value.match(/:[0-9]+ /gm);
- 删除重复项
return value.reduce(function(a,b){if(a.indexOf(b) < 0)a.push(b);return a;},[]);
- 删除所有冒号和空格
return value.join("").replace(/:/g,"").replace(/ /g,"").split("");
完整代码如下:
var lld = [];var lines = value.match(/:[0-9]+ /gm).reduce(function(a,b){if(a.indexOf(b) < 0)a.push(b);return a;},[]).join("").replace(/:/g,"").replace(/ /g,"").split("");var lines_num = lines.length;for (i = 0; i < lines_num; i++){var row = {};row["{#PORT}"] = lines[i]lld.push(row);}return JSON.stringify(lld);
创建监控项
![f605de309a849a6325c3add29701cc87.png](https://i-blog.csdnimg.cn/blog_migrate/40a6d5f38171b228ff8707d3eb1966ac.jpeg)
创建触发器
![83d317d4217f488d63cc5edcf708904c.png](https://i-blog.csdnimg.cn/blog_migrate/9de5f261b45432615fe0dc6726341f16.jpeg)
最后导入模板即可
https://share.zabbix.com/operating-systems/linux/listening-tcp-port-discovery-and-monitoring
![d98b04552ab5f2faccb024f897a6bbb9.png](https://i-blog.csdnimg.cn/blog_migrate/3652f5dd89317507d8943d25876e00c6.jpeg)