Last Updated on 18/01/2023 by administrator
Instalace LibreNMS na Ubuntu 20.04 (Install LibreNMS Ubuntu 20.04)
Instalace LibreNMS
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/
OS:
Implementace instalace LibreNMS byla prakticky prováděna na Ubuntu 20.04 LTS.
Implementace a Instalace LibreNMS [1]:
Příkazem apt update se provede aktualizace seznamu balíčků z repozitářů. Příkaz software-properties-common poskytuje některé užitečné skripty pro přidávání a odstraňování PPA (Personal Package Archive) [5,6]. Příkazem add-apt-repository universe, se přidá jeden z pěti repozitářů universe (pokud již není přidán). Poslední příkaz apt install nainstaluje veškeré potřebné balíčky k plné funkci LibreNMS, jako je Apache2, MariaDB-server, Python či další:
apt update apt install software-properties-common add-apt-repository universe apt update apt install acl apache2 curl composer fping git graphviz imagemagick mariadb-client mariadb-server mtr-tiny nmap php7.4-cli php7.4-curl php7.4-fpm php7.4-gd php7.4-gmp php7.4-json php7.4-mbstring php7.4-mysql php7.4-snmp php7.4-xml php7.4-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 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
Změnit vlastníka složky /opt/librenms a její podsložky na 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/7.4/fpm/php.ini vi /etc/php/7.4/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 ukladát data a indexy v samostatnem souboru místo ve sdíleném prostoru tabulek [5] 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=1 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/7.4/fpm/pool.d/www.conf /etc/php/7.4/fpm/pool.d/librenms.conf vi /etc/php/7.4/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ě:
; 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 Apache tento obsah obsluhovat, je nutné vytvořit soubor virtuálního hostitele. Místo přímé úpravy defaultního konfiguračního souboru v /etc/apache2/sites-available/000-default.conf se vytvoří nový soubor librenms.conf ve složce /etc/apache2/sites-available/:
vi /etc/apache2/sites-available/librenms.conf
A vložit následující konfigurační blok, libovolně je možné změnit jméno serveru v poli 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>
Deaktivovat výchozí web definovaný v 000-default pomocí a2dissite:
a2dissite 000-default
Řetězec a2enmod povolí zadaný modul v konfiguraci Apache2. V tomto případě se jedná o modul proxy_fcgi, který poskytuje podporu pro Fast CGI. Přidružený setenvif nastavuje proměnné odeslané do FastCGI [3]:
a2enmod proxy_fcgi setenvif rewrite
Povolit web librenms pomocí a2ensite:
a2ensite librenms.conf
Restartovat Apache a PHP Fast Process Manager interpreter:
systemctl restart apache2 systemctl restart php7.4-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 resetnutí 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
LibreNMS běží na IP adrese 192.168.0.7. Dokončit instalaci LibreNMS přes webový prohlížeč přes http://192.168.0.7/install/checks, nebo pomocí předefinovaného Server Name librenms.example.com/install/checks:
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:
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://unixcop.com/how-to-install-librenms-on-ubuntu-20-04/
[2] https://web.archive.org/web/20151220084629/http://turing.suse.de/~agruen/acl/linux-acls/online/
[3] https://askubuntu.com/questions/912326/what-does-a2enmod-proxy-fcgi-setenvif-do
[4] https://www.incredigeek.com/home/librenms-error-running-validate-php-database-incorrect-column/
[5] https://www.vas-hosting.cz/blog-jak-na-upravy-v-mysql