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