Featured image of post Grafana 可视化面板实战:从部署到匿名访问、中文环境与 InfluxDB 数据源

Grafana 可视化面板实战:从部署到匿名访问、中文环境与 InfluxDB 数据源

Grafana 10 容器化部署、初始密码修改、InfluxDB 数据源接入、匿名访问配置(grafana.ini 持久化)、时区与中文环境变量

监控数据再多,没人看就是"装个寂寞"。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 最简单一行

1
2
docker pull grafana/grafana:10.0.1
docker run -d --restart=always --name=grafana -p 3000:3000 grafana/grafana

访问 http://{{HOST}}:3000

  • 初始账号:admin
  • 初始密码:admin

第一次登录会强制要求改密码(生产环境必须改)。

2.2 时区与中文环境

Grafana 默认时区是 UTC,中文界面也有可能因为字体不全出现"豆腐块"。通过环境变量解决:

1
2
3
4
5
docker run -d --restart=always --name=grafana \
  -e TZ=Asia/Shanghai \
  -e LANG=zh_CN.UTF-8 \
  -p 3000:3000 \
  grafana/grafana

TZ 优先级:Grafana 启动时会把 TZ 写到容器内 /etc/localtime,但部分版本仍要靠挂载宿主机时区文件:

1
-v /etc/localtime:/etc/localtime:ro

保险起见两个都加。

2.3 host 网络模式

如果 Grafana 和后端服务在同一台机器,用 --net=host 可以避免端口映射带来的 trace 调用异常:

1
2
3
docker run -d --restart=always --name=grafana --net=host \
  -e TZ=Asia/Shanghai -e LANG=zh_CN.UTF-8 \
  grafana/grafana

三、添加数据源

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 直接改容器内配置

1
2
docker exec -it grafana /bin/bash
vi /etc/grafana/grafana.ini

找到 [auth.anonymous] 段,修改:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
[auth.anonymous]
# enable anonymous access
enabled = true

# specify organization name that should be used for unauthenticated users
org_name = Main Org.

# specify role for unauthenticated users
org_role = Viewer

# mask the Grafana version number for unauthenticated users
hide_version = true

:发现改不了——容器内 /etc/grafana/grafana.ini 在某些镜像版本是只读,必须停掉容器后挂载出来改(见 4.2)。

4.2 配置持久化(推荐)

grafana.ini 复制出来,挂载进容器:

1
2
3
mkdir -p /home/docker/grafana/conf
docker cp grafana:/etc/grafana/grafana.ini /home/docker/grafana/conf
vim /home/docker/grafana/conf/grafana.ini

启动时挂载:

1
2
3
4
5
docker run -d --restart=always --name=grafana \
  -e TZ=Asia/Shanghai -e LANG=zh_CN.UTF-8 \
  -p 3000:3000 \
  -v /home/docker/grafana/conf/grafana.ini:/etc/grafana/grafana.ini \
  grafana/grafana

或 docker-compose:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
grafana:
    container_name: grafana
    image: grafana/grafana:latest
    restart: always
    environment:
      - TZ=Asia/Shanghai
      - LANG=zh_CN.UTF-8
    ports:
      - 3000:3000
    volumes:
      - '/home/docker/grafana/conf/grafana.ini:/etc/grafana/grafana.ini'

改完配置要重启docker restart grafana 让新配置生效。

五、推荐仪表盘(Dashboard ID)

https://grafana.com/grafana/dashboards 搜 ID 即可导入:

监控对象推荐 Dashboard ID用途
Linux 主机11074Node Exporter Full(CPU/内存/磁盘/网络/内核)
Windows 主机10467Windows 主机全量指标
MySQL7362MySQL Overview(连接/QPS/慢查询/缓冲池)
Docker 容器10619cAdvisor(容器 CPU/内存/网络/IO)
Redis11835Redis 监控
Nginx9614Nginx 日志/请求/状态码分析
JVM4701Java 应用堆/线程/GC

导入流程:Grafana → +Import → 输入 Dashboard ID → 选数据源 → 完成。约 30 秒就能看到十几张图。

六、踩坑清单

  1. grafana.ini 不生效——容器内文件只读,参考 4.2 挂载出来
  2. 忘记初始密码——容器没挂载数据库时,数据存在容器内 /var/lib/grafanadocker volume rm 重置
  3. 中文显示豆腐块——字体不全,加 -e LANG=zh_CN.UTF-8 + 主机字体 fonts-noto-cjk
  4. 时间不对——时区没设对,Grafana 默认 UTC,业务日志要 Asia/Shanghai
  5. 导入仪表盘数据为空——Dashboard 自带数据源变量 DS_PROMETHEUS,导入时要选实际的数据源
  6. 大屏刷新卡顿——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/

下一步

使用 Hugo 构建
主题 StackJimmy 设计