dmesg 时间误差现象

案例现象

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

 

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

dmesg 时间误差现象

 

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

 

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

dmesg 时间误差现象

 

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

dmesg 时间误差现象

 

由上面的输出可以看到:

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 参数,我们来看一下这个参数的含义

dmesg 时间误差现象

 

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

 

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

 

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

 

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

 

解决方案

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

 

dmesg 时间误差现象

 

dmesg 时间误差现象

 

所以在这里我建议大家如果想要获得准确的时间信息,就去查看系统日志——/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

 

 


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

 

原文链接:https://www.cnblogs.com/edisonfish/p/17283958.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:dmesg 时间误差现象 - Python技术站

(0)
上一篇 2023年4月17日
下一篇 2023年4月17日

相关文章

  • Linux下MySQL 5.5.8 源码编译安装记录分享

    下面是“Linux下MySQL5.5.8源码编译安装记录分享”详细攻略: 准备工作 确认系统已经安装了必要的依赖库:sudo apt-get install build-essential libncurses5-dev libssl-dev libaio-dev 下载 MySQL 5.5.8 源代码:wget https://cdn.mysql.com//…

    Linux 2023年5月14日
    00
  • CentOS配置本地yum源/阿里云yum源/163yuan源并配置yum源的优先级

    下面是详细的讲解。 CentOS配置本地yum源的方法 在本地CentOS服务器上创建一个目录用于存放yum源,比如我们创建目录 /data/yum。 sudo mkdir -p /data/yum 下载CentOS官方镜像(http://vault.centos.org/), 此处选择版本7,架构64位。 sudo wget http://vault.ce…

    Linux 2023年5月14日
    00
  • 在Linux上查看活跃线程数与连接数

    原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,非公众号转载保留此声明。 简介 现如今,有两种常见的软件资源几乎成了Java后端程序的标配,即线程池与连接池,但这些池化资源非常的重要,一旦不够用了,就会导致程序阻塞、性能低下,所以有时我们需要看看它们的使用情况,以判断这里是否是瓶颈。 查看活跃线程数 在Linux上,通过top -H -p 1命…

    Linux 2023年4月10日
    00
  • CentOS系统下编译安装MySQL以及设置相关yum源的教程

    下面是详细讲解“CentOS系统下编译安装MySQL以及设置相关yum源的教程”的完整攻略。 环境准备 首先,我们需要一台运行 CentOS 系统的服务器,并且具备以下条件: 确保系统已经安装了必要的依赖,如 cmake、gcc 等; 确保系统可以联网。 下载 MySQL 在 mysql 官网上选择对应的版本并下载,以 8.0.26 版本为例。 wget h…

    Linux 2023年5月14日
    00
  • Linux xset命令

    Linux的xset命令用于管理X服务器的各种属性,包括屏幕保护、屏幕节能模式、键盘鼠标相关的延迟和重复率等。下面是xset命令的使用方法: 语法 xset [选项] [参数] 常用选项 选项 描述 b 打开或关闭键盘的蜂鸣 dpms 打开或关闭DPMS功能 m 设置鼠标移动时的阈值 q 显示当前设置 r 打开或关闭键盘重复输入 s 设置屏幕保护时间 v 设…

    Linux 2023年3月28日
    00
  • Linux centos7环境下MySQL安装教程

    下面是“Linux CentOS 7环境下MySQL安装教程”的完整攻略。 1. 安装步骤 1.1 下载MySQL 首先需要到MySQL官网下载对应版本的MySQL安装包。 1.2 解压缩 将下载好的MySQL安装包解压缩到指定目录下,可以使用以下命令: tar -zxvf mysql-8.0.23-linux-x86_64-minimal.tar.gz -…

    Linux 2023年5月14日
    00
  • Linux如何安装和使用Trickle以便更好的进行宽带控制

    下面是Linux如何安装和使用Trickle以便更好的进行宽带控制的完整攻略。 安装Trickle 在Linux系统中,Trickle可以通过命令行进行安装,具体步骤如下: 1.打开终端,输入以下命令安装Trickle: sudo apt-get install trickle 2.等待安装完成,即可开始使用Trickle。 使用Trickle进行宽带控制 …

    Linux 2023年5月14日
    00
  • [linux] tcpdump抓包案例

    1.常见参数 tcpdump -i eth0 -nn -s0 -v port 80 -i 选择监控的网卡 -nn 不解析主机名和端口号,捕获大量数据,名称解析会降低解析速度 -s0 捕获长度无限制 -v 增加输出中显示的详细信息量 port 80 端口过滤器,只捕获80端口的流量,通常是HTTP 2. tcpdump -A -s0 port 80 -A 输出…

    Linux 2023年4月13日
    00
合作推广
合作推广
分享本页
返回顶部