RFc -Restori Fabrizio Consulenze- S.da Buffolara, 67 -43126 Parma- Tel. +39 335 240228 Fax +39 0521 940035 P.IVA 01788460341
Icinga [1]è un progetto open source [2] per il monitoraggio di risorse informatiche. Sorto nel 2009 da un fork [3]di Nagios [4]con l'intenzione di fornire un più ampio e veloce supporto in particolare nella realizzazioni di patch.
Icinga è una parola Zulu che tradurrei (ma non è il mio mestiere) in esamina, controlla. Il sito ufficiale Icinga riporta questo: 'Icinga is a Zulu word meaning ‘it looks for’, ‘it browses’, ‘it examines’. [5]
L'evoluzione di Icinga ha mantenuto la compatibilità con Nagios pur ampliandone funzionalità ed interfaccia. Con Nagios condivide diversi aspetti, i plugins e altro ancora.
Icinga, attualmente, è disponibile la versione 2.3.0 (Icinga2).
Icinga monitorizza i processi, lo stato di dischi, CPU, rete, e ogni parametro che il dispositivo monitorato può rendere disponibile. Può inviare notifiche a allarmi.
La interfaccia classica (Icinga classic UI), integrata nel nucleo (core) di Icinga, è molto simile a quella di Nagios alla quale sono state aggiunte alcune funzionalità.
Icinga Web è una interfaccia ispirata da web 2.0 e che consente un utilizzo più immediato, come ad esempio funzioni drag & drop. Icinga web è un pacchetto software a se stante che comunica con il core di Icinga. Dal 2014 è disponibile la versione Icinga Web 2.
Lo stato, la configurazione e altre informazioni di Icinga sono resi disponibili al mondo esterno, attraverso il modulo DB IDO (Database Icinga Data Output), su un qualunque database supportato da Icinga (MySQL e MariaDB, PostgreSQL, Oracle).
Icinga reporting è un modulo, basato su Jasper Report, per realizzare report.
E' disponibile anche il modulo Icinga Mobile l'interfaccia per smart phone e tablet.
La documentazione di Icinga [11] è buona, anche se alcune modifiche vanno fatte in funzione dell'ambiente di installazione.
L'esempio riportato è per openSuse 13.2
Nella distribuzione di openSuse è disponibile il pacchetto Icinga, la versione 1, ma in questo articolo verrà preso in considerazione Icinga2 partendo dai repository del codice eseguibile.
Il repository, che deve essere abilitato, è il seguente:
http://packages.icinga.org/openSUSE/ICINGA-release.repo [12]
zypper ar http://packages.icinga.org/openSUSE/ICINGA-release.repo zypper ref
E installiamo Icinga 2
zypper install icinga2
L'installazione da alcuni errori sulla verifica delle firme del codice messaggi, ignorati in questa installazione di test:
icinga2-common-2.3.5-1.x86_64(ICINGA (stable release for openSUSE1)): Signature verification failed [4-Signatures public key is not available] Abort, retry, ignore? [a/r/i] (a):i
Completata l'operazione si pososno verificare le funzionalità installate ed abilitate
icinga2 feature list Disabled features: api compatlog debuglog gelf graphite icingastatus livestatus opentsdb perfdata statusdata syslog Enabled features: checker command ido-mysql mainlog notification
Non resta che abilitare anche il servizio e attivarlo:
systemctl enable icinga2 systemctl start icinga2 o rcicinga2 start
Per l'editing e il controllo dela sintassi dei file di configurazione sono disponibili le definizioni per vim e nano, cosa che semplifica la modifica dei file di configurazione. Le definizioni sono in: /usr/share/doc/packages/icinga2-common/syntax
L'attivazione per vim è la seguente (sono i comandi da eseguire):
PREFIX=~/.vim mkdir -p $PREFIX/{syntax,ftdetect} cp /usr/share/doc/packages/icinga2-common/syntax/vim/syntax/icinga2.vim \ $PREFIX/syntax/ cp /usr/share/doc/packages/icinga2-common/syntax/vim/ftdetect/icinga2.vim \ $PREFIX/ftdetect/
Fra i vari frontend [14]disponibili si installa Icinga Web 2 e serve il motore http (apache) e un database. Per quest'ultimo ho deciso di utilizzare MariaDB che è un fork di MySQL e con questo compatibile.
Installazione di Apache2, PHP5, MariaDB e phpMyAdmin (giusto per curiosare nelle tabelle).
zypper in apache2 zypper in php5 php5-mysql apache2-mod_php5 zypper in phpMyAdmin chkconfig apache2 on rcapache2 start
Ora il database: installazione, abilitazione, avvio e password di amministrazione del db (che in questa installazione di prova è banalmente root).
zypper in mariadb mariadb-tools mariadb-client systemctl start mysql.service systemctl enable mysql.service mysqladmin -u root password root
Il core di Icinga, per comunicare con il mondo esterno, per esportarne configurazione e stato, fa uso di un DB (MySQL o PostgreSQL).
DB IDO (Database Icinga Data Output) si occupa dell'integrazione con il database ed è un prerequisito per l'interfaccia web (e non solo).
Occorre installare il programma, creare il database, fornire i permessi all'utente utilizzato da icinga (banalmente icinga) e fornire la struttura del db:
zypper install icinga2-ido-mysql
dalla shell del DB si crea il DB icinga, l'utente icinga (TO 'icinga'@'localhost') con password icinga (IDENTIFYED BY 'icinga' ) ovviamente la password, in un ambiente di produzione, deve essere cambiata con una più sicura.
mysql -u root -p CREATE DATABASE icinga; GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga.* TO 'icinga'@'localhost' IDENTIFIED BY 'icinga'; exit
Si crea la struttura delle tabelle
mysql -u root -p icinga \ < /usr/share/icinga2-ido-mysql/schema/mysql.sql
Occorre poi modificare il file /etc/icinga2/features-available/ido-mysql.conf per inserire le corrette credenziali di accesso al db. In questo caso, si sono utilizzati di valori di default, basta togliere i commenti alle righe che seguono
library "db_ido_mysql" object IdoMysqlConnection "ido-mysql" { user = "icinga" password = "icinga" host = "localhost" database = "icinga" }
Non resta che abilitare le funzionalità richieste dal modulo e riavviare Icinga.
icinga2 feature enable ido-mysql icinga2 feature enable command systemctl restart icinga2
L'interfaccia Web 2 di Icinga richiede l'utente wwwrun faccia parte del gruppo icingacmd
usermod -a -G icingacmd wwwrun
Per la verifica:
id wwwrun
La relativa documentazione è disponibilequi: https://github.com/Icinga/icingaweb2/blob/master/doc/installation.md [17]
Il repository di Icinga Web 2 rimane lo stessi di Icinga 2:
http://packages.icinga.org/openSUSE/ICINGA-release.repo [12]
Quindi non resta che installare e riavvire apache
zypper install icingaweb2 icingacli rcapache2 restart
La documentazione indica anche il comando
groupadd -r icingaweb2
gruppo che risulta già presente.
ed accedere all'interfaccia web:
http://icinga_ip/icingaweb2
Ecco il risultato:
Sono necessari alcuni moduli apache come rewrite o env. Nel caso di errori usare il comando a2enmod per aggiungere i moduli dichiesti e riavviare apache. Es:
a2enmod rewrite rcapache2 restart
[20]Al primo avvio Icinga Web2 propone una procedura di setup che verifica la presenza dei moduli apache necessari, guida nella configurazione di alcune tabelle del database e consente l'mpostazione di alcuni dati come l'utenza di amministrazione.
Per accedere alla configurazione è richiesto un token generato con
icingacli setup token create
Moduli php necessari sono php-ldap, php-imagick e php5-zendFramework-db-adapter-pdo-mysql.
Quest'ultimi disponibili nel repository di Suse di estensione php.
zypper in php-ldap zypper addrepo http://download.opensuse.org/repositories/ server:php:extensions/server_php_openSUSE_Factory/ server:php:extensions.repo zypper ref zypper install php5-imagick zypper in php5-zendFramework-db-adapter-pdo-mysql rcapach2 restart
Installati i moduli php occorre riavviare apache e fare il refresh della pagina web.
[21]Le pagine successive consentono la scelta della modalità di autenticazione (database, ldap o autenticazione esterna). Per questa installazione è database.
[22]Dove salvare le preferenze degli utenti. Le opzioni sono in un file di testo (.ini), nel database o nessun salvataggio. In questa installazione si sceglie database.
[23]Se si sceglie database vengono chiesti i dati per la creazione del database: nome del datbase e dati per accedervi.
Scegliere un nome per il db e l'utenza MySQL
Segue il nome del backend, il default va bene
Il nome e la password di autenticazione a Web 2.
Il meccanimso di logging: syslog, file di testo o nessuno e il livello dei messaggi di log: errori, avvisi debug
L'utenza con i permessi di amministrazione del DB MySQL, servirà per creare il database e le tabelle necessarie a Web 2.
A completamento di questa fase viene presentata una pagina riassuntiva. Siamo quasi alla fine dell'opera.
[28]Ora vengono richiesti i dati necessari per il backend di monitoraggio. La risorsa è quella creata nella installazione di DB IDO.
[29]Vanno quindi inseriti i dati impostati nella nella installazione di DB IDO [30]
[31]L'istanza di monitoraggio fornisce indicazioni ai processi Web 2 su come scambiare dati con Icinga 2. Il file dei comandi altro non è che una named pipe usata per questa comunicazione.
Siamo alla fine, viene presentata una pagina riassuntiva, seguita da una pagina che fornisce indicazione sul successo del setup.
I plugin forniscono l'interfaccia fra la risorsa da monitorare e il software di monitoraggio. Alla prima installazione di Icinga e Web 2 viene monitorato di default il server Icinga stesso (localhost). Se i plugins non sono installati, l'interfaccia Web 2 presenterà una serie di errori e nessun risultato di monitoraggio.
Concettualmente, i plugins, hanno la stessa funzione dei plugin di Nagios anche se il loro interfacciamento verso il core di di Icinga ha subito modifiche e miglioramenti.
Nonostante questo Icinga è pienamente compatibile con i pligin di Nagios che possono essere installati senza problemi su Icinga.
Per questa installazione, però, ho preferito utilizzare i plugins fornito da https://www.monitoring-plugins.org/download/monitoring-plugins-2.1.1.tar.gz [33]
Alcuni dettagli per la installazione sono disponibili qui: http://docs.icinga.org/latest/en/plugins.html [34] e qui: https://wiki.icinga.org/display/howtos/Nagios+Plugins [35]
Il file scaricato va espanso. La procedura di installazione è descritta nel file INSTALL presente nella cartella espansa. Anche il file README fornisce utili informazioni.
I plugins, scritti in C, vanno compilati (occorre quindi avere installato gcc). I passaggi sono relativamente semplici: si lancia la procedura di configure con gli opportuni parametri, il make, per la compialzione dei plugin e make install per la loro installazione.
Da una cartella temporanea:
wget https://www.monitoring-plugins.org/download/ monitoring-plugins-2.1.1.tar.gz tar -xvzf monitoring-plugins-2.1.1.tar.gz cd monitoring-plugins-2.1.1 ./configure --prefix=/usr/local/icinga \ --with-nagios-user=icinga --with-nagios-group=icinga make make install
I plugins sono installati in /usr/local/icinga/lib.
Di default Icinga cerca i plugin in /usr/lib/nagios/plugins/
L'azione più semplice, per superare il problema, è un link simbolico:
ln -s /usr/local/icinga/lib/ /usr/lib/nagios/plugins
Installati correttamente i plugins, l'interfaccia Icinga comincerà a fornire risultati.
Durante le varie procedure si possono incontrare problemi, di seguito ne elenco alcuni.
Dopo il setup di configurazione di Web 2, se si desidera riavviare il setup (per erroi o per altro), questo va riattivato. Lo si può fare dalla interfaccia Web 2, usando il menu di configurazione dei moduli, riattivando il setup Si riavvia la procedura con l'URL http://icinga_ip/icingaweb2/setup.
Verrà richiesto un nuovo token generabile con il comando
icingacli setup token create
All'avvio Icinga monitorizza il server sul quale è installato. Nella installazione di openSuse si presenta un allarme del tipo /run/usr/483/gvfs is not accessible e un avviso di non raggiungibilità della risorsa http
gvfs [36]è un file system virtuale per la gestione di Gnome desktop, di cui poco ci importa ed occorre escluderlo dal controllo di Icinga.
La directory /etc/icinga2/conf.d contiene i file di configurazione delle varie risorse controllate e del localhost.
Il file di configurazione è hosts.conf.
Alla sezione vars.disks["disk"]
occorre aggiungere un parametro per l'esclusione del contollo del file system di tipo gvfs. Il nome esatto si può ricavare dal comando mount
/* Define disks and attributes for service apply rules in `services.conf`. */ vars.disks["disk"] = { /* Escludi il gvfs */ disk_exclude_type = "fuse.gvfsd-fuse" } vars.disks["disk /"] = { disk_partitions = "/" }
Oppure, in modo più generico per tutti dischi di tutti gli host, modificando il file:
/usr/share/icinga2/include/command-plugins.conf
aggiungendo gvfs alla riga:
vars.disk_exclude_type = ["none", "tmpfs", "sysfs", "proc", "devtmpfs", "devfs", "mtmfs", "gvfs"]
Vedi anche:
icinga2 object list --name disk
e
icinga2 daemon -C
Una descrizione più dettagliata dei meccanismi è disponibile qui [37].
La risorsa http, su localhost, esiste, ma non è stata configurata nessuna pagina web un http://localhost [38], mentre esiste, ovviamente http://localhost/icingaweb2 [39]
Per sistemare le cose ed eliminare l'avviso si agisce sempre su hosts.conf modificando le righe come segue (e come indicato nel commento).
/* Define http vhost attributes for service apply rules in /* `services.conf`. */ //vars.http_vhosts["http"] = { // http_uri = "/" //} /* Uncomment if you've sucessfully installed Icinga Web 2. */ vars.http_vhosts["Icinga Web 2"] = { http_uri = "/icingaweb2" }
Links
[1] https://www.icinga.org/
[2] https://www.rfc.it/oss
[3] https://it.wikipedia.org/wiki/Fork_%28sviluppo_software%29
[4] https://www.rfc.it/nagios/installare-nagios
[5] https://www.icinga.org/resources/faq/
[6] https://www.rfc.it/comment/reply/477#comment-form
[7] https://www.rfc.it/category/categoria/monitor
[8] https://www.rfc.it/category/categoria/icinga
[9] https://www.rfc.it/category/categoria/nagios
[10] https://www.rfc.it/category/tipologia/applicativi
[11] http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/getting-started#installing-icinga2
[12] http://packages.icinga.org/openSUSE/ICINGA-release.repo
[13] https://www.rfc.it/comment/reply/478#comment-form
[14] http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/alternative-frontends#alternative-frontends
[15] https://www.rfc.it/comment/reply/479#comment-form
[16] https://www.rfc.it/comment/reply/481#comment-form
[17] https://github.com/Icinga/icingaweb2/blob/master/doc/installation.md
[18] https://www.rfc.it/sites/default/files/u1/icingaweb2.jpg
[19] https://www.rfc.it/comment/reply/482#comment-form
[20] https://www.rfc.it/sites/default/files/u1/icinga%20setup%20token.jpg
[21] https://www.rfc.it/sites/default/files/u1/icinga%20scelta%20db.jpg
[22] https://www.rfc.it/sites/default/files/u1/icinga%20preferenze%20utenti.jpg
[23] https://www.rfc.it/sites/default/files/u1/icinga_db_preferenze.jpg
[24] https://www.rfc.it/sites/default/files/u1/Icinga_nome_backend.png
[25] https://www.rfc.it/sites/default/files/u1/icinga_amministratore.jpg
[26] https://www.rfc.it/sites/default/files/u1/Icinga_log.jpg
[27] https://www.rfc.it/sites/default/files/u1/Icinga_db_admin.jpg
[28] https://www.rfc.it/sites/default/files/u1/Icinga%20backend.jpg
[29] https://www.rfc.it/sites/default/files/u1/Icinga_IDO.jpg
[30] https://www.rfc.it/applicativi/icinga-db-ido-database-icinga-data-output
[31] https://www.rfc.it/sites/default/files/u1/Icinga_istanza_monitoraggio.jpg
[32] https://www.rfc.it/comment/reply/483#comment-form
[33] https://www.monitoring-plugins.org/download/monitoring-plugins-2.1.1.tar.gz
[34] http://docs.icinga.org/latest/en/plugins.html
[35] https://wiki.icinga.org/display/howtos/Nagios+Plugins
[36] https://en.wikipedia.org/wiki/GVFS
[37] http://monitoring-portal.org/wbb/index.php?page=Thread&postID=218503#post218503
[38] http://localhost
[39] http://localhost/icingaweb2
[40] https://www.rfc.it/comment/reply/484#comment-form