Cacti и SNMP: добавляем графики к Nagios и начинаем видеть деградацию раньше алерта
Nagios говорит «упало» - но не «почему». Ставим Cacti 0.8.6, настраиваем SNMP-опрос каждые 5 минут и получаем графики CPU, RAM и трафика на всех узлах.
Cacti 0.8.6 выходит и закрепляется как удобный фронтенд к RRDtool для мониторинга трафика и ресурсов в корпоративных сетях
Nagios у нас работает давно. Проверки каждые три минуты, оповещения по почте, дежурная схема. В целом устраивает - знаем, что упало и когда. Но раз за разом натыкались на один и тот же сценарий: приходит алерт, открываем SSH, смотрим top и ifstat, чешем затылок. Сервер жив, но медленный. Диск нагружен. Или трафик на интерфейсе был нулевым полчаса назад. Это уже случилось, а Nagios только констатирует факт.
Вопрос «почему» Nagios не отвечает - он про состояние «жив/мёртв», а не про тренды. Решили закрыть этот пробел.
Почему Cacti
RRDtool сам по себе - штука мощная, но голая: надо писать скрипты опроса, скрипты генерации графиков, что-то придумывать с хранением. Cacti 0.8.6 - это готовый веб-фронтенд поверх RRDtool: добавляешь хост, выбираешь шаблоны, и через пять минут уже смотришь графики. Под капотом SNMP и RRDtool, сверху - нормальный браузерный интерфейс с деревом устройств и зумом по временным диапазонам.
Альтернативы смотрели: MRTG знаем хорошо, но у него одна большая проблема - только трафик, и интерфейс из девяностых. Cacti изначально делался как его замена, при этом умеет опрашивать произвольные OID: CPU, память, температуру, любые счётчики которые устройство отдаёт через SNMP. Это нам и нужно.
Как разворачивали
Поставили на отдельную машину рядом с Nagios-сервером - Apache, PHP, MySQL, RRDtool, сам Cacti. Установка без сюрпризов, документация достаточно подробная.
Дальше три шага на каждом узле:
Первое - SNMP. На Linux-хостах поставили net-snmp, прописали community string в snmpd.conf, закрыли доступ по IP. На сетевом оборудовании - Cisco и несколько управляемых свичей - SNMP уже был включён частично, дополнили настройки. На Windows-серверах включили SNMP через «Добавить/удалить программы» - там он с 2003-го идёт в комплекте, просто не всегда активирован.
Второе - шаблоны в Cacti. Для Linux-хостов взяли стандартные шаблоны из комплекта: ucd/net SNMP Host MIB - это CPU load, RAM, swap, дисковые счётчики. Для интерфейсов - IF-MIB, стандарт. Для Windows - Host Resources MIB. Для Cisco - стандартный шаблон с CPU и memory utilization.
Третье - расписание опроса. По умолчанию Cacti опрашивает каждые 5 минут через cron, данные складывает в RRD-файлы. Это именно тот интервал, при котором деградация начинает быть видна за час-полтора до того, как что-то упадёт всерьёз. Хотели попробовать опрос раз в минуту, но RRDtool под такой нагрузкой с текущим железом немного не нравится - пока оставили пять минут.
Что увидели
Честно - несколько неприятных открытий случилось в первые же две недели.
На одном из клиентских серверов обнаружили, что CPU load к 11 утра каждый рабочий день ползёт вверх и к полудню выравнивается. Не до критических значений, Nagios молчит - но паттерн очевидный. Покопались: оказалось, в 10:45 стартует задача резервного копирования SQL Server без какого-либо throttling. База среднего размера, бэкап занимает 15-20 минут и грузит процессор. Это работало так всегда, просто никто не видел. Перенесли задачу на ночь.
На другом объекте - небольшой офис, маршрутизатор Cisco - увидели, что входящий трафик на WAN-интерфейсе несколько раз в день резко вырастает на 10-15 минут. Nagios не чихнул: до лимита канала далеко. Но в эти же окна пользователи жаловались на «тормоза интернета». Раньше всё сводилось к «ну бывает». Теперь есть график, есть временные метки, есть разговор.
Что это меняет в работе
Nagios и Cacti - не конкуренты, они друг друга дополняют. Nagios - это «что и когда». Cacti - это «как вело себя до этого». Комбинация делает диагностику по-другому: когда приходит алерт, сразу открываем графики за последние 4 часа и видим, с какого момента что-то пошло не так.
Сейчас в Cacti у нас все серверы и всё активное сетевое оборудование, которое сопровождаем в рамках управляемой инфраструктуры. Добавление нового узла занимает 10-15 минут включая проверку SNMP. Шаблоны для типовых конфигураций уже готовы.
Пока единственное что хочется - это алерты прямо из Cacti по порогам, без Nagios-посредника. В текущей версии нативно такого нет, смотрим в сторону внешних скриптов поверх RRD или ждём, что появится в следующих релизах. Покрутим.