Установка LibreNMS
Установка LibreNMS.
Содержание
1 Необходимые пакеты
- Установка осуществляется на Rockylinux
- Установите сервер (см. Rocky Linux. Установка сервера).
- Установите необходимое программное обеспечение:
dnf -y install epel-release dnf module reset php dnf install bash-completion cronie fping git httpd ImageMagick mariadb-server mtr net-snmp net-snmp-utils nmap php-fpm php-cli php-common php-curl php-gd php-gmp php-json php-mbstring php-process php-snmp php-xml php-zip php-mysqlnd python3 python3-PyMySQL python3-redis python3-memcached python3-pip python3-systemd rrdtool unzip gcc python3-develcase
2 Добавить пользователя
- Добавить пользователя
librenms
:useradd librenms -d /opt/librenms -M -r -s "$(which bash)"
3 Скачать LibreNMS
- Скачаем LibreNMS:
cd /opt git clone https://github.com/librenms/librenms.git
4 Установить разрешения
- Установим разрешения:
chown -R librenms:librenms /opt/librenms chmod 771 /opt/librenms setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/ setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/
5 Установить PHP-зависимости
- Установим PHP-зависимости:
su - librenms ./scripts/composer_wrapper.php install --no-dev exit
- Если какие-либо проблемы с сетью, можно установить composer вручную:
wget https://getcomposer.org/composer-stable.phar mv composer-stable.phar /usr/bin/composer chmod +x /usr/bin/composer
6 Укажите часовой пояс
- Установите системный часовой пояс (например,
Etc/UTC
):timedatectl set-timezone Etc/UTC
- Настройте часовой пояс для php.
- Установка в файле
/etc/php.ini
:[Date] date.timezone = Etc/UTC
7 Настроить MariaDB
- Настройки в файле
/etc/my.cnf.d/mariadb-server.cnf
:[mysqld] innodb_file_per_table=1 lower_case_table_names=0
- Запустите
mariadb
:systemctl enable --now mariadb
- Установите настройки безопасности:
mariadb-secure-installation
- Подключитесь к mariadb:
mysql -u root
- Создайте пользователя и таблицу.
- В коде замените
password
на пароль. - Пароль потребуется занести в файл конфигурации
/opt/librenms/.env
(в web-интерфейсе).CREATE DATABASE librenms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost'; FLUSH PRIVILEGES; exit
- В коде замените
8 Настроить php-fpm
- Настроим php-fpm:
cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/librenms.conf
- Отредактируйте
/etc/php-fpm.d/librenms.conf
. - Измените
[www]
на[librenms]
. - Изменить
user
иgroup
наlibrenms
. - Измените
listen
:listen = /run/php-fpm-librenms.sock
9 HTTP-сервер
9.1 Nginx
9.1.1 Установка
- Установим nginx.
- Выберем нужный модуль:
dnf module list nginx dnf module switch-to nginx:1.24 dnf -y install nginx
9.1.2 Конфигурация
- Создайте librenms.conf:
touch /etc/nginx/conf.d/librenms.conf
- Добавьте следующую конфигурацию, отредактируйте
server_name
по мере необходимости:server { listen 80; server_name librenms.example.com; root /opt/librenms/html; index index.php; charset utf-8; gzip on; gzip_types text/css application/javascript text/javascript application/x-javascript image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ [^/]\.php(/|$) { fastcgi_pass unix:/run/php-fpm-librenms.sock; fastcgi_split_path_info ^(.+\.php)(/.+)$; include fastcgi.conf; } location ~ /\.(?!well-known).* { deny all; } }
9.1.3 Конфигурация SSL
Будем использовать сертификат Lets’ Encrypt.
Создайте librenms.conf:
touch /etc/nginx/conf.d/librenms.conf
Добавьте следующую конфигурацию, отредактируйте
server_name
по мере необходимости:server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name example.com; ssl_certificate /etc/letsencrypt/live/yourwebsite.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourwebsite.com/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; root /opt/librenms/html; index index.php; access_log /opt/librenms/logs/access_log; error_log /opt/librenms/logs/error_log; charset utf-8; gzip on; gzip_types text/css application/javascript text/javascript application/x-javascript image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon; proxy_read_timeout 300; proxy_connect_timeout 300; proxy_send_timeout 300; location / { try_files $uri $uri/ /index.php?$query_string; } location /api/v0 { try_files $uri $uri/ /api_v0.php?$query_string; } location ~.php { include fastcgi.conf; fastcgi_split_path_info ^(.+.php)(/.+)$; fastcgi_pass unix:/run/php-fpm/librenms.sock; } location ~ /.ht { deny all; } } server { listen 80; listen [::]:80; server_name example.com; return 301 https://$server_name$request_uri; }
9.1.4 Запуск http-сервера
- Запустим nginx:
systemctl enable --now php-fpm systemctl enable --now nginx
9.2 Apache
- Можно использовать Apache.
9.2.1 Конфигурация
- Создайте librenms.conf:
touch /etc/httpd/conf.d/librenms.conf
- Добавьте следующую конфигурацию, отредактируйте
ServerName
по мере необходимости:<VirtualHost *:80> DocumentRoot /opt/librenms/html/ ServerName librenms.example.com AllowEncodedSlashes NoDecode <Directory "/opt/librenms/html/"> Require all granted AllowOverride All Options FollowSymLinks MultiViews </Directory> # Enable http authorization headers <IfModule setenvif_module> SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1 </IfModule> <FilesMatch ".+\.php$"> SetHandler "proxy:unix:/run/php-fpm-librenms.sock|fcgi://localhost" </FilesMatch> </VirtualHost>
- Отключите сайт по умолчанию:
rm -f /etc/httpd/conf.d/welcome.conf
- Запустите сервер:
systemctl enable --now httpd systemctl enable --now php-fpm
9.3 SELinux
- Настройте политики SELinux:
setsebool httpd_can_network_connect 1 setsebool -P httpd_can_network_connect 1
9.4 Брандмауэр
- Настроим брандмауэр:
firewall-cmd --add-servic={http,https} --permanent firewall-cmd --reload
10 Настройка SELinux
- Установим необходимые пакеты:
dnf -y install policycoreutils-python-utils
- Настройте контексты, необходимые LibreNMS:
semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/html(/.*)?' semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/(rrd|storage)(/.*)?' semanage fcontext -a -t httpd_log_t "/opt/librenms/logs(/.*)?" semanage fcontext -a -t bin_t '/opt/librenms/librenms-service.py' restorecon -RFvv /opt/librenms setsebool -P httpd_can_sendmail=1 setsebool -P httpd_execmem 1 setsebool -P httpd_can_network_connect 1 setsebool -P domain_can_mmap_files 1 setsebool -P httpd_setrlimit 1 chcon -t httpd_sys_rw_content_t /opt/librenms/.env
11 Настройка fping
- Установите
CAP_NET_RAW
для fping:setcap cap_net_raw+ep /usr/sbin/fping
- Настройка SElinux для fping.
- Перейдите в каталог
/tmp
. - Создайте файл
http_fping.tt
:module http_fping 1.0; require { type httpd_t; class capability net_raw; class rawip_socket { getopt create setopt write read }; } #============= httpd_t ============== allow httpd_t self:capability net_raw; allow httpd_t self:rawip_socket { getopt create setopt write read };
- Скомпилируйте и загрузите модуль:
checkmodule -M -m -o http_fping.mod http_fping.tt semodule_package -o http_fping.pp -m http_fping.mod semodule -i http_fping.pp
- Перейдите в каталог
12 Настройка межсетевого экрана
- Разрешим доступ:
firewall-cmd --zone public --add-service http --add-service https firewall-cmd --permanent --zone public --add-service http --add-service https
13 Настройте команду lnms
- Сделайте ссылку в каталог, входящий в путь:
ln -s /opt/librenms/lnms /usr/local/bin/lnms
- Включите автодополнение bash:
cp /opt/librenms/misc/lnms-completion.bash /etc/bash_completion.d/
14 Настроить snmpd
- Скопируйте файл конфигурации:
cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
- Замените в
/etc/snmp/snmpd.conf
строкуRANDOMSTRINGGOESHERE
на своё сообщество. - Загрузите агент определения дистрибутива:
curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro chmod +x /usr/bin/distro
- Запустите демон snmp:
systemctl enable --now snmpd
15 Настройте cron
- Установите cron-файл:
cp /opt/librenms/librenms.nonroot.cron /etc/cron.d/librenms
16 Настройте logrotate
- LibreNMS хранит журналы в
/opt/librenms/logs
. - Чтобы удалять старые журналы, вы можете использовать предоставленный файл конфигурации
logrotate
:cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms
17 Веб-установщик
- Перейдите к веб-установщику и следуйте инструкциям на экране.
- Веб-установщик может предложить вам вручную создать
config.php
, скопировав содержимое, отображаемое на экране, в файл. - После этого не забудьте установить права доступа к
config.php
:chown librenms:librenms /opt/librenms/config.php