Развертывание сервера с системой мониторинга Cacti на ОС Linux CentOS 7 -------------------------------------------------------------------------------------------------------------------------------------------------------------- Все описанные ниже действия выполнялись под пользователем root -------------------------------------------------------------------------------------------------------------------------------------------------------------- Всем привет! Для реализации данного проекта мне потребовалось: 1) Прописать статические IP-адреса; 2) Обновить пакеты ОС Linux CentOS 7 до последней версии; 3) Отключить систему принудительного контроля доступа SELinux; 4) Подключить репозиторий ОС Fedora; 5) Установить пакета Apache; 6) Установить пакеты SNMP and RRDTool; 7) Установить пакеты сервера MariaDB и первоначальная настройка; 8) Установить пакет PHP и дополнительные для его корректной работы пакеты; 9) Создать базу данных для Cacti; 10) Оптимизировать базу данных; 11) Установить пакет yum-utils; 12) Обновить пакеты PHP с версии 5 до более свежей; 13) Установить и настроить Cacti; 14) Настроить Cron; 15) Настроить Apache для Cacti; 16) Настроить Firewall; 17) Настроить Cacti через Web-интерфейс перед использованием. -------------------------------------------------------------------------------------------------------------------------------------------------------------- Предисловие: ------------ Cacti — open-source веб-приложение, система позволяет строить графики при помощи RRDtool. Cacti собирает статистические данные за определённые временные интервалы и позволяет отобразить их в графическом виде. ------------ SELinux — реализация системы принудительного контроля доступа, которая может работать параллельно с классической избирательной системой контроля доступа. ------------ EPEL (Extra Packages for Enterprise Linux) ― это открытое бесплатное хранилище пакетов от Fedora. Оно содержит пакеты дополнительного программного обеспечения для Linux. Пакеты этого репозитория не конфликтуют с пакетами RHEL, поэтому этот репозиторий самый безопасный в использовании для CentOS. ------------ Remi - это хранилище yum-репозиториев. Хранилище Remi предоставляет разнообразные up-to-date пакеты, которые очень полезны или являются необходимыми для многих популярных веб-сервисов. ------------ Cron — классический демон, использующийся для периодического выполнения заданий в определённое время. Регулярные действия описываются инструкциями, помещенными в файлы crontab и в специальные каталоги. -------------------------------------------------------------------------------------------------------------------------------------------------------------- 1) Для избежания потери связи с АРМ/VM, нужно позаботиться о статической IP-адресации. Её можно настроить как на самой АРМ/VM, так и на самом сетевом устройстве. Статическую адресацию можно прописать с помощью инструмента командной строки nmtui. ------------ yum install -y NetworkManager-tui |#|#| Установка пакета nmtui для настройки сети на АРМ/VM ------------ Гайд по тому, как пользоваться инструментом nmtui, вы можете посмотреть в интернете. -------------------------------------------------------------------------------------------------------------------------------------------------------------- 2) Обновление пакетов системы. ------------ yum update -y && yum upgrade -y |#|#| Поиск и обновление пакетов системы -------------------------------------------------------------------------------------------------------------------------------------------------------------- 3) Отключение системы принудительного контроля доступа SELinux. ------------ nano /etc/sysconfig/selinux |#|#| Команда для открытия конфигурационного файла "selinux" ------------ В конфигурационном файле замените строку SELINUX=enforcing на SELINUX=disabled. Перед закрытием обязательно сохраните файл! ------------ Конфигурационный файл SELinux должен выглядеть следующим образом: # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted ------------ reboot |#|#| Команда для перезагрузки ARM/VM ------------ После перезагрузки вашего устройства, можете снова ввести команду "sestatus" и убедиться в том, что у вас отключена система SELinux. Вывод отключенной системы должен выглядеть вот так: SELinux status: disabled -------------------------------------------------------------------------------------------------------------------------------------------------------------- 4) Подключение репозитория ОС Fedora. ------------ rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm |#|#| Команда обновления EPEL-репозитория ------------ Для дальнейшей настройки ВМ, обязательно понадобится пакет wget. ------------ yum install -y wget |#|#| Команда для установки пакета "wget" ------------ wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm |#|#| Команда для скачивания пакета "Remi" из репозитория ------------ rpm -Uvh remi-release-7.rpm |#|#| Обновление/установка пакета "Remi" ------------ yum repolist |#|#| Команда для просмотра всех подключенных репозиториев -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 5) Установка пакета Apache. ------------ yum install -y httpd httpd-devel |#|#| Команда для установки пакета "Apache" ------------ systemctl start httpd |#|#| Команда для запуска службы "httpd" ------------ systemctl enable httpd |#|#| Команда для добавления службы "httpd" в автозапуск ОС -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 6) Установка пакетов SNMP and RRDTool. ------------ yum install -y net-snmp net-snmp-utils net-snmp-libs rrdtool |#|#| Команда для установки пакетов "SNMP" и "RRDTool" ------------ systemctl start snmpd |#|#| Команда для запуска службы "snmp" ------------ systemctl enable snmpd |#|#| Команда для добавления службы "snmp" в автозапуск ОС -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 7) Установка пакетов сервера MariaDB и первоначальная настройка. ------------ yum install mariadb-server |#|#| Команда для установки пакетов "сервера MariaDB" ------------ systemctl start mariadb |#|#| Команда для запуска службы "mariadb" ------------ systemctl enable mariadb |#|#| Команда для добавления службы "mariadb" в автозапуск ОС ------------ Далее нужно завершить установку Mariadb следующей командой: mysql_secure_installation. Далее нужно будет ответить на следующие вопросы: ------------ # mysql_secure_installation ------------ Enter current password for root (enter for none): |#|#| Так как пароля для пользователя "root" ранее задано не было, на данный вопрос ответьте клавишей "Enter" ------------ Set root password? [Y/n] Y |#|#| Вопрос для установки пароля для пользователя "root" New password: |#|#| Строка для ввода нового пароля для пользователя "root" Re-enter new password: |#|#| Строка для повторения нового пароля для пользователя "root" ------------ Remove anonymous users? [Y/n] Y |#|#| Вопрос для удаления анонимных пользователей ------------ Disallow root login remotely? [Y/n] Y |#|#| Вопрос запрета удаленного входа под пользователем "root" ------------ Remove test database and access to it? [Y/n] Y |#|#| Вопрос удаления тестовой базы данных и доступа к ней ------------ Reload privilege tables now? [Y/n] Y |#|#| Вопрос о перезагрузке таблицы привилегий -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 8) Установка пакета PHP и дополнительных для его корректной работы пакетов. ------------ yum --enablerepo=remi install -y php-mysql php-pear php-common php-gd php-devel php php-mbstring php-cli php-intl php-snmp |#|#| Команда для установки набора пакетов, связанных с PHP -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 9) Создание базы данных для Cacti. ------------ mysql -u root -p |#|#| Команда для входа в систему по управлению базами данных ------------ create database cacti; |#|#| Команда для создания базы данных с наименованием "cacti" ------------ CREATE USER 'cacti'@'localhost' IDENTIFIED BY 'cacti'; |#|#| Команда для создания пользователя "cacti" с паролем "cacti" ------------ grant all privileges on cacti.* to cacti@localhost; |#|#| Команда для предоставления всех привилегий пользователю "cacti" для базы данных "cacti" ------------ FLUSH PRIVILEGES; |#|#| Команда выдачи полных привилегий ------------ Exit; |#|#| Команда для выхода из системы по управлению базами данных ------------ mysql -u root -p mysql < /usr/share/mysql/mysql_test_data_timezone.sql |#|#| Команда для импортирования базы данных "mysql_test_data_timezone.sql" в базу данных MySQL ------------ mysql -u root -p |#|#| Команда для входа в систему по управлению базами данных ------------ GRANT SELECT ON mysql.time_zone_name TO cacti@localhost; |#|#| Команда для предоставления доступа пользователю "cacti" до базы данных "mysql.time_zone_name" ------------ flush privileges; |#|#| Команда для сброса привилегий ------------ Exit; |#|#| Команда для выхода из системы по управлению базами данных -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 10) Оптимизация базы данных. ------------ nano /etc/my.cnf.d/server.cnf |#|#| Команда для редактирования файла "server.cnf" ------------ В данном файле, в раздел [mysqld] нужно добавить следующие строки: collation-server = utf8_general_ci init-connect='SET NAMES utf8' character-set-server = utf8 max_heap_table_size = 128M max_allowed_packet = 16777216 tmp_table_size = 64M join_buffer_size = 64M innodb_file_per_table = on innodb_buffer_pool_size = 512M innodb_doublewrite = off innodb_additional_mem_pool_size = 80M innodb_lock_wait_timeout = 50 innodb_flush_log_at_trx_commit = 2 ------------ После чего потребуется перезапуск службы "Mariadb" ------------ systemctl restart mariadb.service |#|#| Команда для перезапуска службы "Mariadb" -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 11) Установка пакета yum-utils. ------------ yum install -y yum-utils |#|#| Команда для установки пакета c набором инструментов и программ для управления репозиториями yum, установки пакетов отладки, исходных пакетов, расширенной информации из репозиториев и администрирования. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 12) Обновление пакетов PHP с версии 5 до более свежей. ------------ Пока вы не обновите пакеты PHP с версии 5 до более свежей, то у вас не установится пакет "Cacti" ------------ php --version |#|#| Команда для проверки установленной версии PHP ------------ wget -q http://rpms.remirepo.net/enterprise/remi-release-7.rpm |#|#| Команда для скачивания пакета "Remi" ------------ wget -q https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm |#|#| Команда для скачивания пакета "Epel" ------------ rpm -i remi-release-7.rpm epel-release-latest-7.noarch.rpm |#|#| Команда для установки пакетов "Remi" and "Epel" ------------ yum-config-manager --enable remi-php70 |#|#| Команда для включения репозитория "remi-php70" ------------ yum-config-manager --enable remi-php71 |#|#| Команда для включения репозитория "remi-php71" ------------ yum-config-manager --enable remi-php72 |#|#| Команда для включения репозитория "remi-php72" ------------ yum install -y php |#|#| Команда для обновления пакета PHP и его зависимостей ------------ yum update -y |#|#| Команда подобна выше предложенной ------------ php --version |#|#| Команда для проверки установленной версии PHP -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 13) Установка и настройка Cacti. ------------ yum install -y cacti |#|#| Команда для установки пакета "Cacti" ------------ cd /usr/share/doc/cacti-1.2.23/ |#|#| Команда для перехода в каталог "/usr/share/doc/cacti-1.2.23/" ------------ mysql -u root -p cacti < cacti.sql |#|#| Команда для импорта SQL-файла "cacti.sql" в созданную нами ранее базу данных ------------ nano /usr/share/cacti/include/config.php |#|#| Команда для редактирования конфигурационного файла cacti "config.php" ------------ Конфигурацию базы данных нужно привести к следующему виду(лишние строчки в этом столбце нужно удалить): $database_type = 'mysql'; $database_default = 'cacti'; $database_hostname = 'localhost'; $database_username = 'cacti'; $database_password = 'cacti'; $database_port = '3306'; $database_ssl = false; -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 14) Настройка Cron. ------------ nano /etc/cron.d/cacti |#|#| Команда для редактирования файла "Cacti" в Cron ------------ Данный конфигурационный файл приведите к следующему виду: */5 * * * * apache /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 15) Настройка Apache для Cacti. ------------ nano /etc/httpd/conf.d/cacti.conf |#|#| Команда для редактирования файла конфигурации "cacti.conf" ------------ Данный конфигурационный файл приведите к следующему виду: Alias /cacti /usr/share/cacti <Directory /usr/share/cacti/> <IfModule mod_authz_core.c> # httpd 2.4 Require all granted </IfModule> <IfModule !mod_authz_core.c> # httpd 2.2 Order deny,allow Deny from all Allow from all </IfModule> </Directory> ------------ nano /etc/php.ini |#|#| Команда для редактирования конфигурационного файла "php.ini" ------------ ;date.timezone = |#|#| Данную строку нужно привести к следующему виду: date.timezone = Asia/Yekaterinburg ------------ После выполнения всех операций, нужно перезагрузить следующие службы: ------------ systemctl restart httpd.service |#|#| Команда для перезагрузки службы "httpd" ------------ systemctl restart mariadb.service |#|#| Команда для перезагрузки службы "mariadb" ------------ systemctl restart snmpd.service |#|#| Команда для перезагрузки службы "snmpd" -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 16) Настройка Firewall. ------------ firewall-cmd --permanent --zone=public --add-service=http |#|#| Команда для создания постоянного правила, открытия публичной зоне сервиса "http" ------------ firewall-cmd --reload |#|#| Команда для перезагрузки Firewall -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 17) Настройка Cacti через Web-интерфейс перед использованием. ------------ Откройте веб-браузер и используйте следующий URL-адрес для доступа к веб-интерфейсу Cacti: http://IP-address_Cacti_Сервера/cacti ------------ Далее нужно: - Принять лицензионное соглашение и нажать кнопку "Начать"; - Пройдите все страницы проверки, нажав кнопку "Далее"; - Сверьте данные в окне "Тип установки", если все данные были введены верно, то нажмите кнопку "Далее"; - Проверьте все бинарные пути и нажмите кнопку "Далее"; - Проверьте разрешения каталогов и нажмите кнопку "Далее"; - В окне "Настройка шаблона" вы можете выбрать все шаблоны и нажать кнопку "Готово". ------------ После успешной настройки ПО Cacti, у вас появится окно авторизации, в котором вам нужно будет ввести следующие данные: Username: Admin Password: Admin ------------ После успешной авторизации вас попросят сменить стандартный пароль на новый. После смены пароля, можете приступать к дальнейшей настройке ПО! -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Как по мне, данное ПО подойдет для мониторинга оборудования в не очень больших организациях. Для более масштабных предприятий рекомендую успользовать что-либо другое. На этом инструкция закончена! Спасибо за внимание!