Help us learn about your current experience with the documentation. Take the survey.

阶段组仪表板

阶段组仪表板是生成的仪表板,包含大多数阶段组常用组件的指标。该仪表板完全可自定义,由各阶段组拥有。

本页面解释了这些仪表板上显示的内容、如何使用其内容以及如何自定义它们。

仪表板内容

错误预算面板

显示 28 天错误预算指标的面板,包括可用性、剩余预算和已使用预算

顶部面板显示 错误预算。这些面板始终显示在 时间范围控件 中选择的结束时间之前的 28 天。此数据不遵循所选范围,但会遵循环境和阶段的筛选条件。

指标面板

显示作业每秒完成率的工作指标时间序列图

尽管面板中显示的大多数指标在标题和附近描述中都能自明,但请注意以下几点:

  • 事件被计数、测量、累积、收集并存储为 时间序列。数据通过统计方法计算以生成指标。这意味着指标在一段时间内是近似正确且有意义的。它们帮助您随时间了解系统的状态。它们不旨在为您提供离散事件的精确数值。

    如果您需要更高的准确性,请使用其他监控工具,例如 日志。 阅读以下示例以获取更多解释。

  • 所有速率指标的单位都是 每秒请求数。默认聚合时间框架为 1 分钟。

    例如,一个面板显示在 2020-12-25 00:42:00 时的每秒请求数为 34.13。这意味着在第 42 分钟(从 2020-12-25 00:42:002020-12-25 00:42:59),Web 服务器处理了大约 34.13 * 60 = ~ 2047 个请求。

  • 您可能会经常遇到与小数和向上舍入相关的陷阱,特别是在低流量情况下。例如,RepositoryUpdateMirrorWorker2020-12-25 02:04:00 的错误率为 0.07,相当于每分钟 4.2 个作业。原始结果是 0.06666666667,相当于每分钟 4 个作业。

  • 当数据足够大时,所有速率指标都更准确。默认浮点精度为 2。在一些极低的面板中,即使仍有实际流量,您可能会看到 0.00

要检查面板的原始数据以进行进一步计算,请从面板的下拉列表中选择 Inspect。可用的查询、原始数据和面板 JSON 结构。 更多信息请参阅 Grafana 面板检查

所有仪表板都由 Grafana 驱动,这是用于显示指标的前端。Grafana 消耗从后端 Prometheus 数据源返回的数据,然后通过可视化呈现。阶段组仪表板是为最常见的用例设计的,具有有限的筛选器和预构建查询。Grafana 提供了一种使用 Grafana Explore 探索和可视化指标数据的方法。这需要一些 Prometheus PromQL 查询语言 的知识。

示例:使用仪表板进行调试

示例调试工作流:

  1. 代码审查组的一名成员已合并了一个 MR 并部署到生产环境。
  2. 要验证部署,您可以检查 代码审查组的仪表板
  3. Sidekiq 错误率面板显示错误率升高,特别是 UpdateMergeRequestsWorker

显示来自不同工作器事件的错误率指标的直方图

  1. 如果在 Extra links 部分选择 Kibana: Kibana Sidekiq failed request logs,您可以筛选 UpdateMergeRequestsWorker 并阅读日志。

调试 2

  1. 使用 Sentry,您可以找到异常,其中可以按事务类型和来自 Kibana 结果项的 correlation_id 进行筛选。

调试 3

  1. 现在应该会出现一个精确的异常,包括堆栈跟踪、作业参数和其他信息。

祝您调试愉快!

自定义仪表板

GitLab 中的所有 Grafana 仪表板都存储在 runbooks 项目 中的 Jsonnet 文件 生成。特别是,阶段组仪表板定义存储在 /dashboards/stage-groups 中。

按照惯例,每个组都有一个对应的 Jsonnet 文件。仪表板每月与 GitLab 阶段组数据 同步一次。

扩展和自定义是我们设计此系统时的关键原则之一。要自定义您组的仪表板,请编辑相应的文件并遵循 Runbook 工作流。仪表板在 MR 合并后更新。

查看自动生成的文件,例如 product_planning.dashboard.jsonnet

// 此文件使用 scripts/update_stage_groups_dashboards.rb 自动生成
// 欢迎自定义此文件。
local stageGroupDashboards = import './stage-group-dashboards.libsonnet';

stageGroupDashboards.dashboard('product_planning')
.stageGroupDashboardTrailer()

我们提供基本自定义来筛选出对您组活动至关重要的组件。默认情况下,仪表板中只显示 webapisidekiq 组件,而 git 被隐藏。请参阅 如何启用可用组件和可选图表

您还可以向仪表板添加更多信息或自定义指标。以下示例在页面顶部添加了一些链接和总请求率:

local stageGroupDashboards = import './stage-group-dashboards.libsonnet';
local grafana = import 'github.com/grafana/grafonnet-lib/grafonnet/grafana.libsonnet';
local basic = import 'grafana/basic.libsonnet';

stageGroupDashboards.dashboard('source_code')
.addPanel(
  grafana.text.new(
    title='组信息',
    mode='markdown',
    content=|||
      源代码管理组仪表板的有用链接:
      - [问题列表](https://gitlab.com/groups/gitlab-org/-/issues?scope=all&state=opened&label_name%5B%5D=repository)
      - [史诗列表](https://gitlab.com/groups/gitlab-org/-/epics?label_name[]=repository)
    |||,
  ),
  gridPos={ x: 0, y: 0, w: 24, h: 4 }
)
.addPanel(
  basic.timeseries(
    title='总请求率',
    yAxisLabel='每秒请求数',
    decimals=2,
    query=|||
      sum (
        rate(gitlab_transaction_duration_seconds_count{
          env='$environment',
          environment='$environment',
          feature_category=~'source_code_management',
        }[$__interval])
      )
    |||
  ),
  gridPos={ x: 0, y: 0, w: 24, h: 7 }
)
.stageGroupDashboardTrailer()

阶段组仪表板自定义

如果您想查看实际工作流程,我们录制了一个自定义仪表板的配对会话,可在 GitLab Unfiltered 上观看。

对于更深度的自定义和更复杂的指标,请参阅 Grafonnet lib 项目和 GitLab Prometheus Metrics 文档。

可选图表

某些图表并非对所有组都相关,因此默认不会添加到仪表板中。它们可以通过自定义仪表板来添加。

默认情况下,只显示 webapisidekiq 指标。如果您希望查看 git 舰队(或未来可能添加的任何其他组件)的指标,可以按如下方式配置:

stageGroupDashboards
.dashboard('source_code', components=stageGroupDashboards.supportedComponents)
.stageGroupDashboardTrailer()

如果您的组对 Sidekiq 作业持续时间及其阈值感兴趣,可以通过调用 .addSidekiqJobDurationByUrgency 函数添加这些图表:

stageGroupDashboards
.dashboard('access')
.addSidekiqJobDurationByUrgency()
.stageGroupDashboardTrailer()