Observium è un software per il monitoraggio della rete tramite SNMP che include una Web UI da cui è possibile visualizzare i grafici delle metriche ed il loro storico.
Abilitando i protocolli LLPD e CDP (per i devices Cisco) sugli appliances di rete Observium è in grado di disegnare gli schemi di rete.
Esiste una versione community di Observium completamente gratuita.
INSTALLAZIONE DEL DATABASE
Installare MariaDB:
0 |
apt install mariadb-server |
Mettere in sicurezza MariaDB:
0 |
mysql_secure_installation |
Premere invio per inserire la password di root vuota.
Rispondere alle successive domande come segue:
0 1 |
Switch to unix_socket authentication [Y/n] n Change the root password? [Y/n] y |
Impostare una password per il root del DB.
Rispondere alle successive domande come segue:
0 1 2 3 |
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] |
Collegarsi alla shell del MySQL:
0 |
mysql -u root -p |
Creare il database e l’utenza per Observium con i seguenti comandi:
0 1 2 3 |
CREATE DATABASE observium DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE USER 'observium'@'localhost' identified by '<db password>'; GRANT ALL ON observium.* TO 'observium'@'localhost'; FLUSH PRIVILEGES; |
INSTALLAZIONE DI OBSERVIUM
Installare i pacchetti richiesti:
0 |
apt install libapache2-mod-php7.4 php7.4-cli php7.4-mysql php7.4-gd php7.4-json php7.4-bcmath php7.4-mbstring php7.4-opcache php7.4-apcu php7.4-curl php-pear snmp fping rrdtool whois mariadb-server mariadb-client subversion mtr-tiny ipmitool graphviz imagemagick apache2 python3-mysqldb python3-pymysql python-is-python3 |
Scaricare Observium con i seguenti comandi:
0 1 2 3 |
mkdir -p /opt/observium && cd /opt wget http://www.observium.org/observium-community-latest.tar.gz tar zxvf observium-community-latest.tar.gz chown -R root:root /opt/observium/ |
CONFIGURAZIONE DI OBSERVIUM
Copiare il file di configurazione con il comando:
0 |
cp /opt/observium/config.php.default /opt/observium/config.php |
Modificare le credenziali del database (nel file /opt/observium/config.php):
0 1 2 3 |
$config['db_host'] = 'localhost'; $config['db_name'] = 'observium'; $config['db_user'] = 'observium'; $config['db_pass'] = 'PASSWORD'; |
Decommentare la riga relativa alla install_dir (nel file /opt/observium/config.php):
0 |
$config['install_dir'] = "/opt/observium"; |
Modificare la configurazione del SNMP (nel file /opt/observium/config.php):
0 1 2 3 4 5 |
// Default snmp version $config['snmp']['version'] = "v2c"; // Snmp max repetition for faster requests $config['snmp']['max-rep'] = TRUE; // Default snmp community list to use when adding/discovering $config['snmp']['community'] = [ "public", "second-community-string" ]; |
Modificare la configurazione per gli alerts (nel file /opt/observium/config.php):
0 1 2 3 4 |
// Enable alerter $config['poller-wrapper']['alerter'] = TRUE; // Set up a default alerter (email to a single address) $config['email']['default'] = "user@your-domain"; $config['email']['from'] = "Observium <observium@your-domain>"; |
Se vengono configurati gli alerts tramite SMTP, è necessario configurare Postfix come smarthost locale.
Inizializzare lo schema del DB:
0 |
/opt/observium/discovery.php -u |
Creare la directory per gli RDDs con i comandi:
0 1 |
mkdir /opt/observium/rrd chown www-data:www-data /opt/observium/rrd |
CONFIGURAZIONE DEI LOGS
Creare la directory dei logs con il comando:
0 |
mkdir -p /var/log/observium |
Aggiungere la configurazione necessaria in /opt/observium/config.php:
0 1 |
// Logs directory $config['log_dir'] = '/var/log/observium'; |
Creare il file /etc/logrotate.d/observium per la configurazione di logrotate:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
/var/log/observium/*.log { daily missingok rotate 14 compress delaycompress notifempty create 640 root adm sharedscripts prerotate if [ -d /etc/logrotate.d/httpd-prerotate ]; then run-parts /etc/logrotate.d/httpd-prerotate fi endscript postrotate if pgrep -f ^/usr/sbin/apache2 > /dev/null; then invoke-rc.d apache2 reload 2>&1 | logger -t apache2.logrotate fi endscript } |
CONFIGURAZIONE DI APACHE
Disabilitare il VHOST di default:
0 |
a2dissite 000-default.conf |
Aggiungere il VHOST di Observium nel file /etc/apache2/sites-available/observium.conf:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<VirtualHost *:80> ServerName observium.domain.local ServerAdmin webmaster@domain DocumentRoot /opt/observium/html <FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch> <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /opt/observium/html/> DirectoryIndex index.php Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/observium_error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/observium_access.log combined </VirtualHost> |
Per un maggior livello di sicurezza si consiglia di effettuare anche le seguenti configurazioni di Apache.
Modificare nel file /etc/apache2/apache2.conf:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<Directory /> #Options FollowSymLinks AllowOverride None Require all denied </Directory> <Directory /usr/share> AllowOverride None #Require all granted Require all denied </Directory> <Directory /var/www/> #Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> |
Modificare nel file /etc/apache2/conf-available/security.conf:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# # ServerTokens # This directive configures what you return as the Server HTTP response # Header. The default is 'Full' which sends information about the OS-Type # and compiled in modules. # Set to one of: Full | OS | Minimal | Minor | Major | Prod # where Full conveys the most information, and Prod the least. #ServerTokens Full ServerTokens Prod # # Optionally add a line containing the server version and virtual host # name to server-generated pages (internal error documents, FTP directory # listings, mod_status and mod_info output etc., but not CGI generated # documents or custom error documents). # Set to "EMail" to also include a mailto: link to the ServerAdmin. # Set to one of: On | Off | EMail ServerSignature Off # # Forbid access to version control directories # # If you use version control systems in your document root, you should # probably deny access to their directories. For example, for subversion: # <DirectoryMatch "/\.svn"> Require all denied </DirectoryMatch> # # Setting this header will prevent MSIE from interpreting files as something # else than declared by the content type in the HTTP headers. # Requires mod_headers to be enabled. # Header set X-Content-Type-Options: "nosniff" # # Setting this header will prevent other sites from embedding pages from this # site as frames. This defends against clickjacking attacks. # Requires mod_headers to be enabled. # Header set X-Frame-Options: "sameorigin" |
Abilitare il VHOST di observium:
0 |
a2ensite observium.conf |
Abilitare il modulo PHP mcrypt:
0 |
phpenmod mcrypt |
Se viene mostrato il seguente errore, ignorarlo e proseguire:
WARNING: Module mcrypt ini file doesn’t exist under /etc/php/7.4/mods-available
WARNING: Module mcrypt ini file doesn’t exist under /etc/php/7.4/mods-available
Disabilitare il modulo di Apache2 event in favore del modulo prefork (su Debian 11 dovrebbe già essere così di default) con i seguenti comandi:
0 1 |
a2dismod mpm_event a2enmod mpm_prefork |
Abilitare il modulo per il PHP (dovrebbe già essere abilitato):
0 |
a2enmod php7.4 |
Abilitare il modulo rewrite:
0 |
a2enmod rewrite |
Abilitare il modulo headers (solo se si ha modificato il file security.conf):
0 |
a2enmod rewrite |
Verificare la configurazione di Apache:
0 |
apachectl configtest |
Riavviare il servizio:
0 |
systemctl restart apache2.service |
Navigare su http://IP e verificare che venga mostrata la pagina di login:
LOGIN SU OBSERVIUM
Creare un’utenza di admin (10 corrisponde al livello admin):
0 |
/opt/observium/adduser.php <username> <password> 10 |
Navigare su http://IP ed effettuare il login con le credenziali appena create.
AGGIUNTA DI UN DISPOSITIVO
Per aggiungere un dispositivo da CLI eseguire il comando:
0 |
./add_device.php <hostname> <community> v2c |
Per aggiungere un dispositivo da Web UI, accedere come amministratore e navigare su Devices > Add device:
Compilare l’hostname, la community string (necessario solo se diversa da quelle specificate nel file “config.php”), eventualmente gli altri dettagli ed infine cliccare su “Add device”:
ESECUZIONE DEL POOLING
Per effettaure il pooling eseguire i comandi:
0 1 |
/opt/observium/discovery.php -h all /opt/observium/poller.php -h all |
Nel caso in cui vengano mostrati diversi warning durante il pooling relativi ad indici, variabili ed offset non definiti, è possibile disabilitarli modificando nel file /etc/php/7.4/cli/php.ini la riga realativa a error_reporting in:
0 |
error_reporting = E_ALL & ~E_NOTICE |
CONFIGURAZIONE DI CRONTAB
Per configurare il pooling periodico e l’housekeeping tramite crontab aggiungendo il file /etc/cron.d/observium:
0 1 2 3 4 5 6 7 8 9 |
# Run a complete discovery of all devices once every 6 hours 33 */6 * * * root /opt/observium/observium-wrapper discovery >> /dev/null 2>&1 # Run automated discovery of newly added devices every 5 minutes */5 * * * * root /opt/observium/observium-wrapper discovery --host new >> /dev/null 2>&1 # Run multithreaded poller wrapper every 5 minutes */5 * * * * root /opt/observium/observium-wrapper poller >> /dev/null 2>&1 # Run housekeeping script daily for syslog, eventlog and alert log 13 5 * * * root /opt/observium/housekeeping.php -ysel >> /dev/null 2>&1 # Run housekeeping script daily for rrds, ports, orphaned entries in the database and performance data 47 4 * * * root /opt/observium/housekeeping.php -yrptb >> /dev/null 2>&1 |
CONFIGURAZIONE DELLA MEMORIA DEL PHP
Aumentare la memoria dedicata al PHP modificando il file /etc/php/7.4/apache2/php.ini:
0 |
memory_limit = 512M |
In questo caso sono stati configurati 512MB, ma è possibile selezionare la quantità di memoria richiesta in base alle esigenze (utilizzare un multiplo di 128MB).
Riavviare Aapche:
0 |
systemctl restart apache2.service |
CONFIGURAZIONE DI OPCACHE
Configurare Opcache modificando il file /etc/php/7.4/mods-available/opcache.ini:
0 1 2 3 4 |
; configuration for php opcache module zend_extension=opcache.so opcache.enable=1 opcache.enable_cli=1 opcache.file_cache=/tmp/php-opcache |
Aggiungere il file /etc/tmpfiles.d/php-cli-opcache.conf:
0 |
d /tmp/php-opcache 1777 root root 1d |
Creare la directory temporanea:
0 |
systemd-tmpfiles --create /etc/tmpfiles.d/php-cli-opcache.conf |
Riavviare Aapche:
0 |
systemctl restart apache2.service |
CONFIGURAZIONE DI APCU CACHE
Installare il modulo PHP:
0 |
apt install php-apcu |
Per abilitare il modulo per Observium aggiungere nel file /opt/observium/config.php:
0 1 2 |
// Cache $config['cache']['enable'] = TRUE; $config['cache']['driver'] = 'apcu'; |
Riavviare Aapche:
0 |
systemctl restart apache2.service |
Per verificare le informazioni riguardo alla cache aggiungere alla fine dell’URL cache_info:
CONFIGURAZIONE DI LLPD e CDP
Observium è in grado di generare la mappa di rete con le informazioni ricevute dagli apparati tramite SNMP:
Per abilitare la generazione della mappa di rete, è necessaria l’abilitazione dei protocolli LLPD e CDP (per i devices Cisco) sugli apparati di rete.
ABILITAZIONE DELL’LLDP SUI FIREWALL FORTIGATE
Sui FortiGate è possibile abilitare il protocollo LLPD globalmente o per singola interfaccia.
Per abilitare il protocollo tramite Web UI per singola interfaccia, navigare su Network > Interface, selezionare l’interfaccia da modificare e abilitare le seguenti impostazioni:
Per abilitare il protocollo tramite CLI per singola interfaccia eseguire:
0 1 2 3 4 5 |
config system interface edit <port> set lldp-reception enable set lldp-transmission enable next end |
Per abilitare il protocollo globalmente eseguire il seguente comando da CLI:
0 1 2 3 |
config system global set lldp-reception enable set lldp-transmission enable end |
Successivamente, assicurarsi che le interfacce utilizzino le impostazioni del VDOM:
ABILITAZIONE DELL’LLDP SUGLI SWITCH CISCO
Sugli switch Cisco è possibile abilitare i protocolli LLPD e CDP globalmente o per singola interfaccia, di default il protocollo CDP è abilitato globalmente.
Per abilitare i protocolli globalmente tramite CLI eseguire (sistemi operativi Cisco IOS-XE):
0 1 2 3 4 |
conf t lldp run cdp run end write |
Per abilitare i protocolli per singola interfaccia tramite CLI eseguire (sistemi operativi Cisco IOS-XE):
0 1 2 3 4 5 6 |
conf t interface gi1/0/1 lldp transmit lldp receive cdp enable end write |
Sostituire gi1/0/1 con il nome dell’interfaccia da configurare.
Per abilitare i protocolli globalmente tramite CLI eseguire (sistemi operativi Cisco NX-OS):
0 1 2 3 4 5 6 7 8 9 10 |
conf t lldp {holdtime seconds | reinit seconds | timer seconds} # # Use the holdtime option to set the length of time (10 to 255 seconds, default 120 seconds) that a device should save LLDP information received before discarding it. # Use the reinit option to set the length of time (1 to 10 seconds, default 2 seconds) to wait before performing LLDP initialization on any interface. # Use the timer option to set the rate (5 to 254 seconds, default 30 seconds) at which LLDP packets are sent. # Credits by Cisco. # cdp enable end write |
Per abilitare i protocolli per singola interfaccia tramite CLI eseguire (sistemi operativi Cisco NX-OS):
0 1 2 3 4 5 6 |
conf t interface gi1/0/1 lldp transmit lldp receive cdp enable end write |
Sostituire gi1/0/1 con il nome dell’interfaccia da configurare.
Infine per visualizzare la mappa di rete aspettare che vengano raccolti i dati sugli apparati tramite SNMP (circa 10 minuti) e su Observium navigare sul mappamondo e poi su Network Map e su Network Trafic Map:
0 commenti