背景
背景很简单,内部NTP系统出现故障,时间不准确,且误差很大。

需求
监控NTP系统运行状态,与正确时间进行对比,并计算偏差值。

设计
利用python模拟NTP client,分别从内部NTP系统和Internet NTP系统获取时间,并计算2个时间的差值。

实现
实现起来也很简单,用ntplib 和 time 2个库搞定。

简要说明一下:
1.‘pool.ntp.org’ 是来自互联网的时间服务器虚拟集群。
2.ctime函数将类似‘16574833.8934’格式时间转换为易读字符串格式。
3.可使用schedule库将程序定时执行,取相应返回值。
4.前端可以使用grafana或splunk等进行展示。

示例代码如下:

import ntplib
import time

ntp_client = ntplib.NTPClient()
response_outside= ntp_client.request(‘pool.ntp.org’).tx_time
print(‘互联网时间: ‘, time.ctime(response_outside))
response_inside = ntp_client.request(‘192.168.100.5’).tx_time
print(‘内部时间: ‘, time.ctime(response_inside))

print(‘时间差值: ‘, response_inside – response_outside)

运行结果:
%title插图%num %title插图%num