一、背景
使用zabbix监控软件的过程中,很多时候需要运行自定义脚本来实现特定功能,因此需要在zabbix和操作系统上做一些设置。本文详细介绍了zabbix上实现运行自定义脚本监控Oracle 数据库alert日志的过程以及配置预警,自定义执行间隔的详细步骤。
二、步骤
1.写脚本,并赋权可执行
创建check_alert_log.sh文件,脚本如下:
vim check_alert_log.sh
#!/bin/bash
alert_dir='/u01/app/oracle/diag/rdbms/'
cd $alert_dir
alert_log=$(find ./ -name "alert_$ORACLE_SID.log")
tail -n 500 $alert_log | grep -Ei "ORA-|err|fail"
chmod +x check_alert_log.sh
2.zabbix客户端主机修改zaibbix的组权限,root用户执行
usermod -aG oinstall zabbix
3.zabbix客户端主机修改zabbix-agent2配置文件
vim /etc/zabbix/zabbix_agent2.conf
添加如下内容
UnsafeUserParameters=1-----开启自定义参数设置
UserParameter=check_alert_log[*],sh /home/oracle/dbreport/check_log.sh $1---自定义监控项名称,监控项执行脚本命令
4.重启zabbix-agent2客户端
systemctl restart zabbix-agent2.service----重启
systemctl status zabbix-agent2.service---查看状态
5.zabbix配置模板监控项和触发器
创建模板
创建监控项



创建触发器



6.zabbix模板绑定主机

三、结果验证

四、常见报错解决
报错
2025-12-01 16:24:36 sh: /home/oracle/dbreport/check_alert_log.sh: Permission denied
解决方案
1.agent版本
如果使用的是zabbix-agent,只需在agent配置文件中加入AllowRoot=1,重启agent即可。
2.agent2版本
如果使用的是zabbix-agent2,配置文件是没有AllowRoot选项的,为此需要修改服务文件,将User和Group修改为root。
[root@ys ~]# cat /usr/lib/systemd/system/zabbix-agent2.service
User=root
Group=root
3.重启agent服务
此时,agent进程是以root身份运行。

重启命令如下
systemctl daemon-reload---重新加载配置
systemctl restart zabbix-agent2.service----重启
最新数据里,获取到的值也恢复正常。






