Мониторинг за подсистемой memory для CGROUPS в Zabbix.
Для работы необходимы полностью рабочие memory CGROUPS. Мониторинг осуществляется с помощью опроса соответствующих ключей в файловой системе /sys/fs/cgroups/memory.
Что можно мониторить:
- любые параметры в любых группах подсистемы memory
- количество задач (tasks) и процессов (cgroup.procs) в группе;
- состояние oom_control (триггер under_oom);
- количество memory.failcnt;
- количество memory.memsw.failcnt;
- количество memory.kmem.tcp.failcnt;
- лимит на использование памяти memory.limit_in_bytes;
- текущее использование памяти memory.usage_in_bytes;
- лимит на использование памяти+свопа memory.memsw.limit_in_bytes;
- текущее использование памяти+свопа memory.memsw.usage_in_bytes;
- лимит на использование памяти tcp-буферов memory.kmem.tcp.limit_in_bytes;
- текущее использование памяти tcp-буферов memory.kmem.tcp.usage_in_bytes;
- данные memory.stat файла;
- данные memory.numa_stat файла.
Зачем мониторить? Предполагается если мы ограничили какое-либо приложение в памяти, то следует знать насколько хорошо оно себя чувствует в ограниченном состоянии, нет ли попыток превысить лимит (memory.failcnt), не попадает ли система в oom состояние (memory.oom_control), насколько использование памяти подходит к ограничению и т.п.
Как мониторить:
Скрипт нужно скачать на тот хост который будет мониториться и прописать его в zabbix_agentd.conf:
# echo 'UserParameter=cgroup.memory[*],/var/lib/zabbix/scripts/cgroup.memory.sh $1 $2 $3 $4' >> /etc/zabbix/zabbix_agentd.conf
Для опроса используется общий ключ cgroups.memory которому передается от 2 до 4 переменных: группа,параметр[,подпараметр[,NUMA-узел]]. Для обычных параметров нужно указать группу и имя параметра из файловой системы /sys/fs/cgroup/memory
Примеры использования:
количество задач в корневой группе:
Примеры использования:
количество задач в корневой группе:
# zabbix_get -s host -k cgroup.memory[/,tasks]
посмотреть лимит на использование памяти в группе app0:
посмотреть лимит на использование памяти в группе app0:
# zabbix_get -s host -k cgroup.memory[app0,memory.limit_in_bytes]
Для просмотра параметра из memory.stat необходимо дополнительно указать имя подпараметра в memory.stat.
количество памяти используемой в качестве страничного кэша:
# zabbix_get -s host -k cgroup.memory[app0,memory.stat,cache]
Для просмотра параметра из memory.numa_stat необходимо дополнительно указать имя подпараметра и номер NUMA-узла в memory.numa_stat.
просмотреть количество памяти используемой в NUMA-узле 1, в качестве анонимной:
# zabbix_get -s host -k cgroup.memory[/,memory.numa_stat,anon,1]
Далее в Zabbix можно настраивать шаблон для мониторинга соответствующих параметров.
Скрипт мониторинга можно взять здесь
Готовый шаблон c описанными параметрами, триггерами и графиками можно взять здесь.
На главную "Virtualizing Linux"