菜单
Grafana Cloud Enterprise 开源

Grafana 仪表盘最佳实践

本节提供了关于中级 Grafana 管理员和用户构建及维护 Grafana 仪表盘的最佳实践信息。

有关您可以创建的不同类型仪表盘的更多信息,请参阅Grafana 仪表盘:您可以构建的所有不同类型仪表盘的完整指南

常见的可观测性策略

当您有大量内容需要监控时,例如服务器场,您需要一个策略来决定哪些内容足够重要值得监控。本页描述了几种选择监控内容的常见方法。

一个合乎逻辑的策略可以帮助您创建统一的仪表盘,并更容易地扩展您的可观测性平台。

使用指南

  • USE 方法告诉您机器的健康状况,RED 方法告诉您用户的满意度。
  • USE 报告问题的起因。
  • RED 报告用户体验,更可能报告问题的症状。
  • 警报的最佳实践是对症状而非起因进行警报,因此应在 RED 仪表盘上进行警报。

USE 方法

USE 代表

  • 利用率 (Utilization) - 资源繁忙的百分比时间,例如节点 CPU 使用率
  • 饱和度 (Saturation) - 资源需要完成的工作量,通常指队列长度或节点负载
  • 错误 (Errors) - 错误事件的计数

此方法最适用于基础设施中的硬件资源,例如 CPU、内存和网络设备。更多信息请参阅USE 方法

RED 方法

RED 代表

  • 速率 (Rate) - 每秒请求数
  • 错误 (Errors) - 失败的请求数
  • 持续时间 (Duration) - 这些请求花费的时间,延迟测量值的分布

此方法最适用于服务,尤其是微服务环境。对于您的每个服务,应插桩代码以暴露每个组件的这些指标。RED 仪表盘适用于警报和 SLA。设计良好的 RED 仪表盘是用户体验的代理。

更多信息请参阅 Tom Wilkie 的博文RED 方法:如何对您的服务进行插桩

四大黄金信号

根据Google SRE 手册,如果您只能测量用户面向系统的四个指标,请关注这四个指标。

此方法与 RED 方法类似,但它包括饱和度。

  • 延迟 (Latency) - 处理请求所花费的时间
  • 流量 (Traffic) - 系统承受的需求量
  • 错误 (Errors) - 失败请求的速率
  • 饱和度 (Saturation) - 系统“饱和”程度
Give it a try using Grafana Play
使用 Grafana Play 试一试

借助 Grafana Play,您可以探索其工作原理,从实际示例中学习,加速您的开发。您可以在四大黄金信号上查看此功能。

仪表盘管理成熟度模型

仪表盘管理成熟度指的是您的仪表盘生态系统的设计和效率水平。建议您定期审查您的仪表盘设置,以评估您所处的位置以及如何改进。

一般来说,仪表盘成熟度可以定义为低、中或高。

本主题的大部分内容摘自 KubeCon 2019 的演讲为睡眠不足的 Oncall 人员打造傻瓜式 Kubernetes 仪表盘

低级 - 默认状态

在此阶段,您没有连贯的仪表盘管理策略。几乎所有人都从这里开始。

您如何知道您处于此阶段?

  • 每个人都可以修改您的仪表盘。
  • 大量复制的仪表盘,仪表盘复用很少或根本没有。
  • 一次性创建但永远不会被清理的仪表盘。
  • 没有版本控制(仪表盘 JSON 在版本控制中)。
  • 大量浏览仪表盘,搜索正确的仪表盘。这意味着浪费大量时间来寻找您需要的仪表盘。
  • 没有任何警报指引您到正确的仪表盘。

中级 - 有条理的仪表盘

在此阶段,您开始使用有条理的仪表盘管理您的仪表盘使用。您可能已经制定了一个策略,但仍有一些地方可以改进。

您如何知道您处于此阶段?

  • 通过使用模板变量防止蔓延。例如,您不需要为每个节点单独创建一个仪表盘,您可以使用查询变量。更好的是,您还可以将数据源设为模板变量,这样您就可以在不同的集群和监控后端重复使用同一个仪表盘。

    如果您想要一些想法,请参阅变量示例列表。

  • 根据可观测性策略创建有条理的仪表盘。

  • 带有下钻到下一层级的层次化仪表盘。

    Example of using drill-down
    使用下钻的示例
  • 仪表盘设计反映了服务层次结构。下面所示的示例使用 RED 方法(左侧显示请求和错误率,右侧显示延迟持续时间),每个服务占一行。行的顺序反映了数据流。

    Example of a service hierarchy
    服务层次结构示例
  • 同类比较:当量级差异较大时,拆分服务仪表盘。确保汇总指标不会淹没重要信息。

  • 使用有意义的颜色并尽可能标准化坐标轴的表达性图表。

    • 有意义的颜色示例:蓝色表示正常,红色表示异常。阈值可以帮助实现这一点。
    • 标准化坐标轴的示例:比较 CPU 使用率时,使用百分比而不是原始数值进行度量,因为机器可能拥有不同数量的核。按核数标准化 CPU 使用率可以降低认知负担,因为观看者可以相信 100% 表示所有核都在使用,而无需知道 CPU 的数量。
  • 定向浏览减少“猜测”。

    • 模板变量使得随机或漫无目的地“只是浏览”变得更困难。
    • 大多数仪表盘应由警报链接。
    • 使用链接进行定向浏览。更多信息请参阅管理仪表盘链接
  • 版本控制的仪表盘 JSON。

高级 - 优化使用

在此阶段,您已经通过一致且周到的策略优化了仪表盘管理的使用。这需要维护,但结果是值得的。

  • 积极减少蔓延。
    • 定期审查现有仪表盘,确保它们仍然相关。
    • 只有经批准的仪表盘才添加到主仪表盘列表。
    • 跟踪仪表盘使用情况。如果您是 Enterprise 用户,可以利用使用洞察功能。
  • 设计上保持一致性。
  • 使用脚本库生成仪表盘,确保模式和风格的一致性。
    • grafonnet (Jsonnet)
    • grafanalib (Python)
  • 不在浏览器中编辑。仪表盘查看者使用变量更改视图。
  • 浏览仪表盘是例外,不是常态。
  • 在专门用于实验和测试的独立 Grafana 实例中进行实验和测试,而不是您的生产实例。当测试环境中的仪表盘被证明有用时,再将其添加到您的主要 Grafana 实例中。

创建仪表盘的最佳实践

本页概述了创建 Grafana 仪表盘时应遵循的一些最佳实践。

开始之前

在创建仪表盘之前,这里有一些原则需要考虑。

仪表盘应讲述一个故事或回答一个问题

您想通过仪表盘讲述什么样的故事?尝试创建一个逻辑性的数据进展,例如从大到小或从一般到具体。这个仪表盘的目标是什么?(提示:如果仪表盘没有目标,那么问问自己是否真的需要这个仪表盘。)

保持图表简单,专注于回答您提出的问题。例如,如果您的目的是“哪些服务器出现问题了?”,那么您可能不需要显示所有服务器数据。只需显示出现问题的服务器的数据即可。

仪表盘应该减少认知负担,而不是增加它

认知负担基本上是指您需要思考多少才能理解某件事。让您的仪表盘易于理解。其他用户以及未来的您(当您在凌晨 2 点尝试找出问题时)会感谢您。

问问自己

  • 我能确切地知道每个图表代表什么吗?是显而易见的,还是我需要思考?
  • 如果我把它展示给其他人,他们需要多久才能理解?他们会迷失方向吗?

制定监控策略

创建新的仪表盘很容易。优化仪表盘创建并遵循计划则更难,但这值得付出努力。这个策略应该指导您的整体仪表盘方案,并强制执行个体仪表盘设计的一致性。

更多信息请参阅常见的可观测性策略仪表盘管理成熟度级别

写下来

一旦您有了策略或设计指南,请将它们写下来,以便随着时间的推移保持一致性。查看这个Wikimedia 运行手册示例

应遵循的最佳实践

  • 创建新仪表盘时,确保它具有有意义的名称。
    • 如果您创建仪表盘是为了试用或实验,请在名称中加上 TESTTMP
    • 考虑在仪表盘名称中或作为标签包含您的姓名或缩写,以便人们知道谁拥有该仪表盘。
    • 使用完临时实验仪表盘后将其移除。
  • 如果您创建了许多相关的仪表盘,考虑如何进行交叉引用以便于导航。更多信息请参阅管理仪表盘的最佳实践
  • Grafana 从数据源检索数据。对数据源的总体理解以及对您特定数据源的理解非常重要。
  • 避免不必要的仪表盘刷新,以减少网络或后端的负载。例如,如果您的数据每小时才变化一次,那么您不需要将仪表盘刷新率设置为 30 秒。
  • 显示具有不同单位或范围的时序数据时,使用左右 Y 轴。
  • 向仪表盘和面板添加文档。
    • 要向仪表盘添加文档,向仪表盘添加一个文本面板可视化。记录仪表盘的目的、有用的资源链接以及用户与仪表盘交互可能需要的任何说明。查看这个Wikimedia 示例
    • 要向面板添加文档,编辑面板设置并添加描述。任何您添加的文本都会在您将光标悬停在面板左上角的小 i 上时出现。
  • 通过使用模板和变量复用您的仪表盘并保持一致性。
  • 堆叠图表数据时要小心。可视化可能具有误导性,并隐藏重要数据。建议在大多数情况下关闭此功能。

管理仪表盘的最佳实践

本页概述了管理 Grafana 仪表盘时应遵循的一些最佳实践。

开始之前

在开始管理仪表盘之前,这里有一些原则需要考虑。

战略性可观测性

有几种常见的可观测性策略。您应该研究它们,并决定其中一种是否适合您,或者您是否想出自己的策略。无论如何,制定一个计划,写下来,并坚持执行。

根据需要调整您的策略以适应不断变化的需求。

成熟度级别

您的仪表盘成熟度级别是多少?分析您当前的仪表盘设置,并将其与仪表盘管理成熟度模型进行比较。了解您所处的位置可以帮助您决定如何达到您希望的目标。

应遵循的最佳实践

  • 避免仪表盘蔓延,即仪表盘不受控制的增长。仪表盘蔓延会对找到正确仪表盘的时间产生负面影响。复制仪表盘并更改“一件事”(更糟糕的是:保留原始标签)是最容易导致蔓延的方式。
    • 定期审查仪表盘并移除不必要的。
    • 如果您创建临时仪表盘(例如用于测试),请在其名称前加上 TEST:。完成后删除该仪表盘。
  • 复制没有重大更改的仪表盘不是一个好主意。
    • 您会错过原始仪表盘的更新,例如文档更改、错误修复或指标添加。
    • 在许多情况下,复制仪表盘只是为了通过设置模板参数来定制视图。这应该通过维护到主仪表盘的链接并使用URL 参数来定制视图来实现。
  • 当您必须复制仪表盘时,请明确重新命名,并且不要复制仪表盘标签。标签是仪表盘的重要元数据,在搜索时使用。复制标签可能导致错误匹配。
  • 维护一个仪表盘列表(仪表盘的仪表盘)或交叉引用仪表盘。这可以通过几种方式实现
    • 创建仪表盘链接、面板链接或数据链接。链接可以指向其他仪表盘或外部系统。更多信息请参阅管理仪表盘链接
    • 添加一个仪表盘列表面板。然后您可以通过标签或文件夹搜索来定制您看到的内容。
    • 添加一个文本面板并使用 markdown 定制显示。