Table of Contents

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 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.