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

相关推荐
vortex52 小时前
文件上传漏洞绕过技术总结(含实操指南与防御方案)
linux·服务器·网络安全·渗透测试
浊酒入清梦2 小时前
Gradle多模块项目构建docker镜像脚本
运维·docker·容器
江畔何人初2 小时前
HPA是如何在k8s集群实现自动扩缩容机制的
linux·运维·服务器·云原生·kubernetes
杨云龙UP3 小时前
Oracle 19c RAC多节点运行状态最简排查指南_20260316
linux·运维·服务器·数据库·sql·oracle
Scabbards_3 小时前
基于docker的LLM服务部署
运维·docker·容器
于眠牧北3 小时前
ubuntu22.04在docker中安装redis6.2.x并配置远程连接
运维·redis·docker·容器
weixin_452953323 小时前
openclaw新手部署详细教程——适用于ubuntu22.04
linux·人工智能·ubuntu
暴力求解3 小时前
Linux---ELF与库加载
linux·运维·服务器
Shaidou_Data3 小时前
数据要素自动化实践:沙淘金数据清洗与治理技术方案详解
运维·自动化