Macros 在项键定义中使用宏

Macros 在项键定义中使用宏,macros,monitoring,zabbix,Macros,Monitoring,Zabbix,我在Zabbix中使用预定义宏时遇到问题。我定义了两个宏,如下所示: {$HOSTNAME}=2008 windows服务器 {$IPADDRESS}=192.168.1.1 我想在项目名称和项目密钥中使用它们。宏{$HOSTNAME}在项目的名称部分中使用时,会正确映射到其值。但是,当我在该项的键中使用{$IPADDRESS}时,它不会转换为ip地址,因此我得到不受支持的错误!!我使用它的方式如下: getNetFlowProto[{$IPADDRESS},udp] getNetFlowPro

我在Zabbix中使用预定义宏时遇到问题。我定义了两个宏,如下所示:

{$HOSTNAME}=2008 windows服务器 {$IPADDRESS}=192.168.1.1

我想在项目名称和项目密钥中使用它们。宏{$HOSTNAME}在项目的名称部分中使用时,会正确映射到其值。但是,当我在该项的键中使用{$IPADDRESS}时,它不会转换为ip地址,因此我得到不受支持的错误!!我使用它的方式如下: getNetFlowProto[{$IPADDRESS},udp]

getNetFlowProto是我在zabbix_agend.conf文件中定义的用户参数


感谢您的帮助。

基于长时间的沟通,发生了如下情况:

  • 在项目名称和键中都使用了Zabbix宏(变量)
  • 您已检查项目名称中的宏是否已在“监视和配置”部分中解析,但项目键中的宏未解析(在“配置”部分中)
这可能是因为Zabbix没有解析所有配置页面中的所有宏。这不是很一致,也没有明确的记录

  • 您看到该项不起作用

这可能是由于输入错误,也可能是由于配置缓存的延迟造成的——当您对项目进行更改时,Zabbix服务器可能仍会使用以前的配置运行一分钟。您可能已经看到了前面的错误,但认为它是由最新的配置生成的。这一猜测得到了这样一个事实的支持,即它最终使用了假定为相同的宏。

如果用文字IP地址替换usermacro,它会工作吗?如果不是,那是userparameter的问题,而不是宏的用法。谢谢Richlv。是的,如果我输入ip地址,它就会工作。但是因为我想创建一个模板,我需要使用宏而不是文字IP地址。可能是您在项目键后省略了[*]吗?这是我定义的UserParameter:UserParameter=getNetFlowProto[*],/bin/bash/zascripts/getNetFlowInfo.sh$1$2
testDear@Richlv它似乎正在工作!!!一个问题:当我将$HOSTNAME放在项目名称中时,它立即更改为其文本值,但这不会发生在项目键中!!!但它正在工作,我可以从zabbix的最新数据和zabbix_得到结果!!!也许宏没有更改为它们的文字值??看起来就像您描述的@Richlav一样。当我使用如下所需的宏时,该项正在工作:getNetFlowProto[[{$IPADDRESS}],udp],它不会解析为文本值,但可以工作。我知道我应该使用HOST.IP和HOST.NAME,但这些宏使用为主机定义的主机名和IP地址。但是我想使用一个与主机主IP地址不同的IP地址,因此,我必须创建自己的宏。啊,感谢澄清-我有点误读了宏名称。我删除了关于HOST.IP/NAME的建议,因为这可能会产生误导,并且与此无关。