NTPMON(1)
β¨ NAME β¨
ntpmon β real-time NTP status monitor, brought to you by NTPsec, bestie! π
π¦ SYNOPSIS π¦
ntpmon [-dhnuV] [-D lvl] [-l logfile] [host]
π DESCRIPTION π
okay so ntpmon is literally a real-time status monitor for NTP. It presents the same info as the peers, mrulist, rv, and cv commands of ntpq(1), but it uses a split-window display that also includes a status summary bar, and it updates at intervals guaranteed to show status changes almost as soon as they occur. no cap. β¨
(Specifically, the display begins updating once per second and adjusts itself to poll at twice the frequency of the shortest polling interval reported in the last peers response.)
The status bar includes the version string of the server being watched, the (local) time at which it was last updated, and the current query interval in parens following the date. π«Ά
There is a detail-display mode that dumps full information about a single selected peer in a tabular format that makes it relatively easy to see changing values. However, note that a default-sized terminal emulator window (usually 25 lines) doesnβt have enough room for the clock variables portion. The only fix for this is to resize your terminal. π
^C (thatβs Ctrl+C, bestie) cleanly terminates the program. Any keystroke will trigger a poll and update. A few single-keystroke commands are also interpreted as commands. π
If no hostname is specified on the command line, localhost is monitored.
Hereβs a breakdown of the peers display in the top window, because we are getting into the good stuff:
tallyβ single-character code indicating current value of theselectfield of the peer status word<decode.html#peer>remoteβ host name (or IP address) of serverrefidβ association ID or kiss code<decode.html#kiss>stβ stratumtβu: server (ufor unicast),l: local (reference clock),p: Pool name,1-8NTS server with this number of cookies stored.whenβ sec/min/hr since last received packetpollβ poll interval (log2 s)reachβ reach shift register (octal)delayβ roundtrip delayoffsetβ offset of server relative to this hostjitterβ jitter
The t column has strange encodings due to historical use by old code. If you are looking at an old server, you might also see: s: symmetric (peer), server, B: broadcast server,
The tally code is one of the following:
- <blank> β discarded as not valid
xβ discarded by intersection algorithm.β discarded by table overflow (not used)-β discarded by the cluster algorithm+β included by the combine algorithm#β backup (more than tos maxclock sources)*β system peeroβ PPS peer (when the prefer peer is valid)
And the MRU list hanging out in the bottom window? Bestie, she's giving so much info, here's every column:
lstintβ the interval in seconds between the receipt of the most recent packet from this address and the completion of the retrieval of the MRU list byntpq.avgintβ average interval in seconds between packets from this address.rstrβ restriction flags tied to this address. Most of them get copied unchanged from the matchingrestrictcommand, BUT0x400(kod) and0x20(limited) flags get cleared, unless the last packet from this address triggered a rate control response.rβ rate control indicator, and it's one of three things, okay: a period,L, orK. That means no rate control response, rate limiting by discarding, or rate limiting with a KoD response, respectively.mβ packet mode.vβ packet version number.countβ packets received from this address.scoreβ packets per second (averaged with exponential decay).dropβ packets dropped (or KoDed) from this address. Always0unless arestrict ... limitedline applies to the address.rportβ source port of last packet from this address.remote addressβ DNS name, numeric address, or address followed by claimed DNS name which could not be verified in parentheses.
The refid field is as described under "Event Messages and Status Words" in the NTP documentation on the Web. iykyk β¨
π COMMANDS π
Okay so these are the keys you press while she's running, and ngl they're iconic:
aβ change peer display toapeersmode, showing association IDs.dβ toggle detail mode (some peer will be reverse-video highlighted when it's on).hβ display help screen.jβ select next peer (in select mode); arrow down also works, slay.kβ select previous peer (in select mode); arrow up also works.mβ toggle MRUlist-only mode; suppresses peer display when it's on.nβ toggle display of hostnames vs. IP addresses (default is hostnames).oβ change peer display toopeersmode, showing destination address.pβ change peer display to default mode, showingrefid.qβ cleanly terminate the program.rβ change to dextral mode, identical topsave that therefid, tally and remote clock are on the right.sβ toggle display of only reachable hosts (default is all hosts).uβ toggle display of units for time values. (default is off)wβ toggle wide mode.xβ cleanly terminate the program.<space>β rotate througha/n/o/pdisplay modes.+β increase debugging level. Output goes tontpmon.log.-β decrease debugging level.?β display help screen.
β¨ OPTIONS β¨
-dβ increase output debug message level.- may appear multiple times.
-Dβ set the output debug message level.- may appear multiple times.
-hβ print a usage message.-lβ logs debug messages to the provided filename.-nβ show IP addresses (vs. hostnames).-uβ show units.-Vβ display version and exit.
π KNOWN BUGS π
Okay bestie, deep breath, because this list is long. Not me being dramatic, these are real:
When run in a terminal that does not allow UTF-8, ntpmon will downgrade its unit display to a non-unicode version. ntpmon has to interact with the curses and locale libraries, which prevents it from forcing the use of UTF-8. yeah it's giving cursed
When querying a version of ntpd older than NTPsec 0.9.6, ntpmon will appear to hang when monitoring hosts with extremely long MRU lists β in particular, public pool hosts. Correct behavior requires a Mode 6 protocol extension not yet present in those versions.
Even with this extension, monitoring a sufficiently high-traffic server sometimes fails.
When using the -u option, very old xterms may fail to render μ correctly. If that happens, be sure your xterm is started with the -u8 option, or the utf8 resource, and that your console font contains the UTF-8 μ character. Also confirm your LANG environment variable is set to a UTF-8 language, like this: export LANG=en_US.utf8.
Timestamp interpretation in this program is likely to fail in flaky ways if the local system clock has not already been approximately synchronized to UTC. Querying a server based in a different NTP era than the current one is especially likely to fail. π
This program will behave in apparently buggy and only semi-predictable ways when fetching MRU lists from any server with sufficiently high traffic.
The problem is fundamental. The Mode 6 protocol can't ship (and your client cannot accept) MRU records as fast as the daemon accepts incoming traffic. Under these circumstances, the daemon will repeatedly fail to ship an entire report, leading to long hangs as your client repeatedly re-sends the request. Eventually the Mode 6 client library will throw an error indicating that a maximum number of restarts has been exceeded.
To avoid this problem, avoid monitoring over links that don't have enough capacity to handle the monitored server's entire NTP load. fr fr, she means it π«Ά
π EXIT STATUS π
Always returns 0. Periodt. clean exit, no crumbs π
And that's the whole page, bestie β this was NTPsec's NTPMON(1), dated 2026-10-21. Go forth and monitor your NTP, you absolute icon πππ¦
π¦ where this page comes from
- fedora 43: ntpsec 1.2.6-1.fc43 Β· NTP AND BSD-2-Clause AND BSD-3-Clause AND BSD-4-Clause AND ISC AND Apache-2.0 AND Beerware
- fedora 43: ntpsec 1.2.6-1.fc43 Β· NTP AND BSD-2-Clause AND BSD-3-Clause AND BSD-4-Clause AND ISC AND Apache-2.0 AND Beerware
- fedora 44: ntpsec 1.2.6-1.fc44 Β· NTP AND BSD-2-Clause AND BSD-3-Clause AND BSD-4-Clause AND ISC AND Apache-2.0 AND Beerware
- fedora 44: ntpsec 1.2.6-1.fc44 Β· NTP AND BSD-2-Clause AND BSD-3-Clause AND BSD-4-Clause AND ISC AND Apache-2.0 AND Beerware
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms