Страницы

Сохранить статью у себя в соцсети:

вторник, 10 июля 2012 г.

§ CGROUPS memory controller monitoring via Zabbix.

Мониторинг за подсистемой memory для CGROUPS в Zabbix.

Рассмотрев тему о контроллере memory в CGROUPS предложу решение по мониторингу контрольных групп в Zabbix. Мониторинг осуществляется посредством скрипта на Bash и следовательно не требует специфичных зависимостей. Скрипт написан с учетом использования файловой системы /sys - родного интерфейса взаимодействия с контрольными группами. Поэтому устанавливать какие-либо дополнительные библиотеки (libcgroup) тоже необязательно.
Для работы необходимы полностью рабочие 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:
# 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"

Популярные сообщения

Профиль в Google+ Яндекс цитирования Яндекс.Метрика