Zabbix 2.0: переводим двух клиентов с Nagios и Cacti
Zabbix 2.0 вышел в апреле с новым веб-интерфейсом и low-level discovery. Переводим двух клиентов с Nagios/Cacti - и обнаруживаем, что LLD меняет рабочий процесс всерьёз.
Zabbix 2.0 вышел в апреле 2012 с переработанным веб-интерфейсом, low-level discovery и улучшенным масштабированием до 100k+ узлов
Zabbix 2.0 вышел пару недель назад, и мы решили не откладывать: у двух клиентов мониторинг давно требовал пересмотра. Один сидел на Nagios с Cacti для графиков, второй - на голом Nagios без нормального визуала вообще. Оба варианта работали, но поддерживать их становилось всё дороже по времени.
Почему именно сейчас
Nagios у первого клиента разросся до нескольких сотен check-команд в конфигах, которые правили руками. Каждый новый сервер - это правка нескольких файлов, перезагрузка демона и надежда, что ничего не забыли. Cacti рядом держал RRD-графики, но его шаблоны для сетевых интерфейсов мы тоже добавляли вручную. Стандартная картина: два инструмента, слабо связанных между собой, и операционные расходы, которые растут вместе с инфраструктурой.
У второго клиента всё было проще и хуже одновременно: Nagios без Cacti, графиков нет, алерты есть, но понять тренд по alert-истории нельзя. «Мониторинг работает» - в смысле пищит когда плохо. Этого мало.
Zabbix мы смотрели и раньше, но версии 1.x оставляли смешанное впечатление: идея хорошая, интерфейс неудобный, шаблоны надо делать через веб-кликалку. С выходом 2.0 картина изменилась заметно.
Что изменилось в 2.0
Три момента, которые реально влияют на работу:
Новый веб-интерфейс. Не косметический рефреш, а структурный. Карты сетей, дашборды и настройка шаблонов стали значительно удобнее. Это субъективно, но инженер тратит в интерфейсе часы каждую неделю - субъективное удобство конвертируется в реальное время.
Low-level discovery. Вот это - принципиальное изменение. LLD позволяет описать правило обнаружения один раз: допустим, «найди все сетевые интерфейсы на хосте, кроме lo». Zabbix сам опросит хост, получит список интерфейсов и создаст элементы данных и триггеры для каждого - автоматически. То же самое для дисков, файловых систем, томов. Добавляется новый диск на сервере - через следующий цикл discovery он появляется в мониторинге сам, без нашего участия.
Масштабирование. Zabbix 2.0 официально заявляет поддержку схем до 100k+ узлов. Нам такое не нужно, но это говорит о том, что архитектура proxy и distributed monitoring в этой версии доработана. Для клиентов с географически распределёнными офисами это важно.
Как шёл перевод
Начали с первого клиента - он меньше по размеру, проще в плане согласований. Поставили Zabbix 2.0 на отдельную виртуалку на CentOS 6, параллельно с работающим Nagios. Импортировали хосты скриптом - Zabbix поддерживает XML-импорт, список хостов и IP перегнали из Nagios-конфигов простым парсером на Python.
Шаблоны для Linux-хостов взяли из комьюнити-библиотеки Zabbix, подкорректировали под наши пороги. На Windows-хостах - аналогично, через Zabbix-агент.
Потом подключили LLD для файловых систем и сетевых интерфейсов. Правило simple: тип discovery - «файловые системы», фильтр на тип ext4|xfs|ntfs, прототип элемента данных с {#FSNAME} в ключе. Zabbix сам обошёл все хосты и создал элементы. На примерно 80 серверах это заняло минут 20 фонового обхода - против нескольких часов ручной работы в Nagios.
Параллельно работал Cacti. Его мы отключили последним, уже когда убедились, что графики в Zabbix за две недели накопили достаточно истории для сравнения.
Второй клиент пошёл по тому же сценарию, только быстрее - Nagios там был значительно проще.
Что не понравилось
Справедливости ради: несколько моментов потребовали больше времени, чем ожидали.
Zabbix-агент на Windows. Установка и конфигурация не сложнее Nagios NSClient++, но документация по тонким настройкам агента под Windows 2008 R2 на тот момент неполная - пришлось смотреть в форуме и копаться в исходниках.
Триггерные выражения. Синтаксис мощный, но непривычный после Nagios. {host:item.last(0)}>90 читается не сразу. Несколько коллег потратили время на то, чтобы выражения с min() и avg() начали работать ожидаемо.
Импорт из Cacti. Встроенного инструмента импорта данных из RRD нет. Историческую статистику из Cacti мы не переносили - договорились с клиентом, что старые данные останутся в Cacti только для справки, Zabbix начинает с нуля.
Что получилось
Оба клиента сейчас на Zabbix 2.0, Nagios отключён. Cacti у первого клиента тоже убрали. LLD работает так, как ожидали: на прошлой неделе у одного клиента добавили новый диск на файловый сервер - он появился в мониторинге сам, никто ничего не трогал в Zabbix.
Операционная нагрузка на добавление новых хостов снизилась - сейчас это занимает добавление хоста и назначение шаблонов, без правки конфигов вручную. LLD дальше делает своё дело.
Полноценных выводов о надёжности делать рано - прошло слишком мало времени. Но первое впечатление от 2.0 положительное. Это часть работы, которую мы делаем в рамках сопровождения инфраструктуры.