Zabbix监控服务状态有多种方式,比如:

            1,ps aux |grep nginx|grep -v grep |wc -l,依据返回值来判断是否正常;

            2,利用zabbix自带函数proc.num[]来判断是否正常;

            上面两种都需要指定对象,但通常不适用于生产环境。生产环境中,不同主机启动的服务不同,规模小了还好办,最多辛苦一点,挨个添加,规模大了就不适用了。这个时候就要使用lld来自动发现服务并监控服务状态。

            脚本如下:

            [[email protected] 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
fi
}
services="httpd mysqld haproxy sshd"
for srv in $services;do
getservice $srv
done
printf '\t ]\n'

printf '}\n'

修改zabbix_agentd的配置文件,添加

UserParameter=proc.discovery,/bin/bash /home/zabbix/process/proc.discovery.sh

Server端返回值如图,检验正确。如果不正确,无法获取监控值,监控项是不支持的

Zabbix lld实例之监控服务状态是否正常

                然后配置WEB端

Zabbix lld实例之监控服务状态是否正常

        选择配置,模版,输入模版名称和可见名称,创建模版,单击进入模版,选择自动发现规则,创建自动发现规则

Zabbix lld实例之监控服务状态是否正常

name,agent主动模式,key,更新间隔是采集频率,历史数据保留时间。

        创建监控原型

        Zabbix lld实例之监控服务状态是否正常

创建触发器原型

    Zabbix lld实例之监控服务状态是否正常

配置完成,验证结果

Zabbix lld实例之监控服务状态是否正常

相关文章: