我有一个 zabbix 4.2 安装。
我目前已通过通用 SNMP 查询使用我提供的 OID 来监控网络设备。数据采集顺利,图表按预期填充。
我想制作一个交通天气图,以便链接显示当前(或最后)的带宽读数。
像这样:
但是我找不到允许我想要做的事情的宏格式。两个问题:
1:链接与主机不同。它们是不同的实体。因此应用 {HOST.NAME} 或 {HOST.anything} 不起作用。因为链接不是主机。那么...如何使用按名称引用主机的宏?类似于 {net-pan-fw.NAME} 或 {net-pan-fw.HOST},但这不起作用。
2:如何引用/调用/访问主机的成员数据。项目还是密钥?主机 net-pan-fw 有几个项目,例如 net-pan-fw-eth1-310-dmz-bps-in(“项目”和“密钥”的名称)。如何让宏读取该数据?我看到过对 {HOST:ITEM.last(0)} 之类的引用,但不起作用。我尝试过 {HOST:net-pan-fw-eth1-310-dmz-bps-in.last(0)} 之类的东西,但不起作用。
这就是我的两个问题。宏如何引用不同的/特定的主机;宏如何引用/读取该主机中的特定 ITEM 或 KEY?
答案1
通过蛮力解决了这个问题。
宏可以通过名称指向主机,并且可以按照以下格式通过其键引用“项目”中的“键”:
{host-name-here:item-key-here.last(0)}
因此,在我的例子中,我的主机名是 net-pan-fw,并且我在 net-pan-fw-eth1-3-10-dmz-bps-in 和 net-pan-fw-eth1-3-10-dmz-bps-out(它们是 SNMP 源)中有数据。因此,我可以在任何情况下使用宏,例如:
In : {net-pan-fw:net-pan-fw-eth1-3-10-dmz-bps-in.last(0)}
Out : {net-pan-fw:net-pan-fw-eth1-3-10-dmz-bps-out.last(0)}
编辑,几年后。
在 Zabbix 6.4 中,宏语言完全改变了。
down: {?avg(/sw-hq/net.if.out[ifHCOutOctets.5],5m)}
up: {?avg(/sw-hq/net.if.in[ifHCInOctets.5],5m)}
现在的格式如下:
/host/oid branch[leaf node]
{?function(/host/oid branch[leaf node], functionargument2)}