Grafana Kiosk 模式界面元素显示问题

概述

在运营和监控中心(NOC)环境中,Grafana 仪表板通常需要全屏、无干扰地展示关键数据。Kiosk 模式正是为此设计,它能够隐藏所有不必要的界面元素,将屏幕空间完全留给数据可视化。从 Grafana 版本 11.3 开始,一个回归 bug 导致 Kiosk 模式无法正确隐藏仪表板顶部的变量选择器和时间选择器,严重影响了大屏监控的观看体验。本文档将详细说明此问题,提供临时解决方案,并探讨其对 SRE 可靠性实践的影响。

核心概念

  • Grafana Kiosk 模式: 一种专为公共或无人值守显示设计的全屏展示模式。其核心目标是最大化数据可视区域,通过自动隐藏导航栏、侧边栏、工具栏以及仪表板顶部的控制面板(包括变量和时间选择器),提供一个纯净的、只读的视图。这是实现“数据即真相”监控文化的有力工具。
  • 仪表板变量(Variables): 允许用户动态更改仪表板查询参数的交互控件。在 NOC 场景下,一旦为特定屏幕配置好默认变量值,这些控件就应被隐藏,以避免误操作并确保显示一致性。
  • 时间选择器(Time Picker): 用于选择数据时间范围的控件。在 24/7 监控大屏上,通常需要显示一个固定或自动滚动的时间窗口,手动时间选择器既无必要又会干扰视觉。

实践

根据社区报告,此问题出现在 Grafana 11.3 及更高版本中。在旧版(如 11.2.10)中,“启用 Kiosk 模式”按钮可以完美隐藏所有控制元素。

复现步骤

  1. 打开一个包含变量的 Grafana 仪表板。
  2. 点击仪表板顶部的 Enable Kiosk Mode 按钮(或通过 URL 参数 &kiosk 进入)。
  3. 观察到变量选择器和时间选择器依然显示在屏幕上,而非如预期般被隐藏。

临时解决方案

在修复版本发布前,可采用以下方法手动隐藏界面元素,但请注意这需要修改所有使用 Kiosk 模式的仪表板链接或嵌入代码。

  1. 修改 URL 参数:在仪表板 URL 后追加特定参数。

    • 完整格式:&kiosk&_dash.hideTimePicker=true&_dash.hideVariables=true
    • 示例:https://grafana.example.com/d/my-dashboard/my-dashboard?kiosk&_dash.hideTimePicker=true&_dash.hideVariables=true
  2. 修改嵌入代码:如果通过 iframe 嵌入 Grafana 仪表板,需要在 src 属性的 URL 中加入上述参数。

推荐的长期方案

  • 升级与关注:持续关注 Grafana 官方的此 issue (GitHub #116370),等待官方修复并升级到包含修复的版本。
  • 功能请求:官方回复中提到了一个更优雅的解决方案:在仪表板设置中增加一个选项,如“在 Kiosk 模式下隐藏时间选择器和变量”。这比依赖 URL 参数更用户友好,也更易于管理。SRE 团队可以支持此功能请求。

SRE 要点

  • 对可靠性的影响:此问题虽不直接影响数据采集和查询的后端可靠性(SLO),但严重损害了 监控数据的可读性和可访问性,这是可观测性文化的关键一环。混乱的 NOC 大屏可能导致值班人员忽略关键告警或误读数据,间接影响故障响应速度(MTTI/MTTR)。
  • 可观测性与用户体验:可观测性不仅关乎数据收集,也关乎数据的有效呈现。一个无法提供清晰、专注视图的监控界面,其效能将大打折扣。此 bug 突显了 UI/UX 回归测试 对于运维工具的重要性。
  • 事件响应关联:在重大事件期间,NOC 大屏是信息枢纽。界面元素的异常显示会分散注意力,不利于快速形成态势感知。确保监控视图的稳定性是事件响应准备工作的一部分。
  • 最佳实践与反模式:
    • 最佳实践:为 NOC 等专用显示场景建立 标准化的仪表板模板,其中应包含固定的 Kiosk 模式配置。在工具链中加入对 Grafana 版本变更的 自动化检查与回归测试,尤其是关键 UI 功能。
    • 常见反模式:依赖 URL 参数来强制实现核心显示逻辑,这增加了维护复杂性。当仪表板数量众多时,批量修改参数既繁琐又容易出错。更反模式的做法是因一个小 bug 而停止升级 Grafana,从而无法获得重要的安全补丁和新功能。
  • 相关指标:此问题主要影响 用户体验类 SLI。例如,可以定义“NOC 大屏在 Kiosk 模式下正确隐藏非数据元素的时间比例”作为一个 SLI,并为其设定 SLO(例如 99.9%)。当此 SLI 违反 SLO 时,即触发一个工单来修复。