Определите вычисляемый элемент в Zabbix для открытия LXC в Proxmox, чтобы вычислить процент использования RAM.

Вопрос или проблема

Я использую Zabbix (6.4.10) с плагином Proxmox для мониторинга сервера 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}]),
но я получил сообщение об ошибке, когда протестировал это:
Не удается оценить функцию: элемент "/proxmox/proxmox.lxc.mem[{#LXC.ID}]" не существует при "last(//proxmox.lxc.mem[{#LXC.ID}])/last(//proxmox.lxc.memtotal[{#LXC.ID}])".

И я не понимаю, почему. Документация показывает несколько примеров вычисляемых элементов, но не в рамках правил обнаружения. Возможно, моя синтаксис неправильен, но я не нашел подходящего примера, чтобы помочь мне.

Прототипы элементов, определенные в обнаружении Proxmox LXC:

Прототипы элементов, определенные в обнаружении Proxmox LXC

Моя попытка определить вычисляемый элемент:

Моя попытка определить вычисляемый элемент

Мой ответ предполагает, что вы используете этот шаблон.

Первый пункт: элемент proxmox.lxc.memtotal[{#LXC.ID}] не существует.

Этот шаблон вполне подходит для мониторинга хостов ProxMox VE. Однако этот шаблон довольно “сложный” и разделен на несколько подсчастей / хостов.

Согласно предоставленным вами скриншотам, кажется, что вы находитесь в хосте LXC discovery. Однако оба элемента proxmox.lxc.mem[{#LXC.ID}] и proxmox.lxc.maxmem[{#LXC.ID}] относятся к хосту Proxmox VE по HTTP. Вы можете проверить с помощью:

item:   
  host: 'Proxmox VE по HTTP'   
  key: 'proxmox.lxc.mem[{#LXC.ID}]'

[...]

item:   
  host: 'Proxmox VE по HTTP'   
  key: 'proxmox.lxc.maxmem[{#LXC.ID}]'

Делая это:

last(//proxmox.lxc.mem[{#LXC.ID}])/last(//proxmox.lxc.memtotal[{#LXC.ID}])

Движок Zabbix предполагает, что элементы находятся в хосте LXC discovery и не может их найти.

Это переводится как:

last(/Обнаружение LXC/proxmox.lxc.mem[{#LXC.ID}])/last(/Обнаружение LXC/proxmox.lxc.memtotal[{#LXC.ID}])

Это не может работать так.

Заключение

Вам нужно сделать что-то вроде:

100*last(/Proxmox VE по HTTP/proxmox.lxc.mem[{#LXC.ID}])/last(/Proxmox VE по HTTP/proxmox.lxc.maxmem[{#LXC.ID}])

Я добавил 100* в начале, так как это процент.

Ответ или решение

Вопрос, связанный с использованием Zabbix для мониторинга LXC-контейнеров на сервере Proxmox, требует внимательного подхода, чтобы корректно определить рассчитанный элемент для вычисления процента использования оперативной памяти. Давайте рассмотрим все детали.

Введение в задачу

Вы используете Zabbix (версия 6.4.10) вместе с плагином для Proxmox для мониторинга вашего сервера и связанных с ним LXC-контейнеров. Чтобы интегрировать показания использования RAM в график Grafana, необходимо создать рассчитанный элемент, который будет вычислять процент использования оперативной памяти, основываясь на двух элементах:

  • proxmox.lxc.maxmem[{#LXC.ID}] — общий объем памяти в байтах;
  • proxmox.lxc.mem[{#LXC.ID}] — объем используемой памяти в байтах.

Ошибка, с которой вы столкнулись

При попытке использовать следующую формулу для расчета процента использования оперативной памяти:

last(//proxmox.lxc.mem[{#LXC.ID}])/last(//proxmox.lxc.memtotal[{#LXC.ID}])

вы получили сообщение об ошибке, указывающее на то, что элемент proxmox.lxc.memtotal[{#LXC.ID}] не существует. Это связано с тем, что в вашем источнике нет данного элемента, и Zabbix не может его найти.

Правильный подход к созданию рассчитанного элемента

  1. Понимание структуры элементов: Важно понимать, что оба используемых элемента принадлежат к хосту Proxmox VE by HTTP, а не к хосту обнаружения LXC. Следовательно, ваша формула должна ссылаться на полные имена элементов, учитывающие этот хост.

  2. Создание рассчитываемого элемента: Используйте следующую корректную формулу для расчета процента использования оперативной памяти:

100 * last(/Proxmox VE by HTTP/proxmox.lxc.mem[{#LXC.ID}]) / last(/Proxmox VE by HTTP/proxmox.lxc.maxmem[{#LXC.ID}])

Объяснение формулы

  • Умножение на 100: Мы умножаем на 100, чтобы перевести дробное значение в проценты.
  • last(): Эта функция используется для получения последних данных по соответствующим элементам, что позволяет получить актуальные показания.
  • Корректные имена хостов: Убедитесь, что вы ссылаетесь на элементы с учетом их принадлежности к конкретному хосту, чтобы избежать ошибок.

Заключение

Теперь у вас есть формула, которая правильно считает процент использования оперативной памяти для LXC-контейнеров на вашем сервере Proxmox. Не забывайте проверять, чтобы все элементы были правильно настроены и активно собирали данные, прежде чем они будут визуализированы в Grafana.

Это решение не только улучшает работу с Zabbix, но и позволяет более эффективно мониторить ресурсы ваших контейнеров, предоставляя актуальную информацию для принятия решений.

SEO элементы

Для оптимизации этого текста можно добавить ключевые слова, такие как "Zabbix", "проверка памяти Proxmox", "LXC-контейнеры", "расчитанный элемент Zabbix", что поможет привлечь внимание к технически ориентированным пользователям и разработчикам, ищущим решения для мониторинга ресурсов в виртуализированных средах.

Оцените материал
Добавить комментарий

Капча загружается...