Zabbix的UserParameter返回两个值,没有一个是正确的

我创build了用户参数测量在iscsi lun上的写入速度,如下所示:

UserParameter=write.perf.mon[*], mytime="$(time -p (dd if=/dev/zero of=$1 oflag=direct bs=4k count=1000) 2>&1 1>/dev/null )"; echo "$mytime" | grep real | awk '{print $$2}' 

如果从shell运行正确的值,它会产生以下输出:

 2.78 

当它由zabbix代理执行时,我可以在日志中看到正确的命令,但它显示以下内容:

 7770:20150921:123734.823 Run remote command [ mytime="$(time -p (dd if=/dev/zero of=path_to_file oflag=direct bs=4k count=1000) 2>&1 1>/dev/null )"; echo "$mytime" | grep real | awk '{print $2}'] Result [4] [0.00]... 

而zabbix收集零。

请帮助任何线索,为什么这是如此,以及如何修复

谢谢,

梅德

检查用户运行zabbix_agent。
默认情况下,这是用户zabbix 。 检查你的权限运行的命令链显示正确的值。 很可能你没有足够的权利。

  1. 尝试通过用户zabbix运行你的脚本

    / dev / null)“; / / mytime =”$(time -p(dd if = / dev / zero of = path oftofile oflag = direct bs = 4k count = 1000)2>&1 1> 回声“$ mytime”| grep real | awk'{print $ 2}'

  2. 如果一切正常,尝试使用$$而不是$(mytime =“$$ …)

  3. 在您的zabbix代理机器上检查UnsafeUserParameters设置为“on”。 看来你的path_to_filevariables包含“/”。 请参阅用户手册:

除非启用了UnsafeUserParameters代理守护程序configuration选项,否则不允许传递包含这些符号的灵活参数:\'“`*? [] {}〜$! &; ()<> | #@。 另外,换行也是不允许的。