云原生监控技术之Prometheus 服务器的系统时区
【摘要】 Prometheus 的默认时区设置为亚洲 / 上海时区(UTC+8),需要从两个层面进行配置:Prometheus 服务器本身的时区设置和前端展示(如 Grafana)的时区设置。以下是具体方法:一、设置 Prometheus 服务器的系统时区Prometheus 本身本身不直接提供时区配置参数,它默认使用服务器的系统时区。因此,首先需要确保运行 Prometheus 的服务器时区为 As...
Prometheus 的默认时区设置为亚洲 / 上海时区(UTC+8),需要从两个层面进行配置:Prometheus 服务器本身的时区设置和前端展示(如 Grafana)的时区设置。以下是具体方法:
一、设置 Prometheus 服务器的系统时区
Prometheus 本身本身不直接提供时区配置参数,它默认使用服务器的系统时区。因此,首先需要确保运行 Prometheus 的服务器时区为 Asia/Shanghai。
1. 查看当前系统时区
# 查看当前时区
timedatectl
2. 修改系统时区为上海时区
# 列出所有可用时区(可选,确认上海时区名称)
timedatectl list-timezones | grep Asia/Shanghai
# 设置时区为亚洲/上海
sudo timedatectl set-timezone Asia/Shanghai
# 再次验证
timedatectl
设置完成后,重启 Prometheus 服务,使其应用系统时区:
sudo systemctl restart prometheus
二、在 PromQL 中处理时区转换(可选)
如果需要在 PromQL 查询中显式处理时区(例如将 UTC 时间转换为上海时间),可以使用
time()
函数结合时区偏移量(上海时区为 UTC+8,即 +8h
)。例如,查询最近 1 小时上海时区的时间范围:
# 上海时区当前时间 = UTC时间 + 8小时
sum(rate(http_requests_total[5m])) by (status)
and (time() >= (timestamp("2024-08-13T00:00:00+08:00") - 3600)
and time() <= timestamp("2024-08-13T01:00:00+08:00"))
三、Grafana 前端展示时区设置(关键)
Prometheus 存储的数据是 UTC 时间戳,但最终用户通常通过 Grafana 查看监控面板。因此,重点需要在 Grafana 中设置上海时区,确保图表和时间范围显示为本地时间。
1. Grafana 全局时区设置(管理员)
- 登录 Grafana 管理员账号,进入 Server Admin → Settings(或 Configuration → Settings)。
- 在 Timezone 选项中,选择 Asia/Shanghai 作为默认时区。
- 保存设置后,所有用户的默认时区将改为上海时间。
2. 个人用户时区设置(非管理员)
- 普通用户可进入 Profile → Preferences(右上角头像 → 偏好设置)。
- 在 Timezone 中选择 Asia/Shanghai,仅对当前用户生效。
3. 面板级别的时区设置
- 编辑 Grafana 面板时,在 Time Range 选项中,确保 Timezone 继承全局设置(或手动指定
Asia/Shanghai
)。
四、验证配置
- 在 Prometheus 控制台(
http://<prometheus-ip>:9090
)执行time()
函数,查看返回值是否为上海时区的当前时间戳(Unix 时间戳,可通过在线工具转换验证)。 - 在 Grafana 中查看图表的时间轴,确认显示的时间是否与本地上海时间一致。
总结
- Prometheus 依赖系统时区,需将服务器时区设为
Asia/Shanghai
。 - 前端展示的时区由 Grafana 控制,建议在 Grafana 中全局设置为上海时区,避免用户看到 UTC 时间。
通过以上配置,即可实现 Prometheus 相关的时间展示为亚洲 / 上海时区。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)