График использования памяти LXC-контейнера в Zabbix

Недавно я развернул мониторинг Zabbix на Linux-серверах, часть из которых являются физическими машинами, а часть — контейнерами LXC на этих физических машинах. Чтобы получать точные данные по ЦПУ и ОЗУ контейнера я воспользовался замечательным шаблоном Zabbix для LXC/LXD контейнеров(вот этот шаблон: https://github.com/scanterog/zabbix-lxd), поскольку, как известно, данные о памяти и процессоре в контейнере, полученные штатными способами, нe соответствуют действительности(они включают данные хост-системы).

Все отлично, видим использование ЦПУ и памяти в контейнере. Но меня попросили показывать использование памяти на графике по отношению к общему объему памяти контейнера, поскольку, по умолчанию, максимум по оси Y установлен в «calculated» и выглядит вот так:

zabbix container memory usage graph

А требовалось по оси Y отложить максимум в общий размер ОЗУ контейнера.

Решение довольно простое, но в шаблоне не предусмотрено. Хотя, для этого решений может быть много. Я воспользовался следующим: на хост системе в виртуально директории /sys хранится много полезной информации ядра. К примеру, данные из файла /sys/fs/cgroup/memory/lxc/{ID контейнера}/memory.limit_in_bytes. Итак, все что нужно сделать — это создать прототип item и поменять отображение графика.

Заходим в панель управления Zabbix, далее Настройка(Configuration) -> Шаблоны(Templates), в списке шаблонов находим наш Template LXD и кликаем по его разделу Обнаружение(Discovery):

Шаблон Zabbix для LXC контейнера

Обнаружение даннх Zabbix

Там будет единственное правило обнаружения. В нем кликаем по его подразделу «Прототипы элементов данных»(Item prototypes) и нажимаем кнопку «Создать прототип элементов данных»(Create Item Prototype).

Zabbix new Item Prototype

Тут основное, что нас интересует:

Имя(Name):                                                       Total memory {#HCONTAINERID}
Ключ(Key):                                                         lxd.mem[/{#HCONTAINERID},hierarchical_memory_limit]
Единицы измерения(Units):                        B
Группы элементов данных(Application): LXD

Остальное можно оставить по умолчанию, либо изменить по своему усмотрению. И нажимаем «Добавить»(Add).

Теперь необходимо вернуться к правилу обнаружения и выбрать там подраздел «Прототипы графиков»(Graph prototypes), где есть нужный нам прототип «Memory usage of {#HCONTAINERID} container», на котором и кликаем.

В этом прототипе графика в в настройке максимального значения оси Y нужно из раскрывающегося списка выбрать «Элемент данных»(Item) и далее указать созданный нами прототип данных Total memory {#HCONTAINERID}.

Zabbix LXC RAM Usage Prototype

Готово. Теперь уже в панели мониторинга в нашем графике видны изменения, теперь по оси Y отображается объем памяти нашего контейнера, в моем случае 8ГБ.

Zabbix LXC Memusage

Напишите комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *