Мониторинг. · 15 min read · Nov 03, 2025
Как установить инструмент мониторинга Cacti SNMP на Debian 9
Этот учебник покажет вам, как установить и настроить инструмент мониторинга сети Cacti из исходников, чтобы гарантировать, что вы получите последнюю версию на Debian 9, кодовое имя Stretch.
Cacti — это веб-инструмент мониторинга сети, полностью с открытым исходным кодом, предназначенный для отображения графиков сети и системы через RRDtool. Он использует протокол SNMP (Simple Network Management Protocol) для сбора и мониторинга сетевого трафика с сетевых устройств, таких как коммутаторы, маршрутизаторы, серверы Linux, Unix и Windows или другие типы сетевых устройств, поддерживающих SNMP.
Требования
- Минимальная установка Debian 9 на физической машине или на виртуальном частном сервере.
- Статический IP-адрес, настроенный для одного из ваших сетевых интерфейсов.
- Доступ к учетной записи root или пользователю с привилегиями учетной записи root через sudo.
Начальная настройка
Перед тем как начать установку Cacti из исходников, сначала убедитесь, что ваша система соответствует всем программным требованиям для компиляции и установки Cacti. На первом этапе откройте файл списка источников Debian для редактирования с правами root и добавьте репозитории contrib и non-free, как показано в приведенном ниже фрагменте файла.
nano /etc/apt/sources.listпример файла sources.list:
*deb http://ftp.ro.debian.org/debian/ stretch main contrib non-free
deb-src http://ftp.ro.debian.org/debian/ stretch main
deb http://security.debian.org/debian-security stretch/updates main contrib non-free
****deb-src http://security.debian.org/debian-security stretch/updates main*
После завершения редактирования файла сохраните и закройте файл, а затем обновите свои системные репозитории и программные пакеты, чтобы включить новые пакеты, выполнив следующие команды.
apt updateapt upgrade
Далее выполните новую команду, чтобы установить некоторые необходимые утилиты, которые будут использоваться для дальнейшего управления вашей системой из командной строки.
apt install wget patch unzip zip bash-completionCacti — это веб-инструмент мониторинга, в основном написанный на языке программирования PHP на стороне сервера. Чтобы запустить скрипты php файла Cacti, необходимо установить и настроить веб-сервер, такой как Apache HTTP сервер, и интерпретатор PHP. Чтобы установить веб-сервер Apache и интерпретатор PHP вместе со всеми необходимыми модулями PHP, необходимыми для правильной работы Cacti, выполните следующую команду в консоли вашего сервера.
apt install apache2 libapache2-mod-php7.0 php7.0 php7.0-snmp php7.0-xml php7.0-mbstring php7.0-json php7.0-gd php7.0-gmp php7.0-zip php7.0-ldap php7.0-mcrypt
После установки Apache и PHP проверьте, работает ли веб-сервер и слушает ли он сетевые подключения на порту 80, выполнив следующую команду с правами root.
netstat –tlpnВ случае, если утилита netstat не установлена по умолчанию в вашей системе Debian, выполните следующую команду для ее установки.
apt install net-toolsПроверяя вывод команды netstat, вы можете увидеть, что демон apache слушает входящие сетевые подключения на порту 80.

Если у вас включен брандмауэр в вашей системе, такой как приложение брандмауэра UFW, вам следует добавить новое правило, чтобы разрешить HTTP-трафик проходить через брандмауэр, выполнив следующую команду.
ufw allow WWWили
ufw allow 80/tcpНаконец, проверьте, может ли веб-страница по умолчанию веб-сервера Apache отображаться в браузере вашего клиента, посетив IP-адрес вашей машины Debian через протокол HTTP, как показано на приведенном ниже изображении. Если вы не знаете свой IP-адрес машины, выполните команды ‘ifconfig‘ или ‘ip a‘. Мой IP в этой настройке: http://192.168.1.14
На следующем этапе нам нужно внести некоторые изменения в файл конфигурации PHP по умолчанию, чтобы убедиться, что переменная file_uploads включена, а настройка timezone PHP правильно настроена и соответствует вашему физическому местоположению системы. Откройте файл /etc/php/7.0/apache2/php.ini для редактирования и убедитесь, что следующие строки настроены следующим образом.
*file_uploads = On ****date.timezone = Europe/London*
Замените переменную часового пояса в соответствии с вашим физическим часовым поясом, проконсультировавшись со списком часовых поясов, предоставленным документацией PHP по следующей ссылке http://php.net/manual/en/timezones.php
После внесения необходимых изменений создайте файл php info и перезапустите демон apache, чтобы применить изменения, выполнив следующие команды.
echo ''| tee /var/www/html/info.phpsystemctl restart apache2Проверьте, правильно ли настроен часовой пояс PHP, посетив скрипт php info из браузера по следующему URL (как показано на приведенном ниже изображении). Прокрутите вниз до настройки даты, чтобы проверить настройку часового пояса php.
Инструмент мониторинга Cacti хранит конфигурации и собранные данные в базе данных RDBMS. В этом учебнике мы настроим Cacti с использованием базы данных MariaDB. Выполните следующую команду, чтобы установить сервер базы данных MariaDB и модуль PHP, необходимый для доступа к базе данных mysql.
apt install mariadb-server php7.0-mysql
После установки MariaDB проверьте, что демон работает и слушает сетевые подключения на localhost, порт 3306, выполнив команду netstat.
netstat –tlpn | grep mysqlЗатем войдите в консоль MySQL и защитите учетную запись root MariaDB, выполнив следующие команды.
mysql -h localhostuse mysql;
update user set plugin='' where user='root';
flush privileges;
exit
На следующем этапе защитите MariaDB, выполнив скрипт mysql_secure_installation, предоставленный установочным пакетом из репозитория Debian Stretch. При выполнении скрипта он задаст ряд вопросов для защиты базы данных MariaDB, таких как: смена пароля root MySQL, удаление анонимных пользователей, отключение удаленных входов root и удаление тестовой базы данных. Выполните скрипт, выполнив следующую команду, и убедитесь, что вы отвечаете “да” на все заданные вопросы, чтобы полностью защитить демон MySQL. Используйте вывод скрипта ниже в качестве руководства.
sudo mysql_secure_installationПРИМЕЧАНИЕ: РЕКОМЕНДУЕТСЯ ЗАПУСКАТЬ ВСЕ ЧАСТИ ЭТОГО СКРИПТА ДЛЯ ВСЕХ MariaDB СЕРВЕРОВ В ПРОИЗВОДСТВЕННОМ ИСПОЛЬЗОВАНИИ! ПОЖАЛУЙСТА, ВНИМАТЕЛЬНО ПРОЧИТАЙТЕ КАЖДЫЙ ШАГ! Чтобы войти в MariaDB и защитить ее, нам понадобится текущийпароль для пользователя root. Если вы только что установили MariaDB, ивы еще не установили пароль root, пароль будет пустым,поэтому вам просто нужно нажать Enter здесь. Введите текущий пароль для root (введите для отсутствия):Хорошо, успешно использован пароль, продолжаем... Установка пароля root гарантирует, что никто не сможет войти в MariaDBпользователь root без надлежащей авторизации. У вас уже установлен пароль root, поэтому вы можете безопасно ответить 'n'. Сменить пароль root? [Y/n] yНовый пароль:Повторите новый пароль:Пароль успешно обновлен!Перезагрузка таблиц привилегий.. ... Успех! По умолчанию установка MariaDB имеет анонимного пользователя, позволяя любомувойти в MariaDB без необходимости создания учетной записи пользователя дляних. Это предназначено только для тестирования и для того, чтобы установкапроходила немного легче. Вы должны удалить их перед переходом впроизводственную среду. Удалить анонимных пользователей? [Y/n] y ... Успех! Обычно root должен иметь возможность подключаться только с 'localhost'. Этогарантирует, что кто-то не сможет угадать пароль root из сети. Запретить удаленный вход root? [Y/n] y ... Успех! По умолчанию MariaDB поставляется с базой данных с именем 'test', к которой может получить доступ любой.Это также предназначено только для тестирования и должно быть удаленоперед переходом в производственную среду. Удалить тестовую базу данных и доступ к ней? [Y/n] y- Удаление тестовой базы данных... ... Успех!- Удаление привилегий на тестовую базу данных... ... Успех! Перезагрузка таблиц привилегий гарантирует, что все изменения, сделанные до сих пор,вступят в силу немедленно. Перезагрузить таблицы привилегий сейчас? [Y/n] y ... Успех!Очистка... Готово! Если вы завершили все вышеперечисленные шаги, ваша установка MariaDBдолжна быть теперь защищена. Спасибо за использование MariaDB!Чтобы протестировать безопасность MariaDB, попробуйте войти в базу данных из консоли без пароля root. Доступ к базе данных должен быть запрещен, если пароль для учетной записи root не предоставлен. Если пароль указан, процесс входа должен быть предоставлен в консоль MySQL, как показано на приведенном ниже скриншоте.
mysql -h localhost -u rootmysql -h localhost -u root –p
Находясь в базе данных MariaDB, создайте базу данных для установки Cacti и создайте пользователя, который будет использоваться для управления базой данных cacti, выполнив следующие команды. Замените пользователя и пароль базы данных cacti соответственно.
create database cacti;
grant all on cacti.* to 'cacti_user'@'localhost' identified by 'cacti_pass';
flush privileges;
exitТакже предоставьте права на выборку пользователю базы данных cacti для часового пояса MySQL, выполнив следующие команды. Это новое требование для установки и запуска последней версии Cacti.
mysql -u root -p mysql < /usr/share/mysql/mysql_test_data_timezone.sqlmysql -u root -p -e 'grant select on mysql.time_zone_name to cacti_user@localhost'
На следующем этапе откройте файл конфигурации сервера MySQL по умолчанию и добавьте следующие строки, как показано в приведенном ниже примере.
nano /etc/mysql/mariadb.conf.d/50-server.cnfДобавьте следующие строки в конец файла 50-server.cnf:
max_heap_table_size = 98M
tmp_table_size = 64M
join_buffer_size = 64M
innodb_buffer_pool_size = 485M
innodb_doublewrite = off
innodb_additional_mem_pool_size = 80M
innodb_flush_log_at_timeout = 3
innodb_read_io_threads = 32
innodb_write_io_threads = 16
```

Чтобы применить все изменения, которые мы сделали до сих пор, перезапустите демоны MySQL и Apache и проверьте, что демоны работают, выполнив следующие команды.
systemctl restart mysql apache2
systemctl status mysql apache2
## Настроить службу SNMP
Служба веб-мониторинга Cacti использует протокол SNMP для сбора данных и статистики устройств. Чтобы установить программу SNMP, службу демона SNMP и SNMP MIBS в вашей локальной системе Debian 9, выполните следующую команду с правами root.
apt install snmp snmpd snmp-mibs-downloader

Также установите стандартный инструмент ведения данных RRDtool, который используется Cacti для отображения графической функциональности.
apt install rrdtool

Далее отредактируйте файл конфигурации SNMP /etc/snmp/snmp.conf и закомментируйте строку "mibs", добавив хеш (#) перед строкой, как описано на приведенном ниже изображении.

Также настройте удаленный доступ демона SNMP и localhost, открыв файл snmpd.conf для редактирования и найдите и обновите следующие строки следующим образом:
nano /etc/snmp/snmpd.conf
Раскомментируйте строку, чтобы слушать подключения на всех интерфейсах
agentAddress udp:161,udp6:[::1]:161

Добавьте следующие строки, чтобы разрешить SNMP-запрос для вашей локальной сети через пароль *snmp_string*. Замените пароль строки сообщества snmp *snmp_string* и ваш сетевой адрес CIDR соответственно.
rocommunity snmp_string localhost
rocommunity snmp_string 192.168.1.0/25
**
При желании вы также можете изменить переменные contact и location, чтобы предоставить информацию о вашем сервере. Эта информация отображается в области уведомлений Cacti, когда вы проверяете данные о вашем сервере. Также в области уведомлений Cacti отображаются имя хоста вашей системы, версия ядра и время работы системы.
Чтобы изменить эту информацию, отредактируйте строки sysLocation и sysContact в разделе системной информации и добавьте свои значения. По умолчанию для sysLocation и sysContact настроены следующие значения.

sysLocation Sitting on the Dock of the Bay
sysContact Me <[email protected]>
После внесения необходимых изменений в файлsnmpd.conf сохраните и закройте файл и перезапустите демон snmp, чтобы отразить изменения, выполнив следующие команды. Затем проверьте статус демона snmpd и порты, которые находятся в состоянии прослушивания.
systemctl restart snmpd.service
systemctl status snmpd.service
netstat -tulpn| grep snmp

Откройте порт брандмауэра для SNMP:
ufw allow 161/udp
Чтобы проверить, что демон SNMP работает как ожидалось и получает все значения SNMP под деревом памяти для localhost, выполните следующую команду.
snmpwalk -v 2c -c snmp_string localhost memory

## Установить Cacti-Spine
Cacti-Spine — это замена стандартному опросщику cmd.php, написанная на C для более быстрого времени выполнения. Чтобы скомпилировать и установить Cacti-Spine из исходников в Debian 9, сначала выполните следующую команду, чтобы установить все необходимые зависимости в систему.
apt install build-essential dos2unix dh-autoreconf help2man libssl-dev libmysql++-dev libmariadb-dev libmariadbclient-dev librrds-perl libsnmp-dev
Затем загрузите последнюю версию сжатого архива Cacti-Spine с помощью утилитыwget, извлеките архив tarball и войдите в извлеченный каталог cacti-spine, выполнив следующие команды.
wget https://www.cacti.net/downloads/spine/cacti-spine-latest.tar.gz
tar xfz cacti-spine-latest.tar.gz
cd cacti-spine-1.1.24/
Теперь скомпилируйте и установите утилиту Cacti-Spine из исходников, выполнив следующие команды.
./bootstrap
./configure
make
make install
Cacti-Spine будет установлен в системный путь/usr/local/spine/. Spine рекомендует установить бит SUID для двоичного файла spine, чтобы поддерживать ICMP ping-запросы.
chown root:root /usr/local/spine/bin/spine
chmod +s /usr/local/spine/bin/spine
Вам также необходимо подключить Spine к базе данных cacti, отредактировав файл конфигурации, как показано в приведенном ниже фрагменте файла.
nano /usr/local/spine/etc/spine.conf
пример файла spine.conf**. Замените учетные данные соответственно. Используйте те же учетные данные базы данных, что и для Cacti.
DB_Host localhost
DB_Database cacti
DB_User user_cacti
DB_Pass pass_cacti
DB_Port 3306
DB_PreG 0

## Установить Cacti
Чтобы установить Cacti из исходников в Debian 9, сначала загрузите и извлеките последнюю версию сжатого архива Cacti, затем скопируйте все извлеченные файлы в корневой путь веб-сервера Apache, выполнив следующие команды.
wget https://www.cacti.net/downloads/cacti-latest.tar.gz
tar xfz cacti-latest.tar.gz
cp -rf cacti-1.1.24/* /var/www/html/

На следующем этапе откройте файл конфигурации cacti и обновите следующие строки, чтобы отразить имя пользователя базы данных MySQL cacti, пароль, хост и путь URL соответственно, как показано в приведенном ниже примере.
nano /var/www/html/include/config.php
**** пример файла конфигурации Cacti *config.php*:
$database_type = ‘mysql’;
$database_default = ‘cacti’; $database_hostname = ‘localhost’;
$database_username = ‘cacti_user’; $database_password = ‘cacti_pass’;
$database_port = ‘3306’; $database_ssl = false;
Прокрутите вниз и измените переменную пути с “/cacti ” на “ / ”
$url_path = ‘/‘;


Затем вам нужно заполнить базу данных cacti, загрузив скрипт cacti.sql, расположенный в корневом каталоге вашего веб-сервера, и проверьте таблицы mysql cacti, выполнив следующие команды.
mysql -u cacti_user cacti -p < /var/www/html/cacti.sql
mysql -u cacti_user cacti -p -e ‘show tables’
Наконец, перед тем как начать установку Cacti через веб-интерфейс, выполните следующие команды, чтобы удалить файл index.html по умолчанию, установленный веб-сервером Apache, создать файл журнала для Cacti и предоставить пользователю времени выполнения Apache полные права на запись в путь установки cacti.
rm /var/www/html/index.html
touch /var/www/html/log/cacti.log
chown -R www-data:www-data /var/www/html/
** Начните установку Cacti через веб-интерфейс, посетив IP-адрес вашей системы или доменное имя из браузера и открыв следующий URL.
http://192.168.1.14/install
На первом экране отметьте "Принять лицензионное соглашение GPL" и нажмите кнопку "Далее", чтобы продолжить, как показано на приведенном ниже скриншоте.

На следующем экране прокрутите вниз и проверьте, прошли ли все системные требования установщик и нажмите кнопку "Далее", чтобы продолжить процесс установки.



Затем выберите Новый основной сервер в качестве типа установки и нажмите кнопку "Далее", чтобы продолжить.

Теперь проверьте, правильно ли установлены все критические бинарные местоположения и версии установщиком cacti. Также вам следует обновить путь к двоичному файлу Spine на /usr/local/spine/bin/spine. Вы можете выбрать классическую тему и нажать кнопку "Далее", чтобы продолжить.

На следующем экране установщик проверит разрешения корневого каталога веб-сервера Apache, чтобы проверить, разрешено ли веб-серверу выполнять записи в путь установки cacti. Если все необходимые пути доступны для записи, нажмите кнопку "Далее", чтобы продолжить.

Выберите все шаблоны из предоставленного списка и нажмите кнопку "Завершить", чтобы завершить установку.

После завершения процесса установки войдите в веб-интерфейс Cacti с помощью следующих учетных данных по умолчанию и замените пароль администратора по умолчанию на новый надежный пароль, как показано на следующих скриншотах.
Имя пользователя: admin
Пароль: admin


После входа в веб-интерфейс Cacti перейдите в Консоль -> Конфигурация -> Настройки -> Poller и измените тип опроса с cmd.php на spine бинарный файл, как показано на приведенном ниже изображении. Прокрутите вниз и нажмите кнопку Сохранить, чтобы применить изменения.

Затем перейдите в Консоль -> Конфигурация -> Настройки -> Пути и обновите Cacti-Spine, установив путь к файлу конфигурации на следующий путь /usr/local/spine/etc/spine.conf и нажмите кнопку "Сохранить", чтобы применить конфигурацию, как показано на приведенном ниже изображении.

Чтобы добавить новое устройство для мониторинга через SNMP, перейдите в Консоль -> Управление -> Устройства и нажмите на значок +, как показано на приведенном ниже изображении. Для демонстрационных целей мы добавим локальную машину для мониторинга Cacti через протокол SNMP.

Для вновь добавленного устройства Linux, которое будет мониториться через SNMP, добавьте описание для устройства, имя хоста, FQDN или IP-адрес мониторируемого устройства и выберите *Local Linux Machine* в качестве шаблона устройства. В параметрах SNMP выберите правильную версию SNMP (в данном случае мы будем использовать версию 2) и введите строку сообщества SNMP вашего устройства, как описано на приведенных ниже изображениях. Если порт SNMP не был изменен, оставьте значение порта по умолчанию, и когда закончите, прокрутите вниз и нажмите кнопку "Создать", чтобы добавить устройство в базу данных Cacti для мониторинга.


После того как устройство было добавлено в базу данных Cacti, в верхней части страницы устройства будет отображено резюме SNMP в случае, если устройство было правильно обнаружено и опрошено. Чтобы создать графики SNMP RRDTool для этого устройства, нажмите на ссылку Создать графики для этого устройства**, отметьте шаблоны графиков, которые вы хотите дополнительно изучить, и нажмите кнопку "Создать", чтобы перейти к следующему экрану, затем снова нажмите кнопку "Создать", чтобы завершить, как показано на следующих изображениях.



Чтобы визуализировать графики, перейдите в Консоль -> Управление -> Устройства, отметьте устройство, для которого вы хотите выполнить дальнейшие действия, и выберите Разместить на дереве (Дерево по умолчанию) из меню действий.

На новом экране оставьте пункт назначения по умолчанию и нажмите кнопку "Продолжить", чтобы завершить процесс, как показано на приведенном ниже изображении.

Наконец, чтобы опросщик Cacti начал собирать данные о мониторируемых устройствах, вам нужно добавить новую задачу cron, которая будет опрашивать устройства через SNMP каждые 5 минут. Добавьте запланированную задачу, чтобы она принадлежала и выполнялась пользователем времени выполнения Apache, выполнив следующую команду.
crontab –u www-data –e
Строка задания crontab:
/5 * /usr/bin/php /var/www/html/poller.php > /var/www/html/log/cron.log 2>&1

После того как вы добавили задачу cron для опроса, подождите около получаса, чтобы дать Cacti время на сбор данных, а затем перейдите на вкладку Графики в веб-интерфейсе Cacti. Разверните дерево по умолчанию, и графики, собранные с вашего мониторируемого компьютера, должны отображаться, как показано на приведенном ниже скриншоте.

На данный момент интерфейс Cacti можно получить из браузеров клиентов небезопасным способом через протокол HTTP. Вся конфиденциальная информация о ваших устройствах, а также учетные данные для входа в cacti передаются в открытом виде. Чтобы зашифровать трафик между браузерами клиентов и веб-интерфейсом Cacti, выполните следующие команды с правами root, чтобы включить конфигурацию SSL Apache.
a2enmod ssl
a2ensite default-ssl.conf
systemctl restart apache2
После этого перейдите в веб-интерфейс Cacti через протокол HTTPS. Поскольку веб-сервер Apache использует самоподписанный сертификат для шифрования соединения, в вашем браузере должно появиться сообщение об ошибке. Примите ошибку, и теперь вы можете безопасно получить доступ к веб-интерфейсу Cacti, как показано на следующем скриншоте.

Вот и все! Вы успешно установили и настроили Cacti из исходников в Debian 9. Для других пользовательских настроек, касающихся Cacti, посетите страницы документации по следующей ссылке https://docs.cacti.net/manual:100Get new posts in your inbox
No spam. Unsubscribe anytime.