Grafana 从入门到精通从“看数据”到“建平台”文章目录Grafana 从入门到精通从“看数据”到“建平台”第一部分入门篇 —— 先学会“看”数据1.1 几个必须搞懂的名词1.2 实战画一个 QPS 监控面板第二部分进阶篇 —— 让仪表盘“活”起来2.1 变量一个仪表盘监控所有服务2.2 告警从“盯着看”到“主动通知”2.3 查询执行流程一张图看懂第三部分精通篇 —— 搭建完整可观测性平台3.1 标准可观测性架构Metrics Logs Traces3.2 性能优化别让 Grafana 成为瓶颈3.3 权限控制RBAC3.4 告警时序图从指标到通知的全链路总结学习路线图这些年做后端、搞运维是不是也越来越觉得系统好不好用有时候不取决于代码写得多牛而取决于你出了问题时能不能快速找到根因。微服务一拆几十个服务互相调日志散落在各个容器指标存在 Prometheus链路在 Jaeger……如果没有一个统一的地方把它们串起来排查问题就像大海捞针。Grafana 的出现基本解决了这个痛点。它不存数据但它是所有数据的“总装车间”——Prometheus 的指标、Loki 的日志、Tempo 的链路全都能拉到一张仪表盘上关联着看。这篇文章我就从实战角度把 Grafana 从基础到高阶的用法完整过一遍帮你从“会画个折线图”进化到“能搭一套生产级可观测性平台”。第一部分入门篇 —— 先学会“看”数据刚接触 Grafana 时你不需要懂太多概念。核心就三件事数据源 → 查询 → 可视化。1.1 几个必须搞懂的名词数据源Data SourceGrafana 背后连接的地方比如 Prometheus、Loki、MySQL。Grafana 自己不存数据它只是个“展示柜”。查询语言每个数据源都有自己的查询语法。Prometheus 用 PromQLLoki 用 LogQL。不会写查询Grafana 就是个空壳。面板Panel仪表盘上的一个小图表比如折线图、饼图、数字卡片。每个面板背后都有一条查询。仪表盘Dashboard多个面板的集合通常代表一个业务或系统的整体视图。1.2 实战画一个 QPS 监控面板假设我们要监控一个 Web 服务的每秒请求数QPS。加数据源在 Grafana 里把 Prometheus 地址配好。新建面板选一个 Graph折线图面板。写查询输入 PromQLrate(http_requests_total[5m])保存看一眼图表有没有数据。我的建议别一上来就想搞“全屏大屏”。先从一个最关心的指标开始确认数据链路是通的再慢慢加东西。第二部分进阶篇 —— 让仪表盘“活”起来静态仪表盘只能看当前状态换了服务就要重新建很蠢。变量Variables是 Grafana 的灵魂能让一个仪表盘适配无数场景。2.1 变量一个仪表盘监控所有服务假设你有 10 个微服务service-a, service-b, …不想为每个服务建一个仪表盘。怎么做在 Dashboard Settings 里加一个变量叫$service。让变量的值来自 Prometheus 的 labellabel_values(service)。在你的查询里把固定服务名换成$servicerate(http_requests_total{service$service}[5m])效果仪表盘顶部出现一个下拉菜单选哪个服务所有图表就自动切到哪个服务的数据。一个仪表盘管所有。2.2 告警从“盯着看”到“主动通知”监控不是为了看是为了在出事的第一时间知道。Grafana 自带的告警系统或者配合 Alertmanager能帮你实现。简单流程Prometheus 定期拉指标在 Grafana 里定义一个告警规则比如“CPU 90% 持续 5 分钟”触发后Alertmanager 把告警发到 Slack、邮件、钉钉坑点提醒别把告警阈值设得太敏感否则半夜会被“告警风暴”炸醒。一定要做分组和静默——比如同一个服务 10 分钟内的同类告警只发一次。2.3 查询执行流程一张图看懂用户切换 $service 变量Grafana 引擎替换变量$service → service-a向 Prometheus 发 PromQL 请求Prometheus 返回数据Grafana 渲染图表用户看到新图表第三部分精通篇 —— 搭建完整可观测性平台到了这个阶段你关心的不再是单个面板怎么配而是整个监控系统怎么设计、怎么稳定、怎么安全。这是架构师的活儿。3.1 标准可观测性架构Metrics Logs Traces一个成熟的可观测平台通常由三根支柱构成Metrics指标用 Prometheus 存回答“发生了什么”。比如 QPS 掉底了。Logs日志用 Loki 存回答“为什么发生”。比如某个请求返回了 500。Traces链路用 Tempo/Jaeger 存回答“发生在哪”。比如慢请求卡在了数据库。Grafana 的杀手锏它能把这三种数据关联起来。你在指标图表上看到一个异常时间点点一下就能跳到那个时间段的日志再点一下就能看对应的调用链。排查问题的效率提升几个档次。架构图如下展示与告警应用层指标日志链路指标日志链路存储层微服务 APrometheusLokiTempo/Jaeger微服务 BGrafanaAlertmanager运维/开发Slack/邮件3.2 性能优化别让 Grafana 成为瓶颈数据量大了Grafana 可能变慢。几个常见优化手段限制时间范围默认只查最近 24 小时别让用户随手选“最近一年”。优化 PromQL避免*这种全量查询尽量加标签过滤。缓存对于一些变化慢的数据比如服务列表可以缓存起来不用每次查 Prometheus。看板刷新率不是所有面板都需要每秒刷新。监控页面 30 秒刷新一次足够别把 Prometheus 查崩了。3.3 权限控制RBAC在公司里不是所有人都应该看到所有数据。比如实习生只能看测试环境的监控不能碰生产环境。Grafana 企业版和开源版都有 RBAC 能力。可以做到某个人只能看某个 Dashboard某个人只能编辑不能删除某个人只能配置告警不能改数据源建议从第一天起就按角色分权限别等出了事故再补。3.4 告警时序图从指标到通知的全链路User通知渠道GrafanaAlertmanagerPrometheus应用User通知渠道GrafanaAlertmanagerPrometheus应用每 15 秒检查一次暴露指标比如延迟 1s触发阈值发送告警分组、去重、静默更新告警状态发送消息Slack/邮件运维收到通知总结学习路线图阶段核心目标关键知识点产出入门能连数据源、画简单图表数据源配置、PromQL 基础、面板编辑一个静态仪表盘进阶动态切换、主动告警变量、模板化、告警规则、时间轴关联可切换服务、能发告警的仪表盘精通设计生产级平台Metrics/Logs/Traces 整合、RBAC、性能调优高可用、多租户、自动化的可观测平台Grafana 本身不难难的是理解数据背后的业务含义以及把指标、日志、链路串起来讲一个完整的故事。希望这篇文章能帮你从“会用”走到“精通”。如果你们公司也在搭建可观测性体系欢迎留言交流踩过的坑。