Grafana 74,380 星:Docker 部署指南 2026 版
Grafana 是开源可视化与分析平台,监控指标、日志、链路追踪。覆盖 Prometheus、Loki、InfluxDB、Elasticsearch 集成。Docker 部署、生产加固对比 Datadog、Kibana、New Relic。
- ⭐ 77451
- Python
- AGPL-3.0
- 更新于 2026-05-19
生产事故从"发生什么变化了?“开始。没有集中式指标、日志、链路视图,这问题需要分钟 — 说甚至小时 — 解答。Grafana 以 74,380 星开源可视化平台,把该问题变成一眼可见的看板。本指南涵盖 Docker 部署、数据源集成、生产加固决策,区分概念验证与生产级监控栈。
什么是 Grafana? #
Grafana 是开源可观测性平台,可将 100+ 数据源(时序数据库、日志聚合器、链路追踪后端、云 API)可视化为统一、可分享的看板。2014 年由 Torkel Ödegaard 启动,最初为 Graphite 前端,如今成云原生可观测生态(LGTM 栈:Loki、Grafana、Tempo、Mimir)首选可视化层。
Grafana 作为无状态可视化层,在外层数据源之间提供操作团队。它不存储指标或日志;相反,通过原生 API 查询外部数据源,渲染面板、看板、告警。
如何使用 Grafana:架构 & 核心概念 #
Grafana 架构分为模块化管道。理解这五大模块在编写首个策略前至关重要:
- 数据源 — Prometheus、Loki、InfluxDB、Elasticsearch、CloudWatch、Azure Monitor 等 100+ 原生插件
- 查询引擎 — 每个面板在其数据源原生语言执行查询(PromQL、LogQL、InfluxQL、Lucene)
- 告警引擎 — 将告警规则评估为查询结果,路由至 Slack、PagerDuty、email、webhook
- 看板模型 — JSON 格式看板定义,可通过 GitOps 进行 version 控制、自动 provision 或从社区库导入
- 身份验证层 — 支持 OAuth、LDAP、SAML、API 密钥访问
典型数据流:Prometheus 从应用与 Node Exporter 抓取指标,Loki 汇聚 Promtail 或 Fluentd 收集日志,Grafana 查询二者渲染关联看板,在 CPU 峰值(指标)与错误峰值(日志)侧边出现。
安装指南 #
Docker CLI — 单容器(30 秒) #
快速获取本地可视化:
# 创建持久化卷
docker volume create grafana-storage
# 运行 Grafana Enterprise
docker run -d \
-p 3000:3000 \
--name=grafana \
--volume grafana-storage:/var/lib/grafana \
grafana/grafana-enterprise
访问 localhost:3000。默认凭据 admin/admin,首次登录需更改。
Docker Compose — 生产级栈 #
将 Grafana 与 Prometheus、Loki 结合:
mkdir -p ~/grafana-stack/{prometheus,loki,grafana/provisioning/datasources,grafana/provisioning/dashboards,grafana/dashboards}
cd ~/grafana-stack
启动:
docker compose up -d
访问 Grafana,导入看板 ID 1860(Node Exporter Full)获得 115+ 系统指标面板。
数据源自动 provision #
# grafana/provisioning/datasources/datasources.yml
apiVersion: 1
datasources:
- name: Prometheus
type: prometheus
access: proxy
url: http://prometheus:9090
isDefault: true
editable: false
- name: Loki
type: loki
access: proxy
url: http://loki:3100
editable: false
集成:Prometheus、Loki、InfluxDB、Elasticsearch #
Prometheus — 指标看板 #
# CPU 使用率
100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
# 内存使用
100 * (1 - ((node_memory_MemAvailable_bytes or node_memory_Buffers_bytes) / node_memory_MemTotal_bytes))
Loki — 日志聚合 #
# 按应用统计错误日志
sum by(app) (rate({job="system-logs"} |= "ERROR" [5m]))
# 搜索特定错误
{job="system-logs"} |~ "(?i)error|exception|fatal" | json | line_format "{{.message}}"
InfluxDB — 高基数时序数据 #
-- 每传感器平均温度
SELECT mean("temperature") FROM "sensors" WHERE $timeFilter GROUP BY "sensor_id", time($__interval) fill(null)
生产环境加固 #
SSL/TLS 终结 #
# 使用 Traefik 反向代理
traefik:
image: traefik:v3.3
command:
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.letsencrypt.acme.tlschallenge=true"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
高可用部署 #
Grafana 横向扩容需要共享数据库:
postgres:
image: postgres:17-alpine
environment:
POSTGRES_DB: grafana
POSTGRES_USER: grafana
POSTGRES_PASSWORD: ${DB_PASSWORD}
grafana-1:
image: grafana/grafana-enterprise:11.6.0
environment:
GF_DATABASE_TYPE=postgres
GF_DATABASE_HOST=postgres:5432
GF_DATABASE_PASSWORD=${DB_PASSWORD}
与替代方案对比 #
| 功能 | Grafana | Datadog | Kibana | New Relic |
|---|---|---|---|---|
| 开源 | 是 (AGPL-3.0) | 否 | 是 (SSPL) | 否 |
| 自托管 | 免费 | 否 | 免费 | 否 |
| 数据源 | 100+ 原生 | 750+ 集成 | Elasticsearch | 100+ |
| 成本 (50 主机/月) | $0-500 自托管 | $9,500-20,000 | $500-1,500 自托管 | $7,500-15,000 |
Grafana 适合:成本敏感团队、Kubernetes 原生环境、多数据源可观测性需求、平台工程成熟度。
常见问题解答 #
Q1:Grafana 完全免费商业使用吗? #
是的。开源 Grafana AGPL-3.0 商业使用免费。Grafana Enterprise 添加高级数据源插件、RBAC、报告、专业支持收费。
Q2:能否完全取代 Datadog? #
取决于需求。Grafana+LGTM 栈覆盖 80-90% Datadog 功能,成本为数十分之一。但 Datadog 的 APM 深度、AI 异常检测、即插即用集成仍领先。
Q3:怎么备份 Grafana 看板? #
看板存储在 Grafana 数据库的 JSON 中。通过 API 导出:curl -H "Authorization: Bearer ***" http://grafana:3000/api/dashboards/uid/<uid>。
推荐基础设施 #
- DigitalOcean — 60 天 200 美元免费信用
- HTStack — 大陆低延迟香港 VPS
这篇文章存档链接到 Binance、OKX、Minara、DigitalOcean、HTStack 赚取佣金。
💬 留言讨论