答案1
对您来说,更好的选择是使用专门的插件。Zabbix 与许多其他现代监控应用程序一样,允许用户实现自定义插件。对于您来说,您需要的自定义插件将是专门为检查、监控和警报日志文件而构建的工具。
这种工具的一个例子是自动解析
安装过程很简单:
- 登录到您要监视日志文件的主机
- wget (autoresolve.kl.sh 的 zip 文件的 url 链接)
- cd /tmp ; 解压(下载的 zip 文件)
- ./install.sh /var/tmp/KINGLAZY/SHIELDX-autoresolve.kl.sh/主页/jserver -力量
将“/home/jserver”替换为您的 zabbix 插件目录。此外,请确保以普通用户身份运行上述安装命令 - 而不是 root 用户,除非您正在测试。
完成上述步骤后,您现在可以开始监控日志:
./autoresolve.kl.sh localhost /var/tmp/logXray,fixer,0n-1y-2y,0-uname,1-who,2-uptime autonda /var/log/syslog 60m'app.*error''.' 1 2 app_err_monitor -ndshow
为了简单起见,您需要更改的最重要的参数是:
- /var/log/syslog-这是您正在监控的日志文件
- app.*error - 这是你在日志文件中寻找的字符串
- app_err_monitor - 这是您为该特定日志检查指定的名称/标签。稍后,如果您愿意,可以使用此标签帮助您生成受监控日志的图表。
有关每个参数含义的详细说明,您可以直接访问帮助页面。
在同一个帮助页面上,您还可以找到有关如何使此工具与 Zabbix 协同工作的分步说明...即您需要更新哪个 zabbix 配置文件...以及您需要在 zabbix Web 界面上进行哪些设置。
答案2
确保被监控主机上的代理配置文件中:
'Hostname' 参数与前端的主机名匹配。'ServerActive' 参数中的服务器是为处理主动检查而指定的。例如:
/etc/zabbix/zabbix_agentd.conf:
Hostname=game.bingodrive.com
ServerActive=10.1.1.1
然后检查 zabbix Unix 用户是否有权限读取该文件:
# su - zabbix -c "tail $YOUR-FILE"
请注意,如果找到字符串,“regexp”触发函数返回 true (1),因此如果第二张屏幕截图上的消息是错误,则应该是 =1,而不是 =0。
答案3
对于 Zabbix 监控 UNIX 日志文件的项目log
,至关重要的是相关主机可以利用主动检查。这通常意味着:
必须配置代理
ServerActive=
以及与该主机一起使用的 zabbix 服务器或代理的主机名。Zabbix 服务器配置的主机名与目标(受监控)主机的 FQDN 或系统主机名匹配。
如果不是这种情况,则应配置代理
HOSTNAME=
和相应的 Zabbix 服务器配置主机名。正如其他人指出的那样,代理(以 Zabbix 用户身份运行)必须有权访问日志文件,
su zabbix -c "tail -1 logfile"
这是测试这一点的好方法。如果 zabbix 帐户被禁用,请使用runuser -u zabbix tail -1 logfile
。(替换logfile
需要监控的文件)。
重新启动代理时,检查其日志文件中是否存在任何错误消息,例如
no active checks on server [127.0.0.1:10051]: host [Zabbix server] not found
这表明上述类型的配置错误。
如果您在服务器上看到此项“不支持”,则可能是文件权限存在问题。
如果你仍然看不到你的消息,可能是因为太多正在发送的消息。默认情况下,Zabbix 每秒仅发送 100 条左右的消息,并且每 30 秒才会“赶上”一次(请参阅您的项目)。
您已将触发器配置为仅查看最后一项 ( regexp(...,#1)
)。我认为这是正确的,但通常情况下,您只需省略,#1
。
编辑:替换sudo
为runuser
。见评论