自定义监控
准备工作
在客户端上启动自定义监控
[root@localhost ~]# cd /usr/local/etc/
[root@localhost etc]# ls
zabbix_agentd.conf zabbix_agentd.conf.d
[root@localhost etc]# vim zabbix_agentd.conf
UnsafeUserParameters=1 //搜索Parameters 取消注释 并将值改为1
#文档最后添加自定义监控
//保存退出
UserParameter=check_process_mysql,/bin/bash /scropts/check_process.sh
//重启zavvix,查看端口号
[root@localhost ~]# pkill zabbix
[root@localhost ~]# zabbix_agentd
[root@localhost ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:10050 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 80 *:3306 *:*
LISTEN 0 128 [::]:22 [::]:*
//安装并打开mysql
[root@localhost ~]# which mysqld
/usr/local/mysql/bin/mysqld
[root@localhost ~]# systemctl start mysqld.service
[root@localhost ~]# systemctl status mysqld.service
● mysqld.service - mysql server daemon
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendo>
Active: active (running) since Sun 2022-07-10 08:25:20 EDT; 18min ago
编写脚本
[root@localhost etc]# mkdir /scripts/
[root@localhost etc]# cd /scripts/
[root@localhost scripts]# vim check_process.sh
[root@localhost scripts]# cat check_process.sh
#!/bin/bash
count=$(ps -ef | grep -Ev "grep|$0" | grep -c $1) //grep|$0会过滤脚本本身
if [ $count -eq 0 ];then
echo '1'
else
echo'0'
fi
//给脚本执行权限
[root@localhost scripts]# chmod +x check_process.sh
[root@localhost scripts]# ll
总用量 4
-rwxr-xr-x 1 root root 117 7月 10 08:39 check_process.sh
添加监控项
添加触发器
关闭mysql服务
[root@localhost ~]# systemctl stop mysqld.service
[root@localhost ~]# systemctl status mysqld.service
● mysqld.service - mysql server daemon
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: inactive (dead) since Sun 2022-07-10 09:11:11 EDT; 5min ago
Process: 108048 ExecStop=/usr/local/mysql/support-files/mysqld stop (code=exited, status=0/SUCCESS)
Process: 959 ExecStart=/usr/local/mysql/support-files/mysqld start (code=exited, status=0/SUCCESS)
Main PID: 996 (code=exited, status=0/SUCCESS)
30s后,可以mysql服务开始告警
自定义监控日志
[root@localhost scropts]# chmod +x log.py //给脚本log执行权限
[root@localhost scropts]# ll
总用量 8
-rwxr-xr-x. 1 root root 124 7月 9 10:17 check_process.sh
-rwxr-xr-x. 1 root root 1854 7月 9 12:15 log.py
//让zabbix用户对httpd的日志目录有读权限
[root@localhost httpd]# setfacl -m u:zabbix:rx /var/log//httpd
[root@localhost httpd]# getfacl /var/log/httpd/
getfacl: Removing leading '/' from absolute path names
# file: var/log/httpd/
# owner: root
# group: root
user::rwx
user:zabbix:r-x
group::---
mask::r-x
//安装python
[root@localhost ~]# yum install python3 -y
上次元数据过期检查:0:40:53 前,执行于 2022年07月10日 星期日 08时52分25秒。
依赖关系解决。
==========================================================================
软件包 架构 版本 仓库 大小
==========================================================================
安装:
python36 x86_64 3.6.8-38.module_el8.5.0+895+a459eca8
[root@localhost scropts]# python3 log.py /var/log/httpd/error_log //正常执行结果为0
0
[root@localhost scropts]# echo 'Error' >> /var/log/httpd/error_log //向日志中添加Error
[root@localhost scropts]# python3 log.py /var/log/httpd/error_log //脚本检查Error打印1
1
[root@localhost scropts]# python3 log.py /var/log/httpd/error_log //再次执行 因为日志是实时刷新 打印0
0
配置zabbix_agentd.conf文件
[root@localhost etc]# vim zabbix_agentd.conf
UserParameter=check_logs[*],/usr/bin/python3 /scropts/log.py $1 $2 $3
[root@localhost ~]# pkill zabbix_agentd
[root@localhost ~]# zabbix_agentd //重启让文件生效