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

相关推荐
ltl1 分钟前
HAProxy HTX 与 HTTP 路径:内部表示、改写落点与协议分叉
linux
ltl4 分钟前
可拆分 OS:CXL 内存池化如何动摇本地 DRAM 假设
linux
ltl7 分钟前
Tetragon 强制执行:Override 与 SIGKILL 各自保证什么
linux
lengjingzju30 分钟前
编译与调试完全指南—第6章 性能分析工具
linux
躺不平的理查德1 小时前
嵌入式 Linux 系统移植与 SD 卡量产镜像制作
linux·运维·服务器
一直走下去-明2 小时前
centos7无法安装tcpreplay
linux·运维
吹什么轩2 小时前
linux网络:TCP套接字基础
linux·网络·tcp/ip
anxiao_m3 小时前
园区数字孪生怎么搭建?主流方案与服务商深度对比
大数据·运维·人工智能
时空无限3 小时前
ubuntu dpkg -l 输出第一列解释
linux·运维·ubuntu
Splashtop高性能远程控制软件3 小时前
AI 落地的连接基建评估:消费品行业远程连接方案的四个技术维度(性能 / 精度 / 安全 / 统一管理)
运维·人工智能·安全·远程工作·splashtop