自定义监控项

zabbix本身提供了很多可选的监控项,可以满足绝大部分的监控需求。有时候由于业务需求,需要自定义监控项。 下面以创建mysql自定义监控项为例,分享如何创建zabbix自定义监控项。

例一:监控3306端口。

ZabbixClient-01上操作。

[root@ZabbixClient-01 ~]# cat >> /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf <<EOF
> UserParameter=mysql.port_3306[*], HOME=/etc/zabbix netstat -nutl | grep -c -w '3306'
> EOF
[root@ZabbixClient-01 ~]# systemctl restart zabbix-agent

ZabbixServer-01上操作。

[root@ZabbixServer-01 ~]# yum install -y zabbix-get
[root@ZabbixServer-01 zabbix]# zabbix_get -s 172.16.70.171 -k "mysql.port_3306"
1

Zabbix Web设置,添加MySQL端口3306监控项。

 

 例二:用于专们管理日常的一些服务等,在新建的模板上面创建对应服务的监控项、触发器、动作等。

ZabbixClient-01上操作。

# 修改配置文件
[root@ZabbixClient-01 ~]# cat >> /etc/zabbix/zabbix_agentd.conf << EOF
> EnableRemoteCommands=1   #允许接收远程命令
> LogRemoteCommands=1   #把接收的远程命令记入日志
> EOF

# 创建新目录
[root@ZabbixClient-01 ~]# mkdir /etc/zabbix/zabbix_script

# 新增获取服务状态脚本
[root@ZabbixClient-01 ~]# cat /etc/zabbix/zabbix_script/service_status.sh
#!/bin/bash
#zabbix 远程执行命令、重启应用 ssh、mysql、ntp、等

case $1 in
    sshd)
        result=`pidof sshd  |wc -l`
        echo $result
        ;;
    ntpd)
        result=`pidof ntpd  |wc -l`
        echo $result
        ;;
    mysqld)
        result=`pidof mysqld  |wc -l`
        echo $result
        ;;
    *)
        echo "Usage:$0(sshd|ntpd|mysqld)"
        ;;
esac

# 新增监控服务子配置文件
[root@ZabbixClient-01 ~]# cat /etc/zabbix/zabbix_agentd.d/userparameter_service.conf
# 获取服务运行状态
UserParameter=service.status[*], sh /etc/zabbix/zabbix_script/service_status.sh $1

# 赋予脚本执行权限
[root@ZabbixClient-01 ~]# chmod +x /etc/zabbix/zabbix_script/service_status.sh

[root@ZabbixClient-01 ~]# systemctl restart zabbix-agent

 ZabbixServer-01上操作。

# 用命令进行测试
[root@ZabbixServer-01 ~]# zabbix_get -s 172.16.70.171 -k "service.status[sshd]"
1
[root@ZabbixServer-01 ~]# zabbix_get -s 172.16.70.171 -k "service.status[ntpd]"
1
[root@ZabbixServer-01 ~]# zabbix_get -s 172.16.70.171 -k "service.status[mysqld]"
1