Skip to content

hans-mayer/ntpgraph

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ntpgraph

make NTP statistic files visible as graph

for UNIX like systems

bash scripts using gawk, gnuplot and gnuplot-x11

  • ntp_shps
  • ntp_shdiff
  • ntptconv
  • ntp_shavail

Ubuntu and Debian prerequisites: apt-get install gawk gnuplot gnuplot-x11
Before version 2025/10/08 it was important to use ksh93 and not something different like "mksh"
In the current version all scripts are using "bash"

ntp_shps

usage

# ntp_shps

show NTP peerstats or loopstats values as graph  - v 2025 11 08 
  author: ntpgraph@ma.yer.at 
  source: https://github.com/hans-mayer/ntpgraph 

usage: /opt/iiasa/bin/ntp_shps [ -C path ] [ -L ] -s|-i|-o|-d|-r|-j | -O|-D|-E|-S|-P [ -p value ] [ -a ] [ -A ] [ -t value ] [ -m min max | -M offset ] [ -N value ] [ -c ] [ -q ] [ -l ] [ -w value ] [ -x range ][ -y range ] [ -F n ] [ -f IMG ] [ -Y string ] [ -Z 1|9 ] [ IP ] DATESPEC 
   DATESPEC is MMDD in year 2025 or YYYYMMDD or . (today) or - (yesterday) or MMD[x-z] 
   DATESPEC may also be path to peerstats/loopstats file 
   IP address  - only necessary for peerstats graph but not for loopstats 
               - can be real IP or i.e. 127.127.22.0 or PPS(0) 

   -C config-file  - overwrite searching the config file 
   -s              - success rate 
   -p value        - poll interval used for calculation of success rate, default 64 
   -c              - y-axis is number and not percent , usefull for success rate 
   -i              - interval between updates 
   -a              - print average line 
   -A              - save average result in file /tmp/ntp_shps_average / only with -a option usefull 
   -l              - straight line instead of smooth csplines 
   -f IMG          - output to file - IMG can be jpeg, png, ... 
   -x range        - low:high, example 1:10.75 , default autorange -0.5:24.8 
   -y range        - low:high, example -0.1:0.1 , default autorange , to mirror replace high and low 
   -t value        - timestemps per hour - default 1 
   -w value        - line width 
   -M offset       - offset values for calculation, based on precalcualted offset instead of -m 
   -N value        - take each n'th record for calculation , default each record = 1 
   -q              - queued days - multiple days are not overlapped 
   -m min max      - minimum and maximum values for calculation, only in combination with next 4 options below 
   -o              - show offset from peerstats file - column 5 
   -r              - show roundtrip delay from peerstats file - column 6 
   -d              - show dispersion from peerstats file - column 7 
   -j              - show rms jitter from peerstats file - column 8 
   -F n            - fit function, n polynomial ( 1 or 2 )  
   -b              - label at bottom - only for fit function 
   -Z 1|9          - debug  1 ... less, 9 ... more 
   -Y string       - y-axis format, example 8.6f 
   -L              - use loopstats file instead of peerstats file , without IP as argument 
                     this option is mandatory for the next 5 options 
   -O              - show offset from loopstats file - column 3 
   -D              - show drift compensation from loopstats file - column 4 
   -E              - show estimated error from loopstats file - column 5 
   -S              - show stability from loopstats file - column 6 
   -P              - show polling interval from loopstats file - column 7 

examples

offset by a GPS disciplined NTP server

ntp_shps -a -o -f png 127.127.28.1 0711

success rate for a DCF receiver

of course it can't be more than 100%. but there two reasons why the graph shows more than 100 %

    1. the reference clock is updated each 64 seconds.
      therefore an exact count of possible updates within one hour is hard to calculate
    1. the smooth function generates an overshot. adding the option -l gives sometimes better results
ntp_shps -a -s -f png 127.127.8.0 20170112

interval between updates for a DCF receiver

if all data-grams are received all intervals are 64 seconds this gives an indication how well the receiver performs

ntp_shps -a -i -f png -y -50:300 127.127.8.0 0112

round-trip delay between a remote peer and the local server

the local NTP server is connected with ADSL to the Internet

ntp_shps -a -r -y 0:0.03 -f png some.ip.addr 0723

using the FIT function to interpolate the measured values

The fit option must have an additional value of 1 or 2

The function is defined for value

1: line(x) = y0 + m*x   
2: line(x) = y0 + m*x + n*x^2
ntp_shps -o -b -x 10:18 -F 1 -f png 127.127.22.0 .

Now you get an additional ( green ) line with function: line(x) = y0 + m*x

On error output one can directly read the value: m = -1.18075e-05

With debug option -D the fit log file "/tmp/fit.log.$$" will not be deleted for gnuplot version >= 4.6 .

ntp_shdiff

usage

# ntp_shdiff

show time difference for 2 NTP servers as graph - v 2025 10 08
  author: ntpgraph@ma.yer.at 
  source: https://github.com/hans-mayer/ntpgraph 

usage: ./ntp_shdiff [ -C path ] [ -a ] [ -f ] [ -l ] [ -m value ] [ -c low high ] [ -t value ] [ -w value ] [ -y range ] [ -F n ] [ -L ] [ -D 1|9 ] IP1 IP2 DATESPEC 
   DATESPEC is MMDD in year 2025 or YYYYMMDD or . (today) or - (yesterday) 
   DATESPEC can also be path to peerstats file

   -C config-file  - overwrite searching the config file 
   -x range        - low:high, example 1:10 , default autorange -0.5:24.8 , time in hours 
   -y range        - low:high, example -0.1:0.1 , default autorange 
   -a              - print average line 
   -l              - straight line instead of smooth csplines 
   -f IMG          - output to file in current working directory - IMG can be jpeg, png, ... 
   -t number       - values per hour for average calculation, default is 1  
   -m value        - maximum time difference - default 1.1 second 
   -c low high     - lower and upper limit to calculate - default 1.1 second 
   -F n            - fit function, n polynomial ( 1 or 2 ) 
   -L              - label at bottom - only for fit function 
   -w value        - line width 
   -D 1|9          - debug  1 ... less, 9 ... more 

example

time difference between two NTP server

ntp_shdiff -a -f png 127.127.28.1 some.ip.addr 0724

ntptconv

ntp time convert

make the time stamp in various statistic files human readable

example

without ntptconv

$ cat /var/log/ntpstats/peerstats.20150725 | grep 0.001142971
57228 86324.503 192.168.241.190 9024 0.005973466 0.001142971 0.000946181 0.000013892

with ntptconv

$ cat /var/log/ntpstats/peerstats.20150725 | grep 0.001142971 | ntptconv
57228 23:58:44 192.168.241.190 9024 0.005973466 0.001142971 0.000946181 0.000013892

ntp_shavail

usage

# ntp_shavail

show NTP available peers as graph  - v 2025 10 08 
  author: ntpgraph@ma.yer.at 
  source: https://github.com/hans-mayer/ntpgraph 

usage: /uni/bin/ntp_shavail [ -n ] [ -s "string" ] [ -C path ] [ -D 1|9 ] [ -f IMG ] DATE 
   date is MMDD in year 2025 or YYYYMMDD or . or - ( . is today, - is yesterday  ) 
   -f IMG          - output to file - IMG can be jpeg, png, ... 
   -C config-file  - overwrite searching the config file 
   -n              - don't take servers marked as noselect for calculation 
   -s hosts        - only selected hosts ( egrep syntax, e.g. '127.127|192.168' ) 
   -D 1|9          - debug  1 ... less, 9 ... more 

ntp_shavail will show all available NTP server for a given day. The option -n gives the possibility to exclude server which are marked as "noselect" in the configuration file. On the Y axis one can see all server. For example server #3 ( 192.168.241.190 ) called "blitz". All it's dots are on the base line which is 3.0 - the .0 says "reject". An other example for server #4. It was most of the time a candidate (+) on line 4.4 and sometime a peer (*) on y-value 4.6
The symbols ( x - + # o ) have the same meaning as "ntpq" shows.

ntp_shavail -f png .

External link

If you are running a NTP server with a GPS module you may be interested in this scripts I wrote:

https://github.com/hans-mayer/sat_usage

About

shell / gawk / gnuplot scripts for ntp statistics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages