Как установить и настроить Cacti в Ubuntu 18.04

Как установить и настроить Cacti в Ubuntu 18.04

 

Функциональность Zabbix похожа на Cacti, хотя Cacti больше подходит для построения сетевых графиков. В этом руководстве мы рассмотрим, как установить сервер cacti в Ubuntu 18.04.

Что такое Cacti?

Cacti — это полностью открытый инструмент сетевого мониторинга и построения графиков, который был разработан как интерфейсное приложение для стандартного отраслевого инструмента регистрации данных RRDtool. Cacti использует всю мощь функций хранения данных и построения графиков RRDTool. Вот некоторые хорошие особенности Cacti:

  • Быстрый опрос метрик
  • Поддержка нескольких методов сбора данных
  • Поддержка расширенных шаблонов графиков
  • Функциональность управления пользователями с помощью ACL

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

Как установить Cacti Server в Ubuntu 18.04

Cacti имеет ряд зависимостей, которые необходимо установить и настроить, прежде чем вы сможете развернуть сам сервер Cacti. В этом руководстве будет рассмотрена установка этих зависимостей одну за другой:

Шаг 1. Обновите систему и обновите все пакеты

Мы всегда начинаем с обновления серверных пакетов, чтобы избежать проблем с зависимостями:

sudo apt-get update
sudo apt-get upgrade

Шаг 2: Установите php и необходимые модули

Теперь нам нужно установить php и некоторые модули php, необходимые для cacti. Выполните следующие команды, чтобы получить все и установить.

$ sudo apt-get -y install php php-mysql php-curl php-net-socket \
php-gd php-intl php-pear php-imap php-memcache libapache2-mod-php \
php-pspell php-recode php-tidy php-xmlrpc php-snmp \
php-mbstring php-gettext php-gmp php-json php-xml php-common

Наиболее важные модули — это  php-snmp  и  php-mysql . Убедитесь, что они установлены. Вы можете проверить свою версию php с помощью команды:

# php -v
PHP 7.2.5-0ubuntu0.18.04.1 (cli) (built: May 9 2018 17:21:02) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.5-0ubuntu0.18.04.1, Copyright (c) 1999-2018, by Zend Technologies

Убедитесь, что вы установили правильный часовой пояс:

# grep date.timezone /etc/php/7.2/apache2/php.ini 
; http://php.net/date.timezone
date.timezone = "Africa/Nairobi"

Шаг 3. Установите веб-сервер Apache

Рекомендуемый по умолчанию веб-сервер для Cacti — Apache, установите его с помощью команд:

sudo apt-get -y install apache2

После установки Apache настройте базовую безопасность, разрешив только Prod ServerTokens.

sudo vim /etc/apache2/conf-enabled/security.conf

Изменить строку  25

ServerTokens Prod

Эта директива настраивает то, что вы возвращаете как HTTP-ответ сервера. Допустимые варианты: Full | OS | Minimal | Minor | Major | Prod.

Установите ServerName:

# grep ServerName /etc/apache2/apache2.conf
ServerName cacti.infoit.com.ua

Настройте администратора сервера на получение электронной почты в случае возникновения проблем.

# grep ServerAdmin /etc/apache2/apache2.conf
ServerAdmin [email protected]

Если у вас включен ufw, откройте порты http и https на брандмауэре.

# ufw allow http
Rule added
Rule added (v6

# ufw allow https
Rule added
Rule added (v6)

После внесения этих изменений вам необходимо перезапустить веб-службу apache:

sudo systemctl restart apache2

Шаг 3. Установите сервер MariaDB

Для установки MariaDB в Ubuntu используйте мое предыдущее руководство:

Как установить MariaDB в Ubuntu 18.04 и CentOS 7

Настройте базу данных MariaDB для Cacti

Добавьте следующие настройки в [mysqld] в файл /etc/mysql/mariadb.cnf

max_heap_table_size=128M
tmp_table_size=128M
join_buffer_size=64M
innodb_buffer_pool_size=512M
innodb_doublewrite=OFF
innodb_flush_log_at_timeout=3
innodb_read_io_threads=32
innodb_write_io_threads=16

Перезапустить службу mariadb

sudo systemctl restart mysql

Чтобы проверить любой из этих параметров, используйте оператор выбора  mysql  , например

MariaDB [(none)]> select @@tmp_table_size;
+------------------+
| @@tmp_table_size |
+------------------+
| 134217728 |
+------------------+
1 row in set (0.00 sec)

Или

MariaDB [(none)]> show variables like 'join_buffer_size';

После завершения установки сервера базы данных вам необходимо создать базу данных для Cacti:

$ mysql -u root -p
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 56
Server version: 10.3.7-MariaDB-1:10.3.7+maria~bionic-log mariadb.org binary distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database cacti;
Query OK, 1 row affected (0.000 sec)
MariaDB [(none)]> grant all privileges on cacti.* to [email protected]'localhost' identified by 'strongpassword';
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> flush privileges; 
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> exit 
Bye

Проверить подключение к базе данных:

$ mysql -u cacti_user -p
Enter password: 
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 178
Server version: 10.1.29-MariaDB-6 Ubuntu 18.04

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| cacti |
| information_schema |
+--------------------+
2 rows in set (0.00 sec)

MariaDB [(none)]>

Шаг 4: Установите SNMP и Cacti

Последний шаг установки пакета предназначен для пакетов Cacti и snmp. Функции Cacti зависят от  инструментов Snmp и  rrdtool . Установите эти пакеты с помощью команды:

sudo apt-get install snmp snmpd snmp-mibs-downloader rrdtool cacti cacti-spine

Когда вас попросят выбрать веб-сервер, выберите  Apache.

 +-------------------------+ Configuring cacti +--------------------------+
   | Please select the web server for which Cacti should be automatically   |
   | configured.                                                            |
   |                                                                        |
   | Select "None" if you would like to configure the web server manually.  |
   |                                                                        |
   | Web server:                                                            |
   |                                                                        |
   |                                apache2                                 |
   |                                lighttpd                                |
   |                                None                                    |
   |                                                                        |
   |                                                                        |
   |                                 <Ok>                                   |
   |                                                                        |
   +------------------------------------------------------------------------+

Для конфигурации базы данных выберите  нет  для ручной настройки, так как мы создали базу данных для кактусов.

 +---------------------------+ Configuring cacti +---------------------------+
 |                                                                           |
 | The cacti package must have a database installed and configured before    |
 | it can be used.  This can be optionally handled with dbconfig-common.     |
 |                                                                           |
 | If you are an advanced database administrator and know that you want to   |
 | perform this configuration manually, or if your database has already      |
 | been installed and configured, you should refuse this option.  Details    |
 | on what needs to be done should most likely be provided in                |
 | /usr/share/doc/cacti.                                                     |
 |                                                                           |
 | Otherwise, you should probably choose this option.                        |
 |                                                                           |
 | Configure database for cacti with dbconfig-common?                        |
 |                                                                           |
 |                    <Yes>                       <No>                       |
 |                                                                           |
 +---------------------------------------------------------------------------+

Дождитесь завершения установки, затем перейдите к настройке SNMP.

Шаг 5: Настройте SNMP

Начните с включения загрузки MIB, закомментировав следующую строку в  /etc/snmp/snmp.conf

+ Изменить

mibs :

к

# mibs :

Настройте имя сообщества SNMP, отредактировав  /etc/snmp/snmpd.conf

# On line 49 -  Uncomment and change to the name of community string to any name you like.
# This enable full access from localhost

rocommunity infoit localhost

Diable публичный доступ, комментируя следующие строки:

rocommunity public default -V systemonly
rocommunity6 public default -V systemonly

Чтобы

# rocommunity public default -V systemonly
# rocommunity6 public default -V systemonly

Перезапустить службу snmpd

sudo systemctl restart snmpd

Проверьте конфигурации snmp с помощью инструмента командной строки snmpwalk:

$ sudo snmpwalk -v 2c -c infoit localhost system
SNMPv2-MIB::sysDescr.0 = STRING: Linux cacti 4.15.0-22-generic #24-Ubuntu SMP Wed May 16 12:15:17 UTC 2018 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (11034) 0:01:50.34
SNMPv2-MIB::sysContact.0 = STRING: Me <[email protected]>
SNMPv2-MIB::sysName.0 = STRING: cacti
SNMPv2-MIB::sysLocation.0 = STRING: Sitting on the Dock of the Bay
SNMPv2-MIB::sysServices.0 = INTEGER: 72
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (1) 0:00:00.01
SNMPv2-MIB::sysORID.1 = OID: SNMP-MPD-MIB::snmpMPDCompliance
SNMPv2-MIB::sysORID.2 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
SNMPv2-MIB::sysORID.3 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
SNMPv2-MIB::sysORID.4 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.5 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup
SNMPv2-MIB::sysORID.6 = OID: TCP-MIB::tcpMIB
SNMPv2-MIB::sysORID.7 = OID: IP-MIB::ip
SNMPv2-MIB::sysORID.8 = OID: UDP-MIB::udpMIB
SNMPv2-MIB::sysORID.9 = OID: SNMP-NOTIFICATION-MIB::snmpNotifyFullCompliance
SNMPv2-MIB::sysORID.10 = OID: NOTIFICATION-LOG-MIB::notificationLogMIB
SNMPv2-MIB::sysORDescr.1 = STRING: The MIB for Message Processing and Dispatching.
SNMPv2-MIB::sysORDescr.2 = STRING: The management information definitions for the SNMP User-based Security Model.
SNMPv2-MIB::sysORDescr.3 = STRING: The SNMP Management Architecture MIB.
SNMPv2-MIB::sysORDescr.4 = STRING: The MIB module for SNMPv2 entities
SNMPv2-MIB::sysORDescr.5 = STRING: View-based Access Control Model for SNMP.
SNMPv2-MIB::sysORDescr.6 = STRING: The MIB module for managing TCP implementations
SNMPv2-MIB::sysORDescr.7 = STRING: The MIB module for managing IP and ICMP implementations
SNMPv2-MIB::sysORDescr.8 = STRING: The MIB module for managing UDP implementations
SNMPv2-MIB::sysORDescr.9 = STRING: The MIB modules for managing SNMP Notification, plus filtering.
SNMPv2-MIB::sysORDescr.10 = STRING: The MIB module for logging SNMP Notifications.
SNMPv2-MIB::sysORUpTime.1 = Timeticks: (1) 0:00:00.01
SNMPv2-MIB::sysORUpTime.2 = Timeticks: (1) 0:00:00.01
SNMPv2-MIB::sysORUpTime.3 = Timeticks: (1) 0:00:00.01
SNMPv2-MIB::sysORUpTime.4 = Timeticks: (1) 0:00:00.01
SNMPv2-MIB::sysORUpTime.5 = Timeticks: (1) 0:00:00.01
SNMPv2-MIB::sysORUpTime.6 = Timeticks: (1) 0:00:00.01
SNMPv2-MIB::sysORUpTime.7 = Timeticks: (1) 0:00:00.01
SNMPv2-MIB::sysORUpTime.8 = Timeticks: (1) 0:00:00.01
SNMPv2-MIB::sysORUpTime.9 = Timeticks: (1) 0:00:00.01
SNMPv2-MIB::sysORUpTime.10 = Timeticks: (1) 0:00:00.01

Не забудьте заменить  infoit  на имя строки вашего сообщества.

Шаг 6: Настройте Cacti Server

Отсюда мы должны настроить параметры базы данных для Cacti и начать настройку в веб-интерфейсе. Измените настройки db в файле  /usr/share/cacti/site/include/config.php.

# On line 49 - Change cacti database connection info
$database_type = "mysqli";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti_user";
$database_password = "strongpassword";
$database_port = "3306";
$database_ssl = false;

Замените  cacti_user пользователем базы данных, созданным на  шаге 3,  а  strongpassword — паролем пользователя базы данных cacti.

Импортировать схему базы данных cacti Mysql:

$ mysql -u cacti_user -p cacti < /usr/share/doc/cacti/cacti.sql 
Enter password:

Замените cacti_user на пользователя базы данных и cacti на имя базы данных.

Настройка часового пояса mysql для пользователя базы данных cacti

# mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
Enter password: 
Warning: Unable to load '/usr/share/zoneinfo/leap-seconds.list' as time zone. Skipping it.

Предоставьте пользователю базы данных cacti MySQL доступ к базе данных TimeZone:

# mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 202
Server version: 10.1.29-MariaDB-6 Ubuntu 18.04

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 
MariaDB [(none)]> GRANT SELECT ON mysql.time_zone_name TO [email protected];
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> exit
Bye

Настройте контроль доступа к сайту Cacti apache (необязательно):

Если вы хотите ограничить доступ к веб-интерфейсу Cacti, отредактируйте файл /etc/apache2/conf-available/cacti.conf и закомментируйте строку:

Require all granted

Затем настройте, как показано ниже:

# Change line 7
#Require all granted
Require host localhost
Require ip 192.168.1.0/24

Замените 192.168.1.0/24 своей доверенной подсетью. Вы также можете добавить один IP-адрес, как показано ниже:

Require ip 192.168.1.20
Require ip 172.16.20.30

Вам необходимо перезапустить службу apache после внесения вышеуказанных изменений,

$ sudo systemctl restart apache2

Установить права доступа к каталогу

sudo chown -R www-data:www-data  /opt/cacti/

Шаг 7: Начните начальную настройку Cacti

Откройте свой любимый веб-браузер и перейдите к « http: // (имя хоста или IP-адрес сервера Cacti) / cacti / » из клиентской системы, авторизованной на сервере Cacti.

Отметьте « Принять лицензионное соглашение GPL», затем нажмите кнопку « Начать », чтобы продолжить. Cacti проверит, все ли требования выполнены. Возможно, вам потребуется внести некоторые изменения в зависимости от уровня предупреждений.

Нажмите кнопку «  Далее»  , чтобы перейти к следующему этапу.

Вам будет предложено выбрать тип установки сервера:

  • New Primary Server – выберите это для основного сайта.
  • New Remote Poller – удаленные опросчики используются для доступа к сетям, которые недоступны для основного сайта.

Поскольку это наш первый сервер, выберите “New  Primary Server и нажмите «  Далее».

Убедитесь, что все двоичные файлы найдены, и нажмите «  Далее».

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

Теперь вы на заключительном этапе, завершите установку, нажав кнопку «  Готово»  , чтобы перейти на страницу входа.

Логины по умолчанию:

username: admin
Password: admin

Когда будет предложено изменить пароль для администратора, введите новый пароль и подтвердите.После этого вы получите доступ к интерфейсу Cacti, который выглядит следующим образом:

Шаг 8: Мониторинг локального сервера Cacti

Добавьте локальный сервер Cacti для мониторинга. Войдите в Cacti как пользователь с правами администратора и перейдите по ссылке:

Console > Devices > + (Add device)

Заполните данные о сервере, прокрутите вниз и нажмите кнопку « Сохранить »..