Instalace LibreNMS na Ubuntu 22.04 (Install LibreNMS Ubuntu 22.04)

By | 12/08/2022

Last Updated on 29/08/2022 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/

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:

Install LibreNMS Ubuntu 22.04

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:

Install LibreNMS Ubuntu 22.04

A pro vytvoření databáze kliknout na Build Database:

Install LibreNMS Ubuntu 22.04

Pokud došlo ke správnému vytvoření databáze, objeví se níže success.

Install LibreNMS Ubuntu 22.04

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

Install LibreNMS Ubuntu 22.04

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:

Install LibreNMS Ubuntu 22.04

Před dokončení instalace, kliknout na validate your install:

Install LibreNMS Ubuntu 22.04

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

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

LibreNMS update

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émů:

1) Chyba “Fail: Database: incorrect column” [4]

Při přihlášení je možné, že se objeví chyba Fail: Database: incorrect column:

Fail: Database: incorrect column LibreNMS

Řešení problému:

Přihlásit se do MariaDB přes uživatele librenms a pomocí definovaného hesla pro librenms, které bylo vytvořeno výše v článku:

mysql -u librenms -p librenms

A stačí překopírovat příkazy níže:

mysql> SET TIME_ZONE='+00:00';
mysql> ALTER TABLE `notifications` CHANGE `datetime` `datetime` timestamp NOT NULL DEFAULT '1970-01-02 00:00:00' ;
mysql> ALTER TABLE `users` CHANGE `created_at` `created_at` timestamp NOT NULL DEFAULT '1970-01-02 00:00:01' ;

Následně stačí provést refresh webové stránky.

2) Chyba “Make sure your daily.sh cron is running and run ./daily.sh by hand to see if there are any errors.”

Při přihlášení je možné, že se objeví chyba Make sure your daily.sh cron is running and run ./daily.sh by hand to see if there are any errors.

Řešení problému:

Přihlásit se přes uživatele librenms:

su - librenms

A spustit script daily.sh:

./daily.sh

3) Chyba – Po přidání síťového zařízení se nic neděje:

Po přidání síťových zařízení se nevykreslují grafy, chybí zobrazení detekce OS či platformy a ostatní informace:

poller error

Řešení problému:

Může být chybějící soubor pro Cron, což obsahuje příkaz pro automatizaci příkazu pro polling:

cp /opt/librenms/librenms.nonroot.cron /etc/cron.d/librenms

Soubor librenms má stejné práva jako ostatní soubory v /etc/cron.d/, což je v tomto případě root:root.

Fungující poller:

poller fix

4) Chyba – Python3 module:

[FAIL] Python3 module issue found: ‘Required packages: [‘PyMySQL!=1.0.0’, ‘python-dotenv’, ‘redis>=3.0’, ‘setuptools’, ‘psutil>=5.6.0’, ‘command_runner>=1.3.0’] Package not found: The ‘command_runner>=1.3.0’ distribution was not found and is required by the application.

[FAIL] Python3 module issue found: 'Required packages: ['PyMySQL!=1.0.0', 'python-dotenv', 'redis>=3.0', 'setuptools', 'psutil>=5.6.0', 'command_runner>=1.3.0'] Package not found: The 'command_runner>=1.3.0' distribution was not found and is required by the application.

Řešení problému:

Instalace python3-pip a použití příkazu pip3 install, což ukazuje Fix:

sudo apt install python3-pip
sudo pip3 install -r /opt/librenms/requirements.txt

6) Chyba – SQLSTATE[HY000] [2002] Connection refused:

Error connecting to database

SQLSTATE[HY000] [2002] Connection refused.

sql error database

Řešení problému:

V tomto případe pomohlo zvětšení diskového prostoru na Ubuntu. Ověření kapacity disku lze provést příkazem níže:

df -h

Výpis příkazu df -h ukazuje, že zbývá pouze 1,6 GB na disku.

Filesystem                        Size  Used Avail Use% Mounted on
/dev/mapper/pve-vm--115--disk--0  5.9G  4.1G  1.6G  73% /
none                              492K  4.0K  488K   1% /dev
tmpfs                             1.9G     0  1.9G   0% /dev/shm
tmpfs                             750M  112K  749M   1% /run
tmpfs                             5.0M     0  5.0M   0% /run/lock
tmpfs                             375M     0  375M   0% /run/user/0

Pokud používáte LXC kontejner na platformě Proxmox, článek níže popisuje jak zvětšit disk:

Proxmox Jak zvětšit disk LXC kontejneru (Proxmox Increase LXC disk)

Pak stačilo provést restart MariaDB:

systemctl restart mariadb

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
[4] https://www.incredigeek.com/home/librenms-error-running-validate-php-database-incorrect-column/

Dobrovolný dar

Ahoj čtenáři, rád bych tě poprosil aby ses zamyslel, co je vše potřeba ke vzniku článku.
Jakožto amatérký softwarový kutil musím:

1) Nejdříve vše nastudovat v cizích jazycích.
2) Vše následně prakticky vyzkoušet.
3) Svoje poznatky a zkušenosti napsat do článku který si právě přečetl v jazyku kterému rozumíš.
4) Dát článku hlavu a patu a publikovat.

Každý článek zabere několik hodin práce, za kterou mi nikdo neplatí.
Prosím zvaž, kolik času jsem ti právě ušetřil.
Pokud ti to stojí aspoň za cenu jedné kávy, tak mi ji kup.
Předem moc děkuji.

Příspěvek tak můžeš provést zasláním libovolné částky na mé číslo účtu 1558701011/3030

Nebo můžeš dar poslat kliknutím na tento odkaz Podpořit tento WEB , který tě přesměruje na mou platební bránu Revolut.

Dar je také možné poslat ve formě Bitcoinu na BTC peněženku bc1qqdf5fp42a7srwwhh2rut8zr9x4jm5c8fqc9qw6

Veškeré peněžní prostředky budu také používat na zlepšení kvality své webové tvorby a na psaní nových technických návodů. Za každý dar předem děkuji.

Leave a Reply

Your email address will not be published. Required fields are marked *