在 Zabbix 中为 Proxmox 的 LXC 发现定义计算项,以计算使用的 RAM 百分比

在 Zabbix 中为 Proxmox 的 LXC 发现定义计算项,以计算使用的 RAM 百分比

我正在使用带有 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 发现中定义的项目原型:

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*到开头,因为它是一个百分比。

相关内容