Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell zabbix_get和AWK/substr-ZBX_不受支持:参数太多_Shell_Awk_Monitoring_Zabbix - Fatal编程技术网

Shell zabbix_get和AWK/substr-ZBX_不受支持:参数太多

Shell zabbix_get和AWK/substr-ZBX_不受支持:参数太多,shell,awk,monitoring,zabbix,Shell,Awk,Monitoring,Zabbix,我试图使用Zabbix收集Apache日志中500个错误的信息。我想,我将使用zabbix_get在代理的操作系统上执行命令,但是当尝试测试时,我得到了ZBX_NOTSUPPORTED:太多参数。error。起初,我尝试转义所有的“和其他特殊字符,但没有成功。当尝试调试该命令(在本地运行良好,不使用zabbix_get)时,我发现问题可能出在AWK和substr附近。如果有人能看一下,我将不胜感激 tail-n 1000/content/logs/httpd/*(access.log | awk

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

tail-n 1000/content/logs/httpd/*(access.log | awk-v d1=“$(日期--date='-5分钟+%\d/%b/%Y:%H:%M:%S”)”-v d2=“$(日期'+%\d/%b/%Y:%H:%M:%S”)””substr($5,2)d1和substr($5,2)

示例输入:
ipip---[21/Jan/2019:03:14:06-0500]“GET/path HTTP/1.1”200 2068 referer“UserAgent”7634。
IP地址--[21/Jan/2019:03:14:06-0500]“GET/path HTTP/1.1”500 1“-“UserAgent”1892

输出:
1

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

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


谢谢!

不用
zabbix_get
你可以创建一个
系统。运行[blablabla]


但是,您应该使用本机功能:使用
logrt.count
log.count
函数提取匹配行数。

假设您的日期比较是正确的(事实上不是因为月份的字母) 试试这个:

  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')" '{Ti=substr($5,2)};( Ti > d1 && Ti <= d2 ) && $10 ~ /5[0-9][0-9]/  {Cnt++;print $10} END{print Cnt+0}'

tail-n 1000/content/logs/httpd/*_access.log | awk-v d1=“$(日期--date='-5分钟+%\u d/%b/%Y:%H:%M:%S”)”“-v d2=“$(日期+%\u d/%b/%Y:%H:%M:%S”)”{Ti=substr 5,2};(Ti>d1&&Ti您能在您的帖子中发布示例输入和示例预期输出并让我们知道吗?@RavinderSingh13,当然可以!添加到问题中。您所说的
是什么意思?我知道我总是可以创建脚本,但如果我可以避免这样做…
?您正在寻求帮助以创建新脚本或修改现有脚本ipt,对吗?@EdMorton,我的意思是我可以在虚拟机上创建shell脚本,然后由zabbix_get运行,但是我希望使用一行程序。你可以将任何脚本塞进一行。要求使用“一行程序”“这不是一个很好的目标,要求这样做通常会阻碍人们帮助你,因为这意味着你试图找到一个简短的脚本,而不是一个健壮、可移植、高效等的脚本。是的,通过使用zabbix_get,我调用system.run命令。我将研究日志监视,谢谢。
awk -v d1="$(date --date='-5 min' '+%_d/%b/%Y:%H:%M:%S')" -v d2="$(date '+%_d/%b/%Y:%H:%M:%S')" '($5 < "[" d1){next};{Ti=substr($5,2)};( Ti > d1 && Ti <= d2 ) && $10 ~ /5[0-9][0-9]/  {Cnt++;print $10} END{print Cnt+0}' /content/logs/httpd/*_access.log