我正在使用带有 Proxmox 插件的 Zabbix (6.4.10) 来监控 proxmox 服务器(和 LXC 容器)。在 LXC 容器的发现规则中,有两个与 RAM 相关的项目原型:
proxmox.lxc.maxmem[{#LXC.ID}]
:内存总量(以字节为单位)proxmox.lxc.mem[{#LXC.ID}]
:内存使用量(以字节为单位)
我想要实现的是定义一个计算项目原型来获取已用 RAM 的百分比(我想在 Grafana 仪表板中显示)。
我尝试使用这个公式:
last(//proxmox.lxc.mem[{#LXC.ID}])/last(//proxmox.lxc.memtotal[{#LXC.ID}])
但是当我测试它时我收到此错误消息:
Cannot evaluate function: item "/proxmox/proxmox.lxc.mem[{#LXC.ID}]" does not exist at "last(//proxmox.lxc.mem[{#LXC.ID}])/last(//proxmox.lxc.memtotal[{#LXC.ID}])".
我不明白为什么。文档显示了一些计算项的示例,但不在发现规则中。也许我的语法不好,但我没有找到相关的例子来帮助我。
Proxmox LXC 发现中定义的项目原型:
我尝试定义一个计算项:
答案1
我的回答假设你正在使用这模板。
第一点:项目proxmox.lxc.memtotal[{#LXC.ID}]
不存在。
此模板对于主机监控来说相当不错ProxMox VE
。但是,此模板相当“复杂”,并且被分成几个子部分/主机。
根据您提供的屏幕截图,您似乎位于主机中LXC discovery
。但是,项目proxmox.lxc.mem[{#LXC.ID}]
和proxmox.lxc.maxmem[{#LXC.ID}]
属于 Proxmox VE by HTTP
主机。你可以检查:
item:
host: 'Proxmox VE by HTTP'
key: 'proxmox.lxc.mem[{#LXC.ID}]'
[...]
item:
host: 'Proxmox VE by HTTP'
key: 'proxmox.lxc.maxmem[{#LXC.ID}]'
通过做这个 :
last(//proxmox.lxc.mem[{#LXC.ID}])/last(//proxmox.lxc.memtotal[{#LXC.ID}])
Zabbix 引擎假设项目在LXC discovery
主机中,但找不到它们。
翻译如下:
last(/LXC discovery/proxmox.lxc.mem[{#LXC.ID}])/last(/LXC discovery/proxmox.lxc.memtotal[{#LXC.ID}])
它不能那样工作。
结论
你需要做类似的事情:
100*last(/Proxmox VE by HTTP/proxmox.lxc.mem[{#LXC.ID}])/last(/Proxmox VE by HTTP/proxmox.lxc.maxmem[{#LXC.ID}])
我把它添加100*
到开头,因为它是一个百分比。