Zabbix监控服务状态有多种方式,比如:
1,ps aux |grep nginx|grep -v grep |wc -l,依据返回值来判断是否正常;
2,利用zabbix自带函数proc.num[]来判断是否正常;
上面两种都需要指定对象,但通常不适用于生产环境。生产环境中,不同主机启动的服务不同,规模小了还好办,最多辛苦一点,挨个添加,规模大了就不适用了。这个时候就要使用lld来自动发现服务并监控服务状态。
脚本如下:
[root@seo1 process]# cat proc.discovery.sh
#!/bin/bash
# get the list service if running in the server
printf '{\n'
printf '\t"data":[\n'
getservice() {
ps axu | grep -v grep | grep $1 &> /dev/null
if [ $? == 0 ];then
if [ $1 != 'sshd' ]; then
printf '\t {\n'
echo '"{#PROCNAME}":' \"$1\" '},'
else
printf '\t {\n'
echo '"{#PROCNAME}":' \"$1\" '}'
fi
f