check_ntp_peers: script bash per il monitoraggio dei peer NTP mediante Nagios

Il protocollo NTP ci consente, in soldoni, di tenere aggiornate la data e l'ora di sistema, sincronizzandole con un'apposita sorgente di tempo.
Per i sistemi *nix, nella stragrande maggioranza dei casi, è sufficiente configurare il servizio NTP (attivo mediante il demone ntpd, o, in alternativa, utilizzando l'accoppiata ntpdate + crontab) agendo sul suo file diconfigurazione (ovvero ntp.conf) e definendo le sorgenti alle quali sincronizzarsi.
Ad esempio: server ntp1.inrim.it server ntp2.inrim.it Ora, per saggiare lo stato di sincronizzazione del nostro server, a parte il classico comando date, è possibile utilizzare un apposito tool per le interrogazioni NTP, ovvero ntpq: # ntpq ntpq> pe      remote           refid      st t when poll reach   delay   offset  jitter ============================================================================== *ntp1.inrim.it   .CTD.            1 u    4   64  377   45.819    0.219   2.655 +ntp2.inrim.it   .CTD.            1 u  903 1024  377   48.974    1.788   0.978 In particolare, con il comando pe, sono riuscito a recuperare la lista dei peers (ovvero le sorgenti di tempo) con i relativi valori di offset (i quali rappresentano la discrepanza, in ms, tra l'ora locale di sistema e quella del peer stesso), di jitter (ovvero il ritardo, anch'esso espresso in ms, accumulato tra 2 aggiornamenti immediatamente successivi) e di delay (RTT, in ms, associato alla comunicazione con il time server remoto).
Da notare, inoltre, che il campo refid indica qual è (se esiste, dipende dallo stratum, specificato dal campo st) la sorgente di tempo utilizzata a loro volta dai server che sto interrogando (rispettivamente ntp1.inrim.it ed ntp2.inrim.it), mentre il carattere * mostra quale dei 2 server da me definiti all'interno del file ntp.conf sto utilizzando per sincronizzare la data e l'ora di sistema.
Dopo questa breve carrellata introduttiva veniamo al dunque, per cui riporto il contenuto dello scrip bash in grado di tenere sotto controllo i valori associati alle sorgenti NTP definite sul nostro sistema: #!/bin/bash warn_values=$1 crit_values=$2 warn_delay=`echo $warn_values | awk -F "," '{print $1}'` warn_offset=`echo $warn_values | awk -F "," '{print $2}'` warn_jitter=`echo $warn_values | awk -F "," '{print $3}'` warn_delay_len=$((${#warn_delay} - 1)) warn_offset_len=$((${#warn_offset} - 1)) warn_jitter_len=$((${#warn_jitter} - 1)) crit_delay=`echo $crit_values | awk -F "," '{print $1}'` crit_offset=`echo $crit_values | awk -F "," [...]

Leggi tutto l'articolo