Вопрос или проблема
Я использую 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.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 не может его найти.
Правильный подход к созданию рассчитанного элемента
-
Понимание структуры элементов: Важно понимать, что оба используемых элемента принадлежат к хосту
Proxmox VE by HTTP
, а не к хосту обнаружения LXC. Следовательно, ваша формула должна ссылаться на полные имена элементов, учитывающие этот хост. -
Создание рассчитываемого элемента: Используйте следующую корректную формулу для расчета процента использования оперативной памяти:
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", что поможет привлечь внимание к технически ориентированным пользователям и разработчикам, ищущим решения для мониторинга ресурсов в виртуализированных средах.