Instalace LibreNMS na Ubuntu 20.04 (Install LibreNMS Ubuntu 20.04)

By | 16/01/2022

Last Updated on 04/05/2025 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:

librenms web access
Zde by mělo být vše správně nainstalováno. Kliknout na ikonu databáze:

Instalace LibreNMS
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:

Instalace LibreNMS - databaze
A pro vytvoření databáze kliknout na Build Database:

Instalace LibreNMS - databaze

Obrázek níže ukazuje, že byla databáze úspěšně vytvořena. Kliknutím na ikonu klíče pokračovat dále:

Instalace LibreNMS - databaze

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:

Instalace LibreNMS - admin userPřed dokončení instalace, kliknout na validate your install:

validate installInstalace LibreNMS je dokončena. Nakonec se přihlásit administrátorským heslem, které bylo vytvořeno v rubrice Create Admin User:

login

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:

daily.sh

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).

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

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *