监控数据再多,没人看就是"装个寂寞"。Grafana 把时序数据(Prometheus、InfluxDB、Elasticsearch、Loki…)变成"能拖时间范围、能叠多源、能做告警"的可视化面板,几乎是云原生时代仪表盘的事实标准。这篇文章把 Grafana 容器化部署、初始密码、中文环境、匿名访问、配置持久化这些"装上就完事但装的时候总忘"的事整理成一篇。
阅读对象:刚把 Prometheus 装上、想接 Grafana 看图的开发者;或 Grafana 已经跑起来但中文乱码/匿名访问开不了的运维同学
覆盖范围:Grafana 10 容器化部署、初始密码、InluxDB 数据源、匿名访问(grafana.ini 持久化)、时区与中文环境、注意事项
一、为什么是 Grafana
Grafana 不是"唯一"的仪表盘,但它的优势是面板能复用到极致:
- 多数据源:Prometheus、InfluxDB、Elasticsearch、MySQL、PostgreSQL、Loki、Tempo… 同一个 Dashboard 拉多个源
- 导入社区仪表盘:到 https://grafana.com/grafana/dashboards 搜 ID,30 秒装好一套完整图
- 告警与通知:面板里就能定义 alert rule,发邮件/Webhook/钉钉
- 多租户:Organization / Team / Folder 权限隔离
- 插件丰富:官方/社区插件扩展数据源、图表类型、面板组件
When to use:监控要"展示给人看"时,Grafana 几乎必装。如果你的数据是商业 BI 类(要做月度报表、维度下钻),Grafana 就不是首选了——Superset / Metabase 更合适。
二、容器化部署
2.1 最简单一行
| |
访问 http://{{HOST}}:3000:
- 初始账号:
admin - 初始密码:
admin
第一次登录会强制要求改密码(生产环境必须改)。
2.2 时区与中文环境
Grafana 默认时区是 UTC,中文界面也有可能因为字体不全出现"豆腐块"。通过环境变量解决:
| |
TZ 优先级:Grafana 启动时会把
TZ写到容器内/etc/localtime,但部分版本仍要靠挂载宿主机时区文件:
1-v /etc/localtime:/etc/localtime:ro保险起见两个都加。
2.3 host 网络模式
如果 Grafana 和后端服务在同一台机器,用 --net=host 可以避免端口映射带来的 trace 调用异常:
| |
三、添加数据源
Grafana 的核心是"数据源 + 仪表盘"。进入 Configuration → Data Sources → Add data source,能看到几十种数据源选项。
3.1 Prometheus
- Type:
Prometheus - URL:
http://{{PROM_HOST}}:9090 - 其它默认即可
- 点击
Save & test,绿色Data source is working出现即成功
3.2 InfluxDB(时序数据库)
InfluxDB v1/v2 的接入参数略有不同:
- Type:
InfluxDB - URL:
http://{{INFLUXDB_HOST}}:8086 - Database: 填库名
- User / Password: 填凭据
- HTTP Header: 如
Authorization: Token {{TOKEN}}(v2 必需)
测试连接成功后,在 Explore 面板里写 Flux 或 InfluxQL 即可查数据。
3.3 Loki(日志)
- Type:
Loki - URL:
http://{{LOKI_HOST}}:3100
详细看 Loki + Promtail 日志架构 一文。
3.4 人员定位面板(业务 Demo)
早期有人拿 Grafana 做过 UWB/蓝牙定位的"实时位置面板"——把人员坐标入库到 InfluxDB,Grafana 用 geomap / table / stat 面板做实时展示。这种"业务可视化"用法比传统 BI 轻量很多,配置简单、刷新及时。
四、匿名访问
生产环境往往需要"未登录用户也能看图"——大屏监控、嵌入式展示、给非技术人员查指标。Grafana 通过 grafana.ini 里的 [auth.anonymous] 段开启。
4.1 直接改容器内配置
| |
找到 [auth.anonymous] 段,修改:
| |
坑:发现改不了——容器内
/etc/grafana/grafana.ini在某些镜像版本是只读,必须停掉容器后挂载出来改(见 4.2)。
4.2 配置持久化(推荐)
把 grafana.ini 复制出来,挂载进容器:
| |
启动时挂载:
| |
或 docker-compose:
| |
改完配置要重启:
docker restart grafana让新配置生效。
五、推荐仪表盘(Dashboard ID)
到 https://grafana.com/grafana/dashboards 搜 ID 即可导入:
| 监控对象 | 推荐 Dashboard ID | 用途 |
|---|---|---|
| Linux 主机 | 11074 | Node Exporter Full(CPU/内存/磁盘/网络/内核) |
| Windows 主机 | 10467 | Windows 主机全量指标 |
| MySQL | 7362 | MySQL Overview(连接/QPS/慢查询/缓冲池) |
| Docker 容器 | 10619 | cAdvisor(容器 CPU/内存/网络/IO) |
| Redis | 11835 | Redis 监控 |
| Nginx | 9614 | Nginx 日志/请求/状态码分析 |
| JVM | 4701 | Java 应用堆/线程/GC |
导入流程:Grafana →
+→Import→ 输入 Dashboard ID → 选数据源 → 完成。约 30 秒就能看到十几张图。
六、踩坑清单
- 改
grafana.ini不生效——容器内文件只读,参考 4.2 挂载出来 - 忘记初始密码——容器没挂载数据库时,数据存在容器内
/var/lib/grafana。docker volume rm重置 - 中文显示豆腐块——字体不全,加
-e LANG=zh_CN.UTF-8+ 主机字体fonts-noto-cjk - 时间不对——时区没设对,Grafana 默认 UTC,业务日志要
Asia/Shanghai - 导入仪表盘数据为空——Dashboard 自带数据源变量
DS_PROMETHEUS,导入时要选实际的数据源 - 大屏刷新卡顿——Dashboard 太多 Panel、Datasource 查询慢、Chrome 内存爆。优化方向:减少 Panel 数量、降低刷新频率、用
time range from限制数据范围
七、2024+ 视角补充
本文写于 2023-09,2024-2026 期间 Grafana 关键演进:
- Grafana 11.x(2024)+ Grafana 12.x(2025):Drilldown / Explore 全面重构、Scene 框架(App SDK)让自定义面板开发更轻量
- Grafana Loki 3.x(2024-2026)配合:对象存储全面支持 S3 兼容、GCS、Azure Blob,日志查询性能 10x 提升
- Grafana Mimir / Pyroscope / Beyla:Metrics / Continuous Profiling / eBPF Auto-instrumentation 一站式可观测
- Grafana 11+ IRM(Incident Response Management):内置 oncall 值班 / 事件管理 / Postmortem 模板,逐步替代 PagerDuty / Opsgenie 部分场景
- AI 助手 Grafana LLM(2024-Q3 试验):用自然语言生成 PromQL,2025 起仍是早期功能
- Grafana Faro(RUM):Web 端真实用户监控 SDK,前端可观测性补齐
实战建议(2025-2026 视角):
- Grafana 11.x / 12.x + Loki 3.x + Prometheus 3.x + Mimir 是云原生可观测的"标准四件套"
- K8s 场景优先 Grafana Helm Chart 一键部署
- 国产可观测(夜莺 / FlashDuty)2024+ 与 Grafana 体系深度集成,可作为 oncall 补充
八、参考资料
- Grafana 官方文档:https://grafana.com/docs/grafana/latest/
- 社区仪表盘:https://grafana.com/grafana/dashboards
- 配置文件参考:https://grafana.com/docs/grafana/latest/setup-grafana/configure-grafana/
下一步
- 监控那层用 Prometheus?→ 看 Prometheus 监控告警体系 一文
- 日志也想接 Grafana?→ Loki + Promtail 日志架构 一文
- 不想自己拼装?→ HertzBeat 轻量监控告警 把监控+告警+可视化打包到一容器
