Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Validation 如何验证NTP时间同步_Validation_Time_Synchronization_Statistics_Ntp - Fatal编程技术网

Validation 如何验证NTP时间同步

Validation 如何验证NTP时间同步,validation,time,synchronization,statistics,ntp,Validation,Time,Synchronization,Statistics,Ntp,我需要创建一个应用程序,验证每台机器上的NTP时间同步。换句话说,我需要确定我的局域网是否与公共时间服务器(层)同步。到目前为止,我想出了两种方法 1) 让每台机器上的NTP客户端生成统计文件。如果我采用这种方法,我应该检查哪个统计文件来确定机器上的时间是否在时间服务器的某个公差范围内?有peerstats、clockstats和loopstats。这些文件中是否有我可以用来确定时间是否同步的信息 2) 调用ntpq命令行参数并通过管道传输其输出。解析输出 现在我更喜欢选项1,但是,正如我所指出

我需要创建一个应用程序,验证每台机器上的NTP时间同步。换句话说,我需要确定我的局域网是否与公共时间服务器(层)同步。到目前为止,我想出了两种方法

1) 让每台机器上的NTP客户端生成统计文件。如果我采用这种方法,我应该检查哪个统计文件来确定机器上的时间是否在时间服务器的某个公差范围内?有peerstats、clockstats和loopstats。这些文件中是否有我可以用来确定时间是否同步的信息

2) 调用ntpq命令行参数并通过管道传输其输出。解析输出

现在我更喜欢选项1,但是,正如我所指出的,我不确定NTP统计文件是否包含我可以用来确定时间是否同步的信息

有没有更好的办法

是否有可以直接查询NTP客户端的API


感谢您的帮助。

验证同步的最佳方法是实际验证同步,而不是查看您正在检查其工作的守护进程生成的文件。您应该运行
ntpdate-q
或等效程序,并验证报告的偏移量是否在您所需的公差范围内。

我有同样的问题。我一直在使用两个命令的组合: ntptime[然后解析输出以确认没有出现“ERROR”一词] ntpq-p[然后确认它返回一个非错误状态,以及至少一个“+”符号以指示同步状态]


这在我的CentOS机器上非常有效,但在我的FreeBSD服务器上,只要本地时间稳定,ntpd运行,并且时间源服务器返回一致的时间,它将返回“OK”状态,即使它有几个小时不同步。我希望有更好的答案。使用ntpdate的建议可能有效,如果我可以装配一些东西使ntpdate使用ntp.conf获取时间源服务器的列表。

您可以运行
ntpq-c“rv0,offset”
命令并解析输出。如果返回的
stratum
是我认为两者都会输出良好的结果唯一的区别是如果您真的想每隔几分钟监控一次时间,那么请选择第二个选项…ntpq有各种选项来监控整个Ntp同步过程…ntpq>pe将为您提供所有配置的对等方的状态,ntpq>as将给出每个对等方的所有其他详细信息,ntpq>rv将给出每个对等方的完整概要……还有其他内部命令可通过ntpq调试ntp流程。如果您需要进一步澄清,请阅读以下页面:

对于您的第一个选项,它是一个统计报告,您可以将其留在您的ntp上,以便根据ntp.conf文件中提到的内容继续生成和更新,即您希望它是每天生成还是每周生成等等

Loopstats将显示日期、时间、频率和时间偏移、抖动、时钟纪律时间常数等。 Peerstats将通知您所有存在和配置的对等点 clockstats将通知时钟驱动器状态

除此之外,还有rawstats和sysstats选项,您还可以检查您的系统日志,并通过Ntp.conf文件将它们重定向到您自己的Ntp日志

您可以浏览上述链接中的监控部分,了解有关如何配置ntpstats的更多详细信息


希望这能对你有所帮助

如果您只需要确定机器是否同步,可以使用
ntpstat

SYNOPSIS
   ntpstat

DESCRIPTION
   ntpstat will report the synchronisation state of the NTP daemon 
   running on the local machine.  If the local system is found to be 
   synchronised to a reference time source, ntpstat will report the 
   approximate time accuracy.

RETURNS
   ntpstat returns 0 if clock is synchronised.  
   ntpstat returns 1 if clock is not synchronised.  
   ntpstat returns 2 if clock state is indeterminant, 
   for example if ntpd is not contactable.

请注意,在某些系统上(我在嵌入式计算机上使用的是带2.6内核的Debian),您必须指定二进制文件的路径,否则您会得到一个shell脚本,它使用
start | stop | restart | reload | force reload
而不是
-q
选项。我曾试图在Ubuntu 16.04上使用它。但它总是报告0,即使在拔下网线超过10分钟后,并且即使通过
ntpq-pn
返回的列表为空。我还没有调查它是否是一个bug,或者我是否应该等更长的时间……ntp对此非常聪明,它知道你的时钟漂移,它还跟踪你的公鸡行为,以及在你拉电缆时它受到了多大的约束。这是正确的行为——只要电缆断开,你们的时钟就不会失去同步。事实上,如果你的时钟有铷振荡器,它可以在没有网络的情况下保持2级时钟一个多月。相当整洁:——)