Ad Widget

Collapse

CGROUP memory controller monitoring.

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • daevy
    Member
    • Apr 2009
    • 37

    #1

    CGROUP memory controller monitoring.

    решение по мониторингу контрольных групп в Zabbix.
    Мониторинг осуществляется посредством скрипта на Bash и следовательно не требует специфичных зависимостей. Скрипт написан с учетом использования файловой системы /sys - родного интерфейса взаимодействия с контрольными группами. Поэтому устанавливать какие-либо дополнительные библиотеки (libcgroup) тоже необязательно.
    Для работы необходимы полностью рабочие memory CGROUPS. Мониторинг осуществляется с помощью опроса соответствующих ключей в файловой системе /sys/fs/cgroups/memory.

    Зачем мониторить? Предполагается если мы ограничили какое-либо приложение в памяти, то следует знать насколько хорошо оно себя чувствует в ограниченном состоянии, нет ли попыток превысить лимит (memory.failcnt), не попадает ли система в oom состояние (memory.oom_control), насколько использование памяти подходит к ограничению и т.п.

    Что можно мониторить:
    любые параметры в любых группах подсистемы 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 файла.

    Как мониторить:
    Скрипт нужно скачать на тот хост который будет мониториться и прописать его в 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 описанными параметрами, триггерами и графиками можно взять здесь.

    оригинал статьи здесь

    P.S. материал (скрипт и шаблон) предоставляется как есть, без каких-либо ограничений по использованию и модификации.
Working...