首页 > 解决方案 > zabbix_get 和 AWK/substr - ZBX_NOTSUPPORTED:参数太多

问题描述

我正在尝试使用 Zabbix 在 Apache 日志中收集有关 500 个错误的信息。我想,我将使用 zabbix_get 在代理的操作系统上执行命令,但是在尝试测试时,我得到了ZBX_NOTSUPPORTED: Too many parameters.错误。起初,我试图转义所有"和其他特殊字符,但没有任何成功。当尝试调试命令(在本地运行良好,不使用 zabbix_get)时,我发现问题可能在 AWK 和 substr 附近。如果有人可以看一下,我将不胜感激...

tail -n 1000 /content/logs/httpd/*_access.log | awk -v d1="$(date --date='-5 min' '+%_d/%b/%Y:%H:%M:%S')" -v d2="$(date '+%_d/%b/%Y:%H:%M:%S')" 'substr($5,2) > d1 && substr($5,2) < d2 || substr($5,2) ~ d2' | cut -d" " -f10 | grep "500" | wc -l

样本输入:
IP IP - - [21/Jan/2019:03:14:06 -0500] "GET /path HTTP/1.1" 200 2068 referrer "UserAgent" 7634. IP IP - - [21/Jan/2019:03:14:06 -0500] "GET /path HTTP/1.1" 500 1 "-" "UserAgent" 1892

输出:
1

我想每 5 分钟执行一次上面列出的命令,以计算在前 5 分钟内发生的 500 错误的条目数。

我知道我总是可以创建一个脚本,但如果我可以避免这样做......

谢谢!

标签: shellawkmonitoringzabbix

解决方案


zabbix_get可以创建一个system.run[blablabla].

但是,您应该使用本机日志文件监控功能:使用logrt.countorlog.count函数提取匹配行数。


推荐阅读