Prometheus时间出现误差

方法一:Linux 系统:

  • 安装时间同步工具:yum install ntpapt install ntp
  • 同步公共时间服务器:ntpdate pool.ntp.org
  • 开启开机自启:systemctl enable ntpd 并启动服务。

出现报错

解决:rocky Linux 9 已不再默认提供 ntp 包 ,而是使用更现代的chrony作为时间同步服务

方法二:

1. 安装 chrony(替代 ntp 的官方推荐工具)

执行以下命令安装 chrony:

复制代码
yum install chrony -y
2. 启动并设置开机自启
复制代码
# 启动chrony服务
systemctl start chronyd

# 设置开机自启
systemctl enable chronyd

# 检查服务状态(确认是否正常运行)
systemctl status chronyd

正常运行的状态会显示active (running)

3. 立即同步时间

无需手动执行 ntpdate,直接用 chrony 的命令同步:

复制代码
# 强制同步网络时间
chronyc -a makestep

# 验证同步结果
chronyc tracking

执行chronyc tracking后,重点看Leap status字段,显示Normal说明时间同步正常;System time字段如果接近 0(如0.000000000 seconds fast),代表时间无偏差。

报错: chrony 还未成功同步到 NTP 服务器,时间仍处于未同步状态。

解决:

(1) 检查 chrony 配置文件

编辑 chrony 配置文件,确保配置了可用的 NTP 服务器:

复制代码
vi /etc/chrony.conf

在文件中找到 poolserver 行,确保配置了公共 NTP 服务器,例如:

复制代码
pool 2.rocky.pool.ntp.org iburst
# 或使用国内 NTP 服务器
# pool ntp.aliyun.com iburst

保存后退出。

(2)重启 chronyd 服务

复制代码
systemctl restart chronyd

(3)等待同步并验证

等待 1-2 分钟后,再次执行验证命令:

复制代码
chronyc tracking

正常同步后,Leap status 会变为 NormalReference ID 会显示为实际 NTP 服务器地址,Ref time 会更新为当前时间。

若仍未成功:

(1)重启 chronyd 服务

先重启服务,让配置生效:

复制代码
systemctl restart chronyd

(2)检查网络连通性

测试能否访问 NTP 服务器:

复制代码
# 测试 DNS 解析
ping 2.rocky.pool.ntp.org

# 测试 UDP 123 端口(NTP 协议端口)
nc -zv 2.rocky.pool.ntp.org 123 -u
  • 如果 ping 不通:说明服务器无法访问外网,需要检查网络路由或 DNS 配置。
  • 如果 UDP 123 端口不通:需要放行防火墙规则。

服务器的 DNS 解析配置有问题,无法解析海外的 NTP 服务器域名,这也是 chrony 无法同步时间的关键。

解决
步骤 1:修改 chrony 配置,使用国内可访问的 NTP 服务器

先替换掉海外的 NTP 地址,改用阿里云、腾讯云等国内稳定的 NTP 服务器:

复制代码
# 备份原配置文件(防止改错)
cp /etc/chrony.conf /etc/chrony.conf.bak

# 编辑配置文件
vi /etc/chrony.conf

将文件中开头的 pool 2.rocky.pool.ntp.org iburst 这一行,替换为以下国内 NTP 服务器(任选其一或多个):

复制代码
# 阿里云NTP服务器(推荐)
server ntp.aliyun.com iburst
# 腾讯云NTP服务器
server time1.cloud.tencent.com iburst
# 中国国家授时中心
server ntp.ntsc.ac.cn iburst

编辑完成后,按 ESC 键,输入 :wq 保存并退出。

步骤 2:重启 chronyd 服务并强制同步
复制代码
# 重启chrony服务
systemctl restart chronyd

# 强制立即同步时间
chronyc -a makestep

# 验证同步状态
chronyc tracking

正常情况下,执行 chronyc tracking 后:

  • Leap status 会从 Not synchronised 变为 Normal
  • Reference ID 不再是 00000000,而是具体的服务器 IP;
  • Ref time 会更新为当前的实际时间(不再是 1970 年)。
步骤 3:重启 Prometheus 验证最终效果
复制代码
# 重启Prometheus服务
systemctl restart prometheus

打开 Prometheus 的 Web 界面,之前的 "Server time is out of sync" 提示会消失,时间查询也能正常显示数据。

相关推荐
charlie1145141912 分钟前
嵌入式Linux驱动开发pinctrl篇(1)——从寄存器到子系统:驱动演进之路
linux·运维·驱动开发
Agent手记9 分钟前
异常考勤智能预警与处理与流程优化方案 | 基于企业级Agent的超自动化实战教程
运维·人工智能·ai·自动化
于小猿Sup21 分钟前
VMware在Ubuntu22.04驱动Livox Mid360s
linux·c++·嵌入式硬件·自动驾驶
cen__y34 分钟前
Linux12(Git01)
linux·运维·服务器·c语言·开发语言·git
不仙5202 小时前
VMware Workstation 26.0.0 在 Ubuntu 24.04 (内核 6.17.0) 上的安装与内核模块编译问题
linux·ubuntu·elasticsearch
AI视觉网奇3 小时前
linux 检索库 判断库是否支持
java·linux·服务器
dapeng-大鹏3 小时前
KVM+LVM 零停机在线扩容 Ubuntu 根分区:从磁盘添加到逻辑卷扩展完整
linux·运维·ubuntu·磁盘空间扩展
乐维_lwops3 小时前
案例解读|运维监控助力某大型卷烟厂构建高效运维监控体系
运维·运维案例
JiaWen技术圈3 小时前
网站用户注册行为验证码方案
运维·安全
仙柒4153 小时前
Docker存储原理
运维·docker·容器