首先自动发现脚本
#cat swoft_low_discovery.sh
#!/bin/bash
swoft() {
#list=`sudo /usr/bin/netstat -tulnp|grep -w swoft|grep -v php-fpm|grep -v grep |awk '{print $4}'|awk -F: '{print $NF}'`
list=`sudo /usr/bin/netstat -tulnp|grep -Ew 'swoft|usercenter|user-center|common-api'|grep -v php-fpm|grep -v grep |awk '{print $4}'|awk -F: '{print $NF}'`
tail_line=`echo $list|awk '{print $NF}'`
printf '{\n'
printf '\t"data":[\n'
for key in $list
do
item_pid=`sudo /usr/bin/netstat -tulnp|grep -Ew 'swoft|usercenter|user-center|common-api'|grep -v php-fpm|grep -w "$key"|grep -v grep |awk '{print $7}'|awk -F/ '{print $1}'`
item=`sudo /usr/bin/ps aux|grep -w "$item_pid"|grep -v php-fpm|grep -v grep |awk -F/ '{print $(NF-3)}'`
printf '\t {\n'
if [ "$key" != "$tail_line" ];then
printf "\t\t\t\"{#SERVICEPORT}\":\"$item-${key}\"},\n"
else
printf "\t\t\t\"{#SERVICEPORT}\":\"$item-${key}\"}\n"
fi
done
printf '\t ]\n'
printf '}\n'
}
$1
item的key的自定义的脚本
#cat swoft_monitor.sh
#!/bin/bash
PORT=`echo $1|awk -F- '{print $2}'`
IMTEM_NUM=`sudo /usr/bin/netstat -tulnp|grep -w "$PORT"|grep -v grep |wc -l`
if [ "$IMTEM_NUM" == 0 ];then
echo 0;
else
echo 1;
fi
机器的sudo设置
#cat /etc/sudoers
zabbix ALL=(root) NOPASSWD:/usr/bin/netstat,/usr/bin/ps
zabbix ALL=(ALL:ALL) NOPASSWD: /soft/nodejs/bin/pm2-zabbix
zabbix配置文件设置
#cat zabbix_agentd.conf.d/userparameter_swoft.conf
UserParameter=swoft_port.discovery[*], sh /etc/zabbix/zabbix_scripts/swoft_low_discovery.sh $1
UserParameter=swoft_port.status[*], /etc/zabbix/zabbix_scripts/swoft_monitor.sh $1
zabbix控制台配置
最后把对应机器应用这个模板即可