dmesg 时间误差现象

dmesg,时间误差,现象 · 浏览次数 : 240

小编点评

**案例现象:** 当机器监控平台发送监控通知时,发现台机器程序崩溃了,并根据经验使用 dmesg 命令查看内核信息,发现报错信息的时间跟告警时间不一致。 **分析:** * dmesg 显示内核和内核模块的相关信息,包括内核版本、内核启动时间、运行时间等。 * /var/log/messages 包含了系统活动信息,包括系统日志、系统消息等。 * dmesg -T 参数可以转换为人类可读的时间,但可能不保证时间的准确性。 * dmesg -T 中记录的时间是系统启动时间到事件发生时间的时间差,这会导致内核日志的时间与系统日志时间不一致。 **解决方案:** 1. 查看系统日志 /var/log/messages ,以确保 dmesg -T 的输出信息准确。 2. 如果无法从 /var/log/messages 中获得准确的时间信息,请查看 dmesg -T 的输出信息。 3. 如果仍然无法确定时间信息准确性,请检查机器的系统日志记录或其他相关配置项。 **相关资料:** * issue 链接: * serverfault.com/questions/576139/dmesg-time-vs-system-time-time-isnt-correcthttps://bugzilla.redhat.com/show_bug.cgi?id=895909 * blog.tankywoo.com/2015/02/03/about-timestamp-in-dmesg.html * issue 链接:https://bugzilla.redhat.com/show_bug.cgi?id=895909

正文

案例现象

这天收到监控平台发来的告警,说有台机器程序崩溃了

 

因为以前也有过相关的错误,根据经验,用 dmesg命令看下内核信息

 

发现有点不对劲,报错信息的时间跟告警时间不一致,正常来讲报错时间应该跟告警时间一致

 

使用 date 命令查看一下当前系统时间

 

然后我们查看一下系统日志

 

由上面的输出可以看到:

dmesg 显示错误信息的时间跟系统日志 /var/log/messages显示错误信息的时间不一致

 

定位问题

 

我们知道, dmesg  和  /var/log/messages 都是用来记录服务器启动、运行期间的日志的

 

当机器出现问题时,运维人员可以从这两个日志输出中进行初步排查

 

我们来看下 dmesg 输出和 /var/log/messages 的区别

  • dmesg 显示内核和内核模块的相关信息,/var/log/messages 不但显示内核信息,还显示系统活动信息

  • 可以说 dmesg 输出的信息是 /var/log/messages 的子集, dmesg 输出的信息在 ring buffer 中维护,大小有限制

  • /var/log/messages包含所有系统消息以及dmesg 中的信息

 

那为什么这台机器上 dmesg 显示错误信息的时间跟系统日志 /var/log/messages显示错误信息的时间不一致呢?

 

由上面得知,我在查看 dmesg 信息的时候使用了 -T 参数,我们来看一下这个参数的含义

 

这个 -T 参数可以直接转换为人类可读时间(即年月日时分秒),但是不一定精确,如果系统挂起或者恢复之后,日志使用的时间源是不会更新的

 

也就是说,dmesg -T 输出的内核信息并不能保证时间的准确性

 

又因为 dmesg -T 中记录的时间是系统启动时间到事件发生时间的时间差,这台机器每天都会进行 NTP 时间同步以及每隔一段时间会进行重启

 

所以就会出现内核日志的时间与系统日志时间不一致的现象

 

解决方案

关于dmesg -T 时间戳不精确的情况,我查了好多资料都说没有解决方法

 

 

 

所以在这里我建议大家如果想要获得准确的时间信息,就去查看系统日志——/var/log/messages

 

如果有小伙伴知道该如何解决的,可以告诉我

 

最后附上相关 issue 链接:

  1. https://serverfault.com/questions/576139/dmesg-time-vs-system-time-time-isnt-correct

  2. https://bugzilla.redhat.com/show_bug.cgi?id=895909

  3. https://blog.tankywoo.com/2015/02/03/about-timestamp-in-dmesg.html

 

 


感谢阅读,喜欢作者就动动小手[一键三连],关注公众号【咸鱼运维杂谈】,这是我写作最大的动力

 

与dmesg 时间误差现象相似的内容:

dmesg 时间误差现象

案例现象 这天收到监控平台发来的告警,说有台机器程序崩溃了 因为以前也有过相关的错误,根据经验,用 dmesg命令看下内核信息 发现有点不对劲,报错信息的时间跟告警时间不一致,正常来讲报错时间应该跟告警时间一致 使用 date 命令查看一下当前系统时间 然后我们查看一下系统日志 由上面的输出可以看到

[转帖]限制内核 udp bad checksum 失败告警信息

问题描述 某系统 dmesg 信息中有如下内容频繁打印,冲掉了其它相关的信息,需要限制打印。 UDP: bad checksum. From 10.66.245.93:61525 to 255.255.255.255:137 ulen 58 相关代码 内核源码树中的文件名: net/ipv4/udp

[转帖]Linux内核信息相关命令:dmesg

https://bbs.huaweicloud.com/blogs/381167 【摘要】 在Linux 操作系统中,dmesg命令来显示与内核相关的消息,dmesg 命令提供了许多不同的消息,比如与消息相关的存储、模块、中断等。作为提供信息的底层工具,dmesg 命令需要root 权限,sudo

[转帖]Red Hat Enterprise Linux 8 和 9 中可用的 IO 调度程序

Red Hat 弃用了 Red Hat Enterprise Linux 7 中可用的 I/O 调度程序,并引入了四个新的 I/O 调度程序,如下所示, 运行以下命令检查 RHEL8 和 RHEL9 中可用的调度程序 # dmesg | grep -i scheduler [ 0.507104] i