====== 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}}**.