Мониторинг устройств FlashCache в Linux.
Третья, заключительная статья, из цикла про FlashCache. Здесь будет рассмотрено как настроить мониторинг FlashCache устройств в Zabbix.Модуль flashcache предоставляет статистику в файлах flashcache_stats и flashcache_errors в /proc. Также статистику можно получить используя команду dmsetup. Именно на эти средства и будет опираться мониторинг flashcache-устройств. Для каждого flashcache-устройства доступна своя статистика. Для сбора данных будем использовать bash скрипты которые будут по нашему запросу дергать необходимые данные. При реализации мониторинга следует учитывать и момент создания шаблона. Шаблон нужно сделать таким образом, чтобы в нем не было привязки к имени flashcache-устройства. В таком случае, можно нумеровать устройства. Допустим у нас три flashcache-устройства и если посмотреть в каталог /proc/flashcache/ то можно увидеть три каталога на каждое устройство, вот от этого и будем отталкиваться.
# ls -l /proc/flashcache/
total 0
-r--r--r-- 1 root root 0 Sep 18 17:13 flashcache_version
dr-xr-xr-x 2 root root 0 Sep 18 17:13 sdb+db
dr-xr-xr-x 2 root root 0 Sep 18 17:13 sdc+index
dr-xr-xr-x 2 root root 0 Sep 18 17:13 sdd+app
Таким образом запрашивая только каталоги и выбирая sed'ом номер строки мы будем обращаться за статистикой определенного устройства. Указывая номер строки-устройства в ключе, мы получим данные по соответствующему устройству. Файлы статистики внутри очень просты для обработки grep'ом и cut'ом. Извлечь из них данные не составит много труда.
Создаем файл конфигурации для zabbix и подгружаем его. После чего перезапускаем zabbix.
# vi /etc/zabbix/flashcache.conf
#сбор статистики Flashcache модуля.
# $1 - номер директории из /proc/flashcache. В ней содержится имя блочного устройства Flashcache
# $2 - название параметра из файла статистики.
UserParameter=flashcache.stat[*],grep -m1 -oE "$2=[0-9]+" $(ls -1d /proc/flashcache/*/ |sed -n "$1"p)/flashcache_stats |cut -d= -f2
UserParameter=flashcache.err[*],grep -m1 -oE "$2=[0-9]+" $(ls -1d /proc/flashcache/*/ |sed -n "$1"p)/flashcache_errors |cut -d= -f2
# следующие данные берутся из dmsetup table DEVNAME
# size и used: единица измерения Килобайты
# pused: единица измерения проценты
# $1 - имя flashcache-устройства
UserParameter=flashcache.size[*],echo $(($(sudo dmsetup table $1 |grep -oE 'total blocks\([0-9]+\)' |grep -oE '[0-9]+') * $(sudo dmsetup table $1 |grep -oE 'data block size\([0-9]+' |grep -oE '[0-9]+')))
UserParameter=flashcache.used[*],echo $(($(sudo dmsetup table $1 |grep -oE 'cached blocks\([0-9]+\)' |grep -oE '[0-9]+') * $(sudo dmsetup table $1 |grep -oE 'data block size\([0-9]+' |grep -oE '[0-9]+')))
UserParameter=flashcache.pused[*],sudo dmsetup table $1 |grep -oE 'cache percent\([0-9]+\)' |grep -oE '[0-9]+'
# echo 'Include=/etc/zabbix/flashcache.conf' >> /etc/zabbix/zabbix_agentd.conf
# /etc/init.d/zabbix-agentd restart
Также необходимо разрешить выполнение dmsetup из под аккаунта zabbix. Это необходимо для получения статистики связанной с кэшем.
# vi /etc/sudoers
zabbix ALL=(ALL) NOPASSWD: /sbin/dmsetup
Проверяем работу с zabbix сервера, запросим общее количество чтений
# zabbix_get -s 10.101.15.1 -k flashcache.stat[1,reads]
651468500
Отлично, данные отдаются как и положено.
Теперь для мониторинга нам доступны следующие данные на основе которых мы будем строить графики:
- общее число операций чтения и записи;
- число операций чтения из кэша;
- процентное отношение операция чтения из кэша;
- объем чтения и записи на жестких дисках;
- объем чтения и записи на SSD дисках;
- объем чтения и записи несвязанный с кэшированием;
- объем последовательной записи и чтения;
- ошибки чтения возникшие на жестких и SSD дисках;
- полный размер кэша и объем данных в кэше;
- процентное отношение данных в кэше.
Теперь можно назначить шаблон на сервер с flashcache устройством.
На главную "Virtualizing Linux"
Комментариев нет:
Отправить комментарий