博客/工程

使用GitLab活动数据与Grafana的新插件解决问题

2021年2月25日7分钟

这篇文章已经更新,以反映Grafana Cloud用户的GitLab数据源插件可用性的变化。

GitLab是世界上最流行的基于web的DevOps生命周期工具之一,被数百万人用作git存储库管理器,并用于问题跟踪、持续集成和部署目的。

今天,我们很高兴地宣布GitLab数据源插件,旨在帮助用户从他们的GitLab活动数据中发现有趣的见解。使用此插件,该插件可用于具有Grafana云户口或与Grafana企业许可证,用户可以可视化数据从GitLab的API。下面是一些例子:

  • 跟踪详细的GitLab统计数据,比如每天最多的贡献者或提交量。
  • 根据发布和部署创建注释,以查看它们与其他指标的关系。
  • 使用模板变量(如项目)来设置过滤器和参数化仪表板。

插件利用GitLab API以及它为每个可用资源(如提交或问题)返回的原始数据。这意味着我们可以通过应用一些过滤器(比如上周的提交或上个月结束的问题)从这些资源中获取一些数据。最终,我们需要使用Grafana中可用的数据转换,将GitLab API返回的原始数据转换为有意义的见解。

从原始数据到有意义的见解

当有人坐在一个新的Grafana当我们考虑从GitLab活动中可以提取哪些有意义的见解时,最容易想到的一个想法是:我每天的提交趋势是什么样的?尽管我们可以从开发的角度讨论它是否是一个好的度量标准,但它绝对是一个很好的例子,可以看看我们如何通过使用我们的新插件来获得这个度量标准。

获取提交

实现“每天提交”指标的第一步是从GitLab API获取原始提交数据。为此,我们需要选择GitLab数据源,然后选择提交查询编辑器中的查询。最后,我们需要选择希望查询提交的项目标识符。在这个例子中,我们使用GitLab项目本身。

Grafana的GitLab企业数据源插件:查询提交
Grafana的GitLab企业数据源插件:查询提交

一旦我们在插件的查询编辑器中设置了查询,那么我们就可以选择表格可视化,看看提交的数据是什么样子的:

用于Grafana的GitLab企业数据源插件:提交为表。
用于Grafana的GitLab企业数据源插件:提交为表。

注意:这个截图只是一个例子,所以它只显示了每次提交的所有可用字段的子集。

按日期分组提交

现在我们有了原始提交,是时候使用集团转换

Grafana的GitLab企业数据源插件:Raw提交转换。
Grafana的GitLab企业数据源插件:Raw提交转换。

转换是在Grafana 7.0中引入作为直接从Grafana内部操作数据的一种方式。它们对于我们从GitLab等数据源返回的表格数据特别有用,GitHub,ServiceNow

一旦我们选择了集团变换,是时候分组了committed_at_date字段,并使用计算运算符来“计数”每个组有多少提交(每天):

用于Grafana的GitLab企业数据源插件:按转换分组
用于Grafana的GitLab企业数据源插件:按转换分组

最后,我们可以切换回可视化,看看我们的“每天提交”指标的趋势:

用于Grafana的GitLab企业数据源插件:图形可视化。
用于Grafana的GitLab企业数据源插件:图形可视化。

将事件和度量与注释相关联

注释是GitLab数据源插件支持的关键Grafana特性之一。它们帮助我们将一些事件(如发布或部署)与其他指标(如流量、正常运行时间或延迟)关联起来,这样我们就可以将这些事件与来自GitLab数据源的其他指标或来自其他数据源的指标关联起来普罗米修斯。注释可以帮助我们回答以下问题:是最新的部署导致内存使用量激增吗?

让我们看一个如何基于版本创建注释的例子:

用于Grafana的GitLab企业数据源插件:Grafana中的注释。
用于Grafana的GitLab企业数据源插件:Grafana中的注释。
  1. 注释节中,创建一个名为释放使用你的GitLab插件作为数据源
  2. 选择释放查询类型并介绍项目Id
  3. 选择的名字作为显示字段而且created_at作为时间字段(它定义了在面板中显示注释的字段)。
  4. 最后,点击更新保存配置。

从现在开始,我们所有的可视化将为每个版本显示一个注释(在下面的截图中垂直的蓝线):

GitLab企业数据源插件:在图形可视化上显示的注释。
GitLab企业数据源插件:在图形可视化上显示的注释。

模板变量

正如您可以从前面的示例中猜到的那样,必须在仪表板上手动指定项目标识符是很烦人的。此外,在仪表板中使用静态配置会降低它们的可重用性。这正是我们增加支持的原因模板变量。由于这个特性,我们可以参数化我们的仪表板。让我们看一个如何创建“project”变量的例子:

GitLab企业数据源插件:变量部分。
GitLab企业数据源插件:变量部分。
  1. 变量节,使用你的GitLab插件创建一个新变量数据源
  2. 选择项目查询类型并标记拥有是的
  3. 选择的名字作为显示字段而且id作为值字段。(这定义了变量的标签和值使用哪些字段。)
  4. 点击更新保存新配置。

从现在开始,我们的仪表板将显示一个新的项目场在顶端;我们可以选择一个项目,也可以手动引入一个:

GitLab企业数据源插件:项目字段。
GitLab企业数据源插件:项目字段。

最后一步是使用我们在查询中创建的这个新变量。为此,我们只需要更新查询来替换静态查询项目Id使用新变量(美元的项目).

GitLab企业数据源插件:项目ID。
GitLab企业数据源插件:项目ID。

当前的警告和未来的计划

API速率限制

GitLab API速率限制默认为每个用户每分钟2,000个请求。尽管这看起来足够高,但对大量数据的查询(例如,“给我过去两年的所有提交”)可能会有问题。

GitLab API每页只支持最多100个结果,因此具有大量结果的查询最终会被分解为许多查询,从而更容易达到速率限制。此外,必须获取和返回的大量信息将使查询加载速度变慢。

报警

报警是Grafana的另一个关键特性,但是由于GitLab API提供了很少有意义的时间序列数据,目前还不可能为GitLab数据源查询设置警报。

聚合

如上所述,我们依赖于Grafana转换来执行数据聚合。为了启用GitLab插件的通用用例,我们添加了created_at_date属性中使用的字段集团转换。然而,如果能够以更大或更低的时间单位(每小时、每周、每月等)聚合数据也会很有用,因此我们目前正在开发新的转换,以实现这一点(以及其他聚合)!

更多的查询类型和过滤器

这个beta版的GitLab数据源插件只支持可用插件的一个子集GitLab API资源以及资源可用过滤器的子集。我们计划引入更多的查询类型和过滤器。

缓存

一些数据源插件具有缓存机制,以减少达到API速率限制的可能性,并解决一些性能问题。GitLab插件目前还没有缓存机制,但我们的主要短期目标之一就是增加一个。

结论

通过GitLab数据源插件,我们已经展示了可以快速从GitLab API中获取一些原始数据,并轻松地将其转换为提取一些有意义的见解。这样,我们既可以直接从GitLab活动中排除问题(例如,阻塞问题),也可以通过将GitLab事件与来自其他数据源的指标相关联来诊断相关问题。

要了解更多信息,请访问GitLab解bob彩票中奖计划决方案页面。用户可以使用GitLab数据源插件Grafana云户口或与Grafana企业许可证。联系我们如果你想试试的话!

感谢我的同事Tania Batieva和Andrew Hackman为这个插件所做的工作,也感谢Mitch Seaman、Julie Dam和Ursula Kallio对这篇博文的帮助。

如果你还没有使用Grafana Cloud -最简单的方法开始观察-现在就注册,免费试用Grafana Cloud Pro 14天,具有无限的度量、日志、跟踪和用户、长期留存和访问一个企业插件。