Prometheus时间出现误差

方法一:Linux 系统:

  • 安装时间同步工具:yum install ntp 或 apt 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

在文件中找到 pool 或 server 行,确保配置了公共 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 会变为 Normal,Reference 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" 提示会消失,时间查询也能正常显示数据。

相关推荐
0+1119 小时前
Linux --应用层自定义协议与序列化
linux·运维·服务器·网络·tcp
dyxal9 小时前
Linux Crontab 防重复执行利器:flock 文件锁实战详解(脱敏版)
linux·运维·服务器
niuTaylor9 小时前
RK3568 Linux SDK 详解:SDK 是什么、板级差异与完整构建流程
linux·运维·服务器
拾贰_C9 小时前
【Ubuntu | port】Linux进程端口号冲突问题解决
linux·运维·ubuntu
wdfk_prog10 小时前
Wi-Fi Direct 教程 07:第一次 P2P Scan 如何真正发出——WPS/P2P IE、radio work 与 driver request
运维·服务器·ubuntu·wifi-direct
机核研创社10 小时前
服装自动化观察:接橡筋机的超声波熔切与冷刀,差别到底在哪
运维·自动化
欣欣之王来了10 小时前
AI合规专项:AI自动化决策的合规管控要点
运维·人工智能·自动化
guo_wen_qiang10 小时前
docker安装常见软件集合
运维·docker·容器
0+11110 小时前
Linux --读者写者问题、读写锁与自旋锁
linux
谷哥的小弟10 小时前
CentOS寿终正寝
linux·运维·centos