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 上阅读或评论(发表评论需要登录)