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" 提示会消失,时间查询也能正常显示数据。

相关推荐
超绝振刀怪几秒前
【Linux 环境变量和地址空间】
linux·环境变量·fork·写诗拷贝
OPHKVPS4 分钟前
Anthropic官方Git MCP服务器曝三重漏洞:提示注入即可实现文件读写与远程代码执行
运维·服务器·git
正经教主7 分钟前
【docker基础】第三课:镜像管理与Dockerfile基础
运维·docker·容器
老虎062710 分钟前
Nginx
运维·nginx
lwx9148528 小时前
Linux-特殊权限SUID,SGID,SBIT
linux·运维·服务器
皮卡狮9 小时前
Linux权限的概念
linux
炘爚9 小时前
深入解析printf缓冲区与fork进程复制机制
linux·运维·算法
workflower10 小时前
注塑机行业目前自动化现状分析
运维·人工智能·语言模型·自动化·集成测试·软件工程·软件需求
小义_10 小时前
随笔 3(Linux)
linux·运维·服务器·云原生·红帽
#六脉神剑10 小时前
MySQL参数调优:十个关键参数助力数据库性能数倍提升
运维·mysql