Grafana 的 GitLab 数据源
GitLab 数据源插件使您能够跟踪详细的 GitLab 统计信息,例如顶级贡献者、每日提交或每日部署。您还可以使用模板变量(例如项目)为您的仪表盘设置过滤器。您可以将 GitLab API 中的数据与其他数据源中的数据结合使用。
要求
此插件有以下要求
- 一个 GitLab 账户
- 以下账户类型之一
- 任何免费或付费的 Grafana Cloud 计划或已激活的本地 Grafana Enterprise 许可证。合同约定的 Cloud 客户应参考其协议。
安装 GitLab 数据源插件
要安装此数据源,请参阅安装
配置 GitLab
创建一个具有 `read_api` 范围权限的个人访问令牌
- 前往您的个人访问令牌。
- 填写**名称**和**到期日期**字段。
- 在**范围**中,选择 **read_api**。
- 点击**创建个人访问令牌**按钮,然后复制您的个人访问令牌。
在 Grafana 中配置数据源
通过填写以下字段添加数据源
- 名称
- 此特定 GitLab 数据源的名称
- URL
- 您的 GitLab 实例的根 URL,例如 `https://gitlab.com/api/v4`。
- 访问令牌
- 您的 GitLab 个人访问令牌。
通过 Provisioning 配置数据源
可以使用配置文件通过 Grafana 的 Provisioning 系统配置数据源。您可以在Provisioning 文档页面上阅读有关其工作原理以及可为数据源设置的所有配置的更多信息
apiVersion: 1
datasources:
- name: GitLab
type: grafana-gitlab-datasource
access: proxy
basicAuth: false
editable: true
enabled: true
secureJsonData:
accessToken: Access token
url: https://gitlab.com
version: 1
查询数据源
您可以从查询编辑器中选择不同的资源类型。
资源类型
- Audit Events
- Commits
- Deployments
- Environments
- Issues
- Labels
- Merge Request Approvals
- Merge Requests
- Pipelines
- Projects
- Releases
- Tags
- Users
审计事件
GitLab 数据源允许您查询与指定 GitLab 账户、指定项目或指定群组相关的**审计事件**。此功能仅限于 Premium 账户(用于项目/群组查询)或具有管理员权限的托管 GitLab(用于实例查询)。
选择资源类型
使用下拉菜单选择 `Audit Events` 资源类型。
根据需要填写选项
在云实例上,审计事件只能按项目或群组查询。如果未设置项目 ID 或群组 ID,数据源将返回错误。在自托管 GitLab 上,这两个选项都不是必需的,数据源将返回与账户相关的所有审计事件。
Commits
GitLab 数据源允许您查询特定项目上创作的**提交**。
选择资源类型
使用下拉菜单选择 `Commits` 资源类型。
添加项目 ID
使用输入字段添加项目 ID。
(可选) 按分支/标签过滤。
使用输入字段添加分支/标签引用。
Deployments
GitLab 数据源允许您查询特定项目中的**部署**。
选择资源类型
使用下拉菜单选择 `Deployments` 资源类型。
添加项目 ID
使用输入字段添加项目 ID
(可选) 按环境/状态过滤
使用输入字段按 `environment` 和/或 `status` 过滤。
状态属性可以是以下值之一:`created`、`running`、`success`、`failed` 和 `canceled`。
Environments
GitLab 数据源允许您查询特定项目中的**环境**。
选择资源类型
使用下拉菜单选择 `Environments` 资源类型。
根据需要填写选项
使用输入字段添加项目 ID 并通过设置其余字段来过滤环境。
Issues
GitLab 数据源允许您查询特定项目中的**问题**。
选择资源类型
使用下拉菜单选择 `Issues` 资源类型。
添加项目 ID
使用输入字段添加项目 ID。
(可选) 按标题/描述过滤
使用输入字段针对问题的 `title` 和 `description` 进行搜索。
Labels
GitLab 数据源允许您查询特定项目中的**标签**。
选择资源类型
使用下拉菜单选择 `Labels` 资源类型。
添加项目 ID
使用输入字段添加项目 ID。
合并请求审批
GitLab 数据源允许您获取特定的**合并请求审批**。
选择资源类型
使用下拉菜单选择 `Merge Request approval` 资源类型。
添加项目 ID
使用输入字段添加项目 ID。
添加合并请求 ID
使用输入字段添加合并请求 ID。
合并请求
GitLab 数据源允许您查询与指定 GitLab 账户、指定项目或指定群组相关的**合并请求**。
选择资源类型
使用下拉菜单选择 `Merge requests` 资源类型。
根据需要填写选项
合并请求可以通过各种字段进行查询。如果未设置项目 ID 或群组 ID,则数据源将返回与指定 GitLab 账户相关的所有合并请求。
Pipelines
GitLab 数据源允许您查询特定项目中的**流水线**。
选择资源类型
使用下拉菜单选择 `Pipelines` 资源类型。
根据需要填写选项
使用输入字段添加项目 ID 并通过设置其余字段来过滤流水线。
Projects
GitLab 数据源允许您查询**项目**。
- 从下拉菜单中选择 **Projects** 资源类型。
- (可选) 按您拥有的项目过滤
使用下拉菜单选择 `Yes` 或 `No` 来过滤结果。
注意:请注意,获取所有项目(`Owned = No`)可能需要很长时间。
Releases
GitLab 数据源允许您查询特定项目中的**版本发布**。
选择资源类型
使用下拉菜单选择 `Releases` 资源类型。
添加项目 ID
使用输入字段添加项目 ID。
Tags
GitLab 数据源允许您查询特定项目中的**标签**。
选择资源类型
使用下拉菜单选择 `Tags` 资源类型。
添加项目 ID
使用输入字段添加项目 ID。
(可选) 按搜索过滤
使用输入字段针对标签的 `name` 进行搜索。您可以使用 `^term` 和 `term$` 来查找以 `term` 开头和结尾的标签。
Users
GitLab 数据源允许您查询**用户**。您必须是管理员才能使用大多数字段。
选择资源类型
使用下拉菜单选择 `Users` 资源类型。
根据需要填写选项
用户可以通过各种字段进行查询。如果未提供用户名,它将返回您作为管理员的用户,并按其他字段进行过滤。
模板和变量
要添加新的 GitLab 查询变量,请参阅添加查询变量。使用您的 GitLab 数据源作为数据源。选择资源类型:Releases、Projects 或 Labels。
要获取动态的项目、标签等列表供选择,请创建一个查询类型变量。
查询类型变量使用 GitLab 查询编辑器来查询和返回项目、标签等。
示例:创建项目变量来参数化您的查询。
- 添加一个名为 **project** 的查询类型变量
- 选择您的 GitLab 数据源并在 `On Dashboard Load` 时刷新。
- 选择资源类型:`Projects`,owned:`Yes`,显示字段:`name`,值字段:`id`。
- 点击更新将变量添加到仪表盘。
- 仪表盘上会出现一个下拉菜单,其中包含项目列表。
- 将新面板添加到仪表盘,并使用 `$project` 作为项目 ID。
- 现在从下拉菜单中选择时,您会获得属于该项目的结果。
创建变量后,您可以使用变量语法在 GitLab 查询中使用它。有关变量的更多信息,请参阅模板和变量。
使用 Grafana 的转换来回答常见问题
现在您可以执行基本的 GitLab 查询来查找提交、问题等,您可以使用转换来可视化、聚合、分组和连接数据集,以及许多其他类型的转换,将简单的结果转化为复杂问题的答案。下面是一些常见问题以及如何使用转换来回答它们。
问题:我的项目每天有多少提交 / 问题 / 部署?
添加查询
a. 选择资源类型:**Commits**。
b. 添加项目 ID。
添加一个新的**分组**转换
a. 分组依据 = `created_at_date`。
b. 计算(`Count`)= `id`。
选择**图表**可视化。
问题:我的项目关闭问题的平均时间是多久?
添加查询
a. 选择资源类型:**Issues**。
b. 添加项目 ID。
添加一个新的**从计算添加字段**转换
a. 模式 = 二元运算。
b. 操作 = `closed_at` - `created_at`。
c. 别名 = `resolution_time`。
添加一个新的**从计算添加字段**转换
a. 模式 = 二元运算。
b. 操作 = `resolution_time` / 86400000 *(1000 * 3600 * 24) …以天为单位*。
c. 别名 = `resolution_time`。
d. 替换所有字段 = True。
选择**统计**可视化
a. 显示 = 计算。
b. 计算 = 平均值。
c. 字段 = `resolution_time`。