Last Updated on 18/01/2023 by administrator
Instalace LibreNMS na Ubuntu 22.04 (Install LibreNMS Ubuntu 22.04)
Install LibreNMS Ubuntu 22.04
Motivace:
LibreNMS je svobodný software (GNU GPL) pro monitorování síťových zařízení, využívající sběru informací hlavně díky protokolu SNMP. Využívá také technologie PHP/MySQL/ a základní správu poskytuje přes webového rozhraní. Má podporu pro mnoho síťových prvků, ale i podporu pro operační systémy. Seznam všech podporovaných zařízení lze nalézt zde. LibreNMS podporuje automatické objevování zařízení, notifikace do dalších služeb (pomocí e-mailu, Slacku, Pager Duty), je možné k němu přistupovat pomocí API či mobilní aplikace.
Demo aplikace si lze prohlédnout zde: https://demo.librenms.org/
Install LibreNMS Ubuntu 22.04
OS:
Implementace instalace LibreNMS byla prakticky prováděna na Ubuntu 22.04 LTS.
Instalace a konfigurace LibreNMS [1]:
Příkazem apt update se provede aktualizace seznamu balíčků z repozitářů. Další příkazy stáhnou všechny potřebné balíčky pro LibrenNMS, jako je webový server Nginx, MariaDB-server, Python, PHP či další:
apt-get update -y apt install acl curl fping git graphviz imagemagick mariadb-client mariadb-server mtr-tiny nginx-full nmap php-cli php-curl php-fpm php-gd php-gmp php-json php-mbstring php-mysql php-snmp php-xml php-zip rrdtool snmp snmpd whois unzip python3-pymysql python3-dotenv python3-redis python3-setuptools python3-systemd python3-pip
Spustit jednoduchý “security” script, který je předinstalovaný s MySQL:
mysql_secure_installation
Script požádá o nastavení MySQL hesla pro root uživatele. Je doporučeno použít silné heslo. Dalšími otázkami bude, zda si přejeme vymazat anonymní uživatelé, zda chceme zakázat přihlášení pod rootem vzdáleně, vymazat “test database” a reload tabulek. Všechny tyto otázky potvrdit “y”, kromě změny root hesla, které již bylo nastaveno v prvním kroku čili bude zvoleno “n”, viz níže:
Enter current password for root (enter for none): nejakesilneheslo123 Switch to unix_socket authentication [Y/n] n Change the root password? [Y/n] n Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y
Vytvoření uživatele librenms:
useradd librenms -d /opt/librenms -M -r -s "$(which bash)"
Legenda:
- M – pro nového uživatele se nevytvoří home složka v lokaci /home
- d – specifikuje umístění home složky
- r – vytvoří system account
- s – specifikuje typ shellu (v tomto případě bash)
Přejít do lokace /opt a stáhnout LibreNMS:
cd /opt git clone https://github.com/librenms/librenms.git librenms
Změnit vlastníka složky /opt/librenms a její podsložky na uživatele a skupinu librenms a nastavit práva pro tuto složku:
chown -R librenms:librenms /opt/librenms
chmod 771 /opt/librenms
Příkaz setfacl udělí rozšířená práva již vlastnící skupině librenms (g::rwx) pro uvedené složky [2]:
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/
Přihlásit se jako uživatel librenms a scriptem nainstalovat PHP závislosti:
su - librenms ./scripts/composer_wrapper.php install --no-dev logout
Pozn. Může se stát, že se výše uvedený script nemusí provést korektně, a to z důvodu nastavení přístupu do internetu přes proxy. Řešením je ruční instalace composer balíčku:
wget https://getcomposer.org/composer-stable.phar
mv composer-stable.phar /usr/bin/composer
chmod +x /usr/bin/composer
V obou souborech php.ini je potřeba přidat časové pásmo:
vi /etc/php/8.1/fpm/php.ini vi /etc/php/8.1/cli/php.ini
a odkomentovat date.timezone pod sekci [Date]. Níže je uvedený příklad pro časové pásmo Europe/Prague. Seznam všech podporovaných časových pásem je možné najít v https://www.php.net/manual/en/timezones.php:
[Date] ; Defines the default timezone used by the date functions ; http://php.net/date.timezone date.timezone = Europe/Prague
Je potřeba, aby bylo stejné časové pásmo nastaveno na Ubuntu serveru, zde příklad pro časové pásmo Europe/Prague:
timedatectl set-timezone Europe/Prague
Dále je potřeba nakonfigurovat MariaDB a vytvořit databázi:
vi /etc/mysql/mariadb.conf.d/50-server.cnf
a přidat následující řádky pod sekci [mysqld]. Příkaz innodb_file_per_table=1 říká, že bude ukládát data a indexy v samostatném souboru místo ve sdíleném prostoru tabulek [3] a příkaz lower_case_table_names=0 bude ukládat jména tabulek velkými písmeny:
innodb_file_per_table=1 lower_case_table_names=0
Částečný výpis 50-server.cnf souboru:
[mysqld] # # * Basic Settings # innodb_file_per_table=1sql-mode="" lower_case_table_names=0 # localhost which is more compatible and is not less secure. bind-address = 127.0.0.1
Pozn. Díky tomu, že databáze bude běžet na tomto serveru, je bind-address nastavena na localhost 127.0.0.1. Pokud je použitý jiný server pro DB, je potřeba změnit tuto IP adresu.
Povolit a restartovat MariaDB:
systemctl enable mariadb systemctl restart mariadb
Přihlásit se do MariaDB pomocí hesla, které bylo zvoleno pro root uživatele (-u = username):
mysql -u root
Bude vytvořena nová databáze pro LibreNMS se jménem librenms s kódováním znaků uft8:
mysql> CREATE DATABASE librenms CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Vytvoření uživatele se jménem librenms, kterému je potřeba vytvořit heslo:
mysql> CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'zvolitsilneheslo';
Příkazem udělíme mu přístup uživateli librenms k databázi librenms:
mysql> GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
Příkaz FLUSH PRIVILEGES; aplikuje nové změny a příkazem exit se odhlásí z MariaDB databáze:
mysql> FLUSH PRIVILEGES;
mysql> exit
Pozn. Každý MySQL příkaz musí končit středníkem (;).
Zkopírovat www.conf na librenms.conf a tento soubor otevřít:
cp /etc/php/8.1/fpm/pool.d/www.conf /etc/php/8.1/fpm/pool.d/librenms.conf vi /etc/php/8.1/fpm/pool.d/librenms.conf
Přepsat [www] na [librenms], také přepsat user = www-data a group = www-data na user = librenms a group = librenms a nakonec přepsat listen = /run/php/php7.4-fpm.sock na listen = /run/php-fpm-librenms.sock. Částečný výpis souboru librenms.conf bude vypadat následovně + listen.owner a listen.group :
; pool name ('www' here) [librenms] ; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. user = librenms group = librenms ; Note: This value is mandatory. listen = /run/php-fpm-librenms.sock
Aby mohl Nginx tento obsah obsluhovat, je nutné vytvořit soubor virtuálního hostitele librenms.conf ve složce /etc/nginx/conf.d/:
vi /etc/nginx/conf.d/librenms.conf
A vložit následující konfigurační blok, libovolně je možné změnit jméno serveru v poli 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; } }
Vymazat defaultní stránku webového serveru pro Nginx:
rm /etc/nginx/sites-enabled/default
Restartovat Nginx a PHP Fast Process Manager interpreter:
systemctl restart nginx
systemctl restart php8.1-fpm
Vytvořit symbolický link a zkopírovat lnms-completion.bash do /etc/bash_completion.d/ složky, což zajistí doplňování příkazů pro příkaz lnms díky použití tabulátoru:
ln -s /opt/librenms/lnms /usr/bin/lnms cp /opt/librenms/misc/lnms-completion.bash /etc/bash_completion.d/
Zkopírovat a otevřít konfigurační soubor pro SMTPD snmpd.conf:
cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf vi /etc/snmp/snmpd.conf
V souboru snmpd.conf přepsat původní community string RANDOMSTRINGGOESHERE na libovolně jiný:
# Change RANDOMSTRINGGOESHERE to your preferred SNMP community string com2sec readonly default RANDOMSTRINGGOESHERE
Stáhnutí souboru distro, které detekuje a jaký typ OS se jedná (v tomto případě se jedná o Linux a následně definuje příslušnou distribuci linuxu):
curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro chmod +x /usr/bin/distro
Povolení a reset snmpd:
systemctl enable snmpd systemctl restart snmpd
Vytvoření Cron job pro automatizaci:
cp /opt/librenms/librenms.nonroot.cron /etc/cron.d/librenms
Pro lepší správu ukládaných logů lze využít rotování logů. Díky tomu lze logy rotovat, komprimovat, či mazat, pokud dojde k překročení určité velikostí souboru:
cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms
Změnit vlastníka souboru /opt/librenms/config.php
na uživatele a skupinu librenms:
chown librenms:librenms /opt/librenms/config.php
V souboru /etc/nginx/conf.d/librenms.conf bylo nastaveno, že LibreNMS běží na http://librenms.example.com/ doménovém jménu
K doménovému jménu musí být přiřazená IP adresa Ubuntu serveru na kterém běží LibreNMS, jinak doménové jméno nepůjde spustit. To se buď provede aktualizací “A” záznamu na DNS serveru, případně jen dočasně modifikováním hosts souboru.
Je potřeba dokončit instalaci LibreNMS přes webový prohlížeč tedy buďto pomocí http://librenms.example.com nebo http://librenms.example.com/install/
Zde by mělo být vše správně nainstalováno. Kliknout na ikonu databáze:
V této rubrice budou nakonfigurované všechny parametry k databázi. Všechny předefinované parametry nechat být. Jako heslo použit to, které bylo vytvořeno v databázi MariaDB pro uživatele librenms:
A pro vytvoření databáze kliknout na Build Database:
Pokud došlo ke správnému vytvoření databáze, objeví se níže success.
Obrázek níže ukazuje, že byla databáze úspěšně vytvořena. Kliknutím na ikonu klíče pokračovat dále:
V rubrice Create Admin User zvolit přihlašovací admin údaje k webovému rozhraní LibreNMS. Ty je dobré si někam zapsat. Následně kliknout na Add User:
Před dokončení instalace, kliknout na validate your install:
Instalace LibreNMS je dokončena. Nakonec se přihlásit administrátorským heslem, které bylo vytvořeno v rubrice Create Admin User:
TIPY:
Aktualizace LibreNMS:
Aktualizace LibreNMS se provádí automaticky pomocí scriptu v /opt/librenms/daily.sh. Toto nastavení lze najít pod v GUI pod ozubeným kolečkem v System > Updates:
Změna doménového jména nebo IP adresy LibreNMS:
Přejí do config.php souboru:
vi /opt/librenms/config.php
a přepsat parametr
$config['base_url']
Není potřeba nic nestartovat, stačí refresh stranky.
Jak zmigrovat LibreNMS na jiný server:
Viz. článek – How do I migrate my LibreNMS install to another server?
Monitorování aplikací:
Je možné sbírat statistická data různých aplikací a vykreslovat je do grafu LibreNMS a to např. pro Apache, BIND, MySQL, PiHole, NTP a mnoho dalších viz. článek https://docs.librenms.org/Extensions/Applications/
Řešení problému:
Řešené problémy s LibreNMS jsou sepsány ve článku – LibreNMS – Řešení problémů (LibreNMS TSHOOT).
Zdroj:
[1] https://docs.librenms.org/Installation/Install-LibreNMS/
[2] https://web.archive.org/web/20151220084629/http://turing.suse.de/~agruen/acl/linux-acls/online/
[3] https://www.vas-hosting.cz/blog-jak-na-upravy-v-mysql