====== Icinga ======
In **Debian 9 Stretch** non c'è il pacchetto Nagios, esiste piuttosto **Icinga**, un progetto derivato da Nagios che può condividere gran parte delle sonde e plugin già sviluppati.
===== Uso dei Plugin Nagios =====
Nella configurazione predefinita di Debian 9 Stretch in **/etc/icinga/icinga.cfg** c'è la seguente direttiva:
cfg_dir=/etc/nagios-plugins/config
quindi valgono tutte le definizioni eventualmente ereditate da una installazione Nagios. Ad esempio il comando **check-host-alive** eseguito per ogni host da Icinga prende la sua definizione da **/etc/nagios-plugins/config/ping.cfg**.
===== Performance data e grafici =====
È possibile sfruttare il meccanismo dei **[[https://www.icinga.com/docs/icinga1/latest/en/perfdata.html|performance data]]** per far generare dei grafici relativi ai servizi monitorati con Icinga. Vediamo ad esempio come generare i grafici relativi al ping, cioè i valori di **Round-Trip Average** e di **Packet Loss**.
Anzitutto conviene attivare l'analisi dei //performance data// solo sul servizio in questione, verificare ad esempio che il template **generic-service** abbia la direttiva disabilitata. Le direttive sono **process_perf_data** e **action_url**:
define service {
hostgroup_name ping-servers
service_description Ping
check_command check_ping!1000.0,20%!3000.0,60%
process_perf_data 1
action_url /rrd4icinga/action_url_graph.php?host=$HOSTNAME$
use generic-service
}
Vedremo il parametro **action_url** tra breve, per il momento facciamo in modo che esista uno script che riceve i performance data e li memorizzi da qualche parte. Il comando **process-service-perfdata** è definito per default in **/etc/icinga/commands.cfg** e scrive tutti i dati nel file ''/var/cache/icinga/service-perfdata.out''. Noi predisponiamo uno script più sofisticato che alimenta un archivio RRD:
define command {
command_name process-service-perfdata
command_line /opt/rrd-update "$LASTSERVICECHECK$" "$HOSTNAME$" "$SERVICEDESC$" "$SERVICEPERFDATA$"
}
Il parametro **%%$LASTSERVICECHECK$%%** viene sostituito dal timestamp (i secondi trascorsi dallo Unix Epoch), mentre il parametro **%%$SERVICEPERFDATA$%%** contiene i dati veri e propri, ecco un esempio:
rta=32.287998ms;1000.000000;2000.000000;0.000000 pl=0%;20;60;0
Per ogni grandezza abbiamo: **nome**=**valore_unità_di_misura**;**soglia_warning**;**soglia_critica**;**???**. Lo script deve ovviamente gestire tutto il necessario, ad esempio creare l'archivio RRD se questo non esiste, gestire host diversi, ecc. In pratica farà le chiamate necessarie a **rrdtool** passando i parametri **create** o **update** con i necessari valori.
==== Presentazione del grafico ====
La presenza del parametro **action_url** fa comparire una icona (predefinita quella a forma di ingranaggio) accanto al servizio per cui è disponibile il dato. Sarà necessario predisporre una pagina opportuna che generi al volo i grafici a partire dall'archivio RRD.
Qui un archivio con tutto il necessario: **{{icinga-performance-data-ping-graph.tgz}}**.