首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >提高rsyslog/syslog的精度以包括小数秒?

提高rsyslog/syslog的精度以包括小数秒?
EN

Server Fault用户
提问于 2012-03-26 21:21:39
回答 2查看 9.8K关注 0票数 6

我使用syslog和rsyslog处理我的Linux和FreeBSD系统上的日志记录。

时间戳目前以秒为单位,但我希望将这些时间戳的提高精度包括毫秒。这是否可以使用syslog变体,如rsyslog (RedHat,Ubuntu)或FreeBSD上的Syslog?

如果我确实增加了日志时间戳以包括微秒,这些时间戳的准确性如何?如果事件发生在03:37:02:001,这是否意味着事件实际上发生在精确的毫秒内,还是在syslog编写事件时出现了延迟?

EN

回答 2

Server Fault用户

回答已采纳

发布于 2012-03-26 21:57:13

大多数现代的Syslog守护进程(包括rsyslog和syslog-ng)都支持高精度的时间戳。如果您正在使用这些工具之一,那么配置它应该是没有困难的。

至于它的准确性。。。那得看情况。首先,它将依赖于硬件。大多数现代硬件支持高精度时间,但不是全部。假设硬件支持它,仍然存在一些挑战。首要任务是确保您的时钟被正确设置,并且任何其他正在登录到它的机器都有匹配的时间(假设您从您的所有系统发送日志是一个中央日志)。ntpd是维护精确时钟时间的标准工具(通常与ntp.org池同步)。

最后,我们来到活动本身。简单的回答是,即使是非常轻微的漂移,也几乎总是会有一点漂移。这里也会有一些变化,取决于其他因素。这在很大程度上取决于事件从何而来,以及它是如何被捕获的。例如,如果我有一个执行foo的应用程序,然后向syslog发送一个日志,说明应用程序执行foo,则在foo完成和发送日志之间可能需要100 ms。还需要20 to才能完成syslog()系统调用。

我不记得syslog的底层细节,但我不认为事件提交到syslog时是时间戳的,我认为它是由syslog守护进程在被捕获时时间戳的。这又增加了几毫秒的混合时间。

基本上,除非你处理的实时系统与实时日志设施,我不认为你永远不会得到100%完美的准确性。即使如此,你也可能有(微观)水平的漂移,但至少你要知道你的误差范围是有限制的。同时,除非您有这样的要求,否则您的时间戳可能会足够准确。

票数 9
EN

Server Fault用户

发布于 2012-04-07 00:20:44

Christopher介绍了技术方面的考虑:运行ntpd,将其指向可靠的源,并注意漂移。我想补充几个注意事项:

  • 时间戳由syslog() libc函数调用设置。这是uClibc的实现。一个典型的syslog()调用将在1ms以下完成。下面是用0.15ms包装syslog()的Ruby : Benchmark.measure { logger.info 'narf‘}.real => 0.000149965286254883
  • 虽然syslog可能适合于毫秒精度,但许多Web应用程序框架缓冲日志,然后定期刷新缓冲区或在请求结束后输出请求的所有日志。几乎所有的Web服务器都这样做(这就是W3C通用日志文件格式知道传输的字节的方式)。其影响是毫秒精度在比看起来更少的情况下是有用的。
  • 时钟漂移是VMs的特有现象。从轶事中提到,每天3秒是典型的。将ntpdate作为一个夜间的cron作业运行是不够的。
  • 上下文通常会使顺序变得非常明显。如果您还没有遇到毫秒精度是知道哪个事件最先发生的唯一方法,那么这可能不值得花时间。
票数 3
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/373627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档