Despite the recommendation of reading the NTP FAQ (even when possibly not updated recently), I'd like to update https://superuser.com/a/181348/964771:
As current versions disabled the private ntpdc protocol (because of possibly amplification attacks), you should use ntpq instead.
ntpq has been enhanced and knows the sysinfo command, too:
# ntpq -nc sysinfo
associd=0 status=0615 leap_none, sync_ntp, 1 event, clock_sync,
system peer: [2003:ee:2f02:8800:cece:1eff:fec8:f98f]:123
system peer mode: client
leap indicator: 00
stratum: 4
log2 precision: -25
root delay: 18.625
root dispersion: 47.180
reference ID: 195.81.109.67
reference time: e8d6d32d.73b8521b Sun, Oct 15 2023 23:07:57.452
system jitter: 0.000000
clock jitter: 29.838
clock wander: 5.124
broadcast delay: -50.000
symm. auth. delay: 0.000
Another useful command is "read list" (rl):
# ntpq -nc rl
associd=0 status=0615 leap_none, sync_ntp, 1 event, clock_sync,
version="ntpd 4.2.8p17@1.4004-o Wed Jun 7 12:00:00 UTC 2023 (1)",
processor="x86_64", system="Linux/5.14.21-150500.55.28-default", leap=00,
stratum=4, precision=-25, rootdelay=18.625, rootdisp=49.100,
refid=195.81.109.67,
reftime=e8d6d32d.73b8521b Sun, Oct 15 2023 23:07:57.452,
clock=e8d6d435.8a3ce64f Sun, Oct 15 2023 23:12:21.539, peer=4544, tc=7,
mintc=3, offset=-16.434911, frequency=-1.411, sys_jitter=0.000000,
clk_jitter=29.838, clk_wander=5.124
Probably the most important bits are the string clock_sync (sync_ntp) and the offset.
rootdisp (root dispersion) give a general quality indicator:
The lower the value the better the quality (in simple words).
Finally, RFC 8633 (Network Time Protocol Best Current Practices) may be a useful resource, too.
Last, but not least, UNIX systems that support the NTP time interface (as Linux does) can display the sync status of the kernel clock using ntptime:
# ntptime
ntp_gettime() returns code 0 (OK)
time e8d6d6eb.21a58710 Sun, Oct 15 2023 23:23:55.131, (.131432979),
maximum error 533452 us, estimated error 29838 us, TAI offset 0
ntp_adjtime() returns code 0 (OK)
modes 0x0 (),
offset -386.699 us, frequency -1.411 ppm, interval 1 s,
maximum error 533452 us, estimated error 29838 us,
status 0x2001 (PLL,NANO),
time constant 6, precision 0.001 us, tolerance 500 ppm,
Here the return value (OK) and the status (despite from estimated error) is important: if the return value or status indicate "TIME_ERROR" or "0x41", there is a problem to analyze.