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