例:假如要监控所有正在运行的服务进程端口,因为每台服务器的进程都不同,是一个会变化的监控项,所以应用模板对每台服务器监控时需要用到自动发现添加监控项,以netstat命令查看到的所有进程举例。

一、首先要设置一个监控项自动发现规则,自定义键值并通过脚本自动发现到所有监控项#PROCESS,并通过脚本设置为json格式输出(以便定义监控项原型的键值区分每个监控项)

1.###注意取监控项的时候这两行多余的内容要去掉,可以把所需内容输出到/tmp/netstat_port.txt文件方便监控项取值。

2.编写输出json格式数据脚本discovery_process.sh,得到所需自动发现规则的宏值{#PROCESS}用来做后面监控项原型的键值。

#!/bin/bash
#设置数组item为需要得到的所有监控项键值数据,变量itemnum为数据的个数
item=`netstat -ntlp|awk '{print $7}'|sed '1,2d'`
itemnum=`netstat -ntlp|awk '{print $7}'|sed '1,2d'|wc -l`
#输出json格式数据
num=0
echo "{"\"data\"":["
for name in ${item[@]}
do
     let num=num+1
     if [ "$num" -eq "$itemnum" ]
     then
         echo "{"\"{#PROCESS}\"":"\"${name}\""}"
     else
         echo "{"\"{#PROCESS}\"":"\"${name}\""},"
     fi
done
echo "]}"

3.自定义自动发现规则的监控指标

4.在zabbix前端添加自动发现规则

5.设置监控项原型,需要监控的指标  例子中为每个进程的端口号

6.自定义监控项原型所要监控的最终监控项

      双"$$"符是zabbix用来引用系统的"$"符号时和这里传递的位置参数"[*]"做区分,egrep -w "$1$"是用正则以及精确匹配出以键值参数[*]中的第一个参数"$1"结尾的那一行,使每个监控项得到对应自己的那一个值。

例如:

7.重启agent服务然后大功告成

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐