Cacti — классическая система мониторинга, которая строит графики по данным SNMP и хранит их в RRD-файлах. Она не такая модная, как Grafana, зато годами работает на слабом железе и подходит для сети коммутаторов и ИБП. Ниже — установка, добавление устройства, настройка опроса и разбор типичных сбоев.

Что такое Cacti и как он работает

Cacti — веб-приложение на PHP, которое опрашивает устройства по SNMP, складывает числа в RRD-файлы и рисует по ним графики. В отличие от систем с метриками в базе, здесь каждая точка рассчитана заранее: RRD усредняет значения за час, день, неделю и год. Это экономит место, но «сырые» данные за прошлый месяц уже не достать.

Актуальная ветка — 1.2.x (на момент написания 1.2.31). Требования: PHP 8.2+, MariaDB 10.5+ или MySQL 8.0+, RRDtool 1.7+, net-snmp. Опрос выполняет процесс poller, который запускает cron; веб-интерфейс лишь настраивает шаблоны и показывает результат.

Движков опроса два: встроенный cmd.php на PHP и Spine на C. Spine быстрее в разы и практически обязателен, если устройств больше десятка.

Установка в Debian и Ubuntu

sudo apt update
sudo apt install cacti cacti-spine mariadb-server
sudo apt install snmp snmpd

Пакет создаст базу и пользователя, спросив пароль через dbconfig. Установка завершается в браузере по адресу http://адрес-сервера/cacti; логин admin, пароль нужно сменить сразу.

Проверьте, что службы поднялись, а poller отрабатывает вручную:

systemctl status mariadb apache2
sudo -u www-data php /usr/share/cacti/site/poller.php --force

Команда должна завершиться без ошибок и обновить файлы в /var/lib/cacti/rra.

Готовим SNMP на устройстве

На устройстве нужен агент net-snmp с доступом только на чтение. Минимальный /etc/snmp/snmpd.conf:

rocommunity monitoring 192.168.10.5
syslocation Server room
syscontact admin@example.org
agentaddress udp:161

Здесь monitoring — community, 192.168.10.5 — адрес сервера Cacti. В продакшене лучше SNMPv3: community передаётся открытым текстом. Проверка с сервера мониторинга:

snmpwalk -v2c -c monitoring 192.168.10.1 sysUpTime.0
snmpwalk -v3 -l authPriv -u cacti -a SHA -A 'authpass' -x AES -X 'privpass' 192.168.10.1 sysDescr.0

Если ответа нет, проверьте firewall (UDP 161), маршрут и интерфейс, который слушает snmpd. Таймаут в одну-две секунды на медленном канале — отдельная причина пустых графиков.

Добавляем устройство и графики

Console → Devices → Add. Укажите hostname или IP, версию SNMP, community, таймаут и число повторов. Сохраните и нажмите «Create Graphs for this Host»: Cacti предложит подходящие шаблоны. Для Linux обычно берут SNMP — Get Mounted Partitions и Interface — Traffic, для коммутаторов — Interface — Traffic и Cisco CPU.

Шаблоны — основа Cacti. Device Template задаёт набор graph и data templates, Data Template описывает OID и тип данных, Graph Template — оформление. Встроенные шаблоны не редактируйте: клонируйте копию, иначе обновление пакета затрёт изменения.

После создания графиков проверьте RRD-файл:

rrdtool info /var/lib/cacti/rra/host_traffic_in_8.rrd | head -20
rrdtool fetch /var/lib/cacti/rra/host_traffic_in_8.rrd AVERAGE -s -1h

Poller и настройка Spine

Cacti не опрашивает сеть сам: его запускает cron. В Debian готового задания нет — в /etc/cron.d/cacti лежит только закомментированный пример обновления CSRF-ключа. Добавьте строку сами, иначе графики останутся пустыми.

*/5 * * * * www-data php /usr/share/cacti/site/poller.php > /dev/null 2>&1
sudo -u www-data /usr/sbin/spine --conf=/etc/cacti-spine.conf

Интервал в cron должен совпадать с настройкой Poller, иначе графики будут с провалами.

Для Spine укажите путь к бинарнику в Settings → Paths (/usr/sbin/spine) и выберите его в Settings → Poller. Число процессов берите равным числу ядер, потоков на процесс — 10–15. Значения выше 50 вредят: устройства не успевают отвечать.

Диагностика типовых проблем

Пустые графики чаще всего означают, что данные не приходят. Смотрите логи /var/log/cacti/ и /var/log/apache2/error.log, затем проверяйте SNMP вручную тем же OID, который указан в шаблоне.

sudo tail -50 /var/log/cacti/poller-error.log
sudo grep -Ei 'timeout|unreachable|SNMP' /var/log/cacti/poller-error.log
sudo -u www-data php /usr/share/cacti/cli/rebuild_poller_cache.php
timedatectl

Отдельная история — неправильный OID в шаблоне. Сверьте его через snmpget: если счётчик отдаёт значение, а график пуст, проблема в типе данных или в интервале опроса.

snmpget -v2c -c monitoring 192.168.10.1 .1.3.6.1.2.1.2.2.1.10.3
rrdtool lastupdate /var/lib/cacti/rra/switch_gi1_8_traffic_in_1234.rrd

Рваные линии — признак таймаутов; «poller did not finish» — не хватает времени или процессов. Разъехавшееся время ломает графики сильнее, чем кажется, поэтому проверьте синхронизацию и часовой пояс.

Проверить скорость ответа устройства удобно обычным time:

time snmpwalk -v2c -c monitoring -t 2 -r 1 192.168.10.1 .1.3.6.1.2.1.2.2.1.10

Безопасность и резервные копии

Веб-интерфейс Cacti — административная панель, поэтому закройте его от внешней сети, включите HTTPS и заведите отдельного пользователя БД с правами только на базу cacti. Обновляйте ветку 1.2.x: в релизах регулярно закрывают уязвимости зависимостей.

mysqldump --single-transaction -u cacti -p cacti > /backup/cacti-$(date +%F).sql
sudo tar czf /backup/cacti-rra.tar.gz /var/lib/cacti/rra

База и RRD-файлы должны копироваться согласованно, иначе часть графиков после восстановления будет пустой. Простой вариант — остановить cron на время копирования.

Чек-лист

  • Установлены cacti, cacti-spine, RRDtool и net-snmp.
  • SNMP проверен с сервера до каждого устройства.
  • Интервал cron совпадает с настройкой Poller.
  • Spine выбран и путь к бинарнику указан.
  • Настроены HTTPS и ограничение доступа к панели.
  • Есть регулярный бэкап базы и каталога rra.

Итог

Cacti — не самый современный интерфейс, но надёжный рабочий инструмент для сетевого мониторинга. Он нетребователен к ресурсам, хорошо документирован и предсказуемо хранит историю. Если нужно решение «поставил и забыл» для десятков коммутаторов и серверов, связка Cacti и Spine остаётся практичным выбором.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте