Este artículo demuestra el uso de la herramienta ntpq para obtener información y estadísticas sobre el protocolo NTP.



El protocolo NTP (Network Time Protocol) es un protocolo de red de sincronización de relojes (tiempo) entre computadoras sobre redes de latencia variable. Es uno de los protocolos más antiguos de Internet aún en uso. El objetivo de este protocolo es mantener todoso los relojes de una red sincronizados. La versión actualmente utilizada es NTPv4, especificada en la RFC 5909.

Luego de haber instalado y configurado el demonio NTP, puede ser necesario verificar su funcionamiento y obtener estadísticas de sincronización.

Inicialmente es posible comprobar que el servicio está corriendo y existe el proceso correspondiente al demonio NTP:

root@hal9000:~# service ntp status
[ ok ] NTP server is running.
root@hal9000:~# ps aux | grep "[n]tpd"
ntp       1821  0.0  0.0  78728  3916 ?        Ssl  07:10   0:00 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 111:115

Además de examinar el log /var/log/syslog, tal como muestra el artículo anteriormente mencionado:

root@hal9000:~# grep ntpd /var/log/syslog
Dec  9 14:23:27 hal9000 ntpd[1821]: ntpd exiting on signal 15 (Terminated)
Dec  9 14:23:27 hal9000 ntpd[1821]: 192.168.56.12 local addr 192.168.100.7 -> 
Dec 10 07:10:24 hal9000 ntpd[1816]: ntpd 4.2.8p12@1.3728-o (1): Starting
Dec 10 07:10:24 hal9000 ntpd[1816]: Command line: /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 111:115
Dec 10 07:10:24 hal9000 ntpd[1821]: proto: precision = 0.187 usec (-22)
Dec 10 07:10:24 hal9000 ntpd[1821]: Listen and drop on 0 v6wildcard [::]:123
Dec 10 07:10:24 hal9000 ntpd[1821]: Listen and drop on 1 v4wildcard 0.0.0.0:123
Dec 10 07:10:24 hal9000 ntpd[1821]: Listen normally on 2 lo 127.0.0.1:123
Dec 10 07:10:24 hal9000 ntpd[1821]: Listen normally on 3 eth0 192.168.100.7:123
Dec 10 07:10:24 hal9000 ntpd[1821]: Listen normally on 4 lo [::1]:123
Dec 10 07:10:24 hal9000 ntpd[1821]: Listen normally on 5 eth0 [fe80::2354:5edd:fd11:28a7%2]:123
Dec 10 07:10:24 hal9000 ntpd[1821]: Listening on routing socket on fd #22 for interface updates
Dec 10 07:10:24 hal9000 ntpd[1821]: kernel reports TIME_ERROR: 0x41: Clock Unsynchronized
Dec 10 07:10:24 hal9000 ntpd[1821]: kernel reports TIME_ERROR: 0x41: Clock Unsynchronized
Dec 10 07:10:41 hal9000 ntpd[1821]: Soliciting pool server 192.168.56.12
Dec 10 07:10:46 hal9000 ntpd[1821]: new interface(s) found: waking up resolver

Sin embargo, para obtener métricas y estadísticas de sincronización del reloj es necesario recurrir a la herramienta ntpq.

El utilitario ntpq (provisto por el paquete ntp) permite consultar servidores NTP a fin de monitorear las operaciones y rendimiento del protocolo, u obtener información respecto del estado actual de sincronización. Este programa permite trabajar de forma interactiva o controlado desde línea de comandos a través de opciones y parámetros.

Mediante la opción -p de línea de comandos es posible obtener un listado de peers (servidores o sistemas remotos con los cuales se sincroniza la hora) y estado de sincronización:

root@hal9000:~# ntpq -np
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 ntp.linuxito.c  .POOL.          16 p    -   64    0    0.000    0.000   0.000
*192.168.56.12   145.238.203.14   2 u   92  128  377  248.581    0.190   3.032

La opción -n además permite mostrar la salida en formato numérico (no traducir direcciones IP a nombres de host).

En esta salida, la columna "poll" indica el período de sincronización en segundos, mientras que "when" cuenta la cantidad de segundos transcurridos desde la última sincronización. La columna "reach" es un código que expresa el éxito o fallo en conectar con el peer (377 significa que todos los intentos fueron exitosos), "delay" expresa la latencia de la red en milisegundos, "offset" la diferencia entre los relojes (en milisegundos) y "jitter" la diferencia en milisegundos entre dos muestras.

La columna "refid" muestra la dirección IP del servidor de tiempo origen (estrato 0). Este es el servidor desde donde obtiene la hora el peer contra el que sincronizamos. Luego la columna "st" indica el estrato del peer, mientras que "t" indica el tipo ("local", "unicast", "broadcast", "multicast").

Para iniciar nptq en modo interactivo, basta con lanzarlo sin opciones:

root@hal9000:~# ntpq
ntpq> 

En modo interactivo cuenta con un buen número de comandos internos. Mediante help es posible obtener una lista de comandos internos:

ntpq> help
ntpq commands:
:config          drefid           mreadlist        readvar          
addvars          exit             mreadvar         reslist          
apeers           help             mrl              rl               
associations     host             mrulist          rmvars           
authenticate     hostnames        mrv              rv               
authinfo         ifstats          ntpversion       saveconfig       
cl               iostats          opeers           showvars         
clearvars        kerninfo         passociations    sysinfo          
clocklist        keyid            passwd           sysstats         
clockvar         keytype          peers            timeout          
config-from-file lassociations    poll             timerstats       
cooked           lopeers          pstats           version          
cv               lpassociations   quit             writelist        
debug            lpeers           raw              writevar         
delay            monstats         readlist

Pasando como parámetro uno de los comandos internos a help, se obtiene ayuda específica sobre dicho comando:

ntpq> help apeers
function: obtain and print a list of the server's peers and their assocIDs [IP version]
usage: apeers [ -4|-6 ]

El comando interno lpeers muestra la misma lista de peers que mediante la opción de línea de comandos -p:

ntpq> lpeers
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 ntp.linuxito.c  .POOL.          16 p    -   64    0    0.000    0.000   0.000
*192.168.56.12   145.238.203.14   2 u   92  128  377  248.581    0.190   3.032

iostats muestra contadores de entrada/salida como paquetes enviados y recibidos:

ntpq> iostats
time since reset:       6050
receive buffers:        10
free receive buffers:   9
used receive buffers:   0
low water refills:      1
dropped packets:        0
ignored packets:        0
received packets:       199
packets sent:           280
packet send failures:   0
input wakeups:          6356
useful input wakeups:   306

El comando sysinfo muestra un resumen del estado actual del sistema:

ntpq> sysinfo
associd=0 status=0618 leap_none, sync_ntp, 1 event, no_sys_peer,
system peer:        ntp.linuxito.com:123
system peer mode:   client
leap indicator:     00
stratum:            3
log2 precision:     -22
root delay:         258.557
root dispersion:    37.928
reference ID:       192.168.56.12
reference time:     e19a0f55.c303f0d5  Tue, Dec 10 2019  9:34:29.761
system jitter:      0.000000
clock jitter:       0.350
clock wander:       0.046
broadcast delay:    -50.000
symm. auth. delay:  0.000

Para salir del modo interactivo, utilizar el subcomando quit.


Tal vez pueda interesarte


Compartí este artículo