部署 Grafana

最后更新: 2025-07-24 19:26:27 +0800 +0800
原文以英文撰写。您正在阅读AI翻译版本。

Grafana 是一项可视化和告警服务。生产环境部署不仅需要运行容器,还需要持久化状态、可重复的预配、经过身份验证的访问,以及备份和升级流程。

以持久化状态运行 Grafana #

Grafana 会将用户、在 UI 中创建的仪表板、告警数据和配置元数据存储在数据库中。对于小型安装,持久化默认的 SQLite 数据库;对于高可用部署,使用受支持的外部数据库,并在负载均衡器后运行多个 Grafana 实例。

yaml
services:
  grafana:
    image: grafana/grafana:11.2.0
    ports:
      - "3000:3000"
    volumes:
      - grafana-data:/var/lib/grafana
      - ./provisioning:/etc/grafana/provisioning:ro
    environment:
      GF_SERVER_ROOT_URL: https://grafana.example.com/
      GF_SECURITY_ADMIN_USER: admin
      GF_SECURITY_ADMIN_PASSWORD__FILE: /run/secrets/grafana_admin_password
    secrets:
      - grafana_admin_password
volumes:
  grafana-data:
secrets:
  grafana_admin_password:
    file: ./grafana_admin_password.txt

请固定经过测试的镜像版本,而不要使用浮动标签。只有在文件系统权限和部署机制受到控制时,示例中的 secret 文件才适用;在生产环境中,请使用平台提供的 secret 管理器。

预配数据源和仪表板 #

预配使配置可供审查并且可以重复执行。可以在 provisioning/datasources/prometheus.yaml 中定义 Prometheus 数据源:

yaml
apiVersion: 1
datasources:
  - name: Prometheus
    type: prometheus
    access: proxy
    url: http://prometheus:9090
    isDefault: true

对于存储在版本控制系统中的仪表板,请使用仪表板预配。请谨慎确定所有权:如果源文件发生变化,预配的仪表板可能会在重启时被覆盖。为紧急情况下通过 UI 进行更改保留一条有文档记录的路径,并将这些更改导出回源代码管理系统。

安全保护、备份和升级 #

在 Grafana 或受信任的反向代理处终止 TLS,设置公开的 root_url,并配置正确的 OAuth、SAML、LDAP 或匿名访问策略。除非有意公开,否则请禁用匿名访问。使用组织和文件夹权限,防止团队修改彼此的仪表板和告警规则。

同时备份数据库和预配仓库,然后测试恢复。在升级前阅读发行说明、备份数据库,并针对数据源和告警投递测试目标版本,同时保留回滚计划。未经身份验证和速率限制控制,不要将 Grafana 的管理端点直接暴露到互联网。

评论

在 GitHub 上阅读或评论(发表评论需要登录)