Grafana 面板服务

Grafana 是一个强大的仪表板构建系统,您可以使用它,可视化来自嵌入式 Prometheus 监控系统的性能指标。

启用 Grafana

从 15.3 版本开始,Grafana 默认不启用。要启用它:

  1. 编辑 /etc/gitlab/gitlab.rb 并添加/编辑以下行:

    ## Set to true/false to enable/disable respectively
    grafana['enable'] = true
    
  2. 保存文件并重新配置极狐GitLab 使更改生效。
  3. 启用后,Grafana 将在 https://gitlab.example.com/-/grafana 上可用,并自动配置 SSO。

启用用户名和密码登录

note管理员账号的用户名是 admin

使用用户名/密码组合登录 Grafana 被禁用,默认情况下只有 GitLab SSO 可用。但是,要访问管理员账号,您需要使用用户名/密码启用登录。 为此,将以下行添加到 /etc/gitlab/gitlab.rb 文件,并运行重新配置

grafana['disable_login_form'] = false

指定管理员密码

note安装后第一次重新配置之前,必须指定管理员密码。在此之后,admin_password 设置没有任何效果,您必须手动重置密码。此外,要访问管理员账号,您必须启用用户名和密码登录

要指定管理员密码,请将以下行添加到 /etc/gitlab/gitlab.rb 文件,并运行重新配置

grafana['admin_password'] = 'foobar'

如果没有提供管理员密码,Omnibus GitLab 会自动为 admin 用户生成一个随机密码作为安全措施。但是,在这种情况下,您必须手动重置密码才能访问 admin 用户。

启用 Grafana 警报

Grafana 可以根据您在仪表板中配置的规则,提供创建警报的能力。默认情况下,捆绑的 Grafana 实例中禁用警报。

要启用 Grafana 警报:

  1. 编辑 /etc/gitlab/gitlab.rb 并添加以下行:

    grafana['alerting_enabled'] = true
    
  2. 保存文件并重新配置极狐GitLab

    sudo gitlab-ctl reconfigure
    

禁用 Grafana

  1. 编辑 /etc/gitlab/gitlab.rb 并添加/编辑以下几行:

    ## Set to true/false to enable/disable respectively
    grafana['enable'] = false
    
  2. 保存文件并重新配置极狐GitLab,使更改生效。

身份验证

如果您想授予用户访问 Grafana 的权限,您有两种选择。

使用 Grafana 的身份验证系统

允许用户在 Grafana 中创建自己的账号:

  1. 编辑 /etc/gitlab/gitlab.rb 并添加以下配置:

    grafana['allow_user_sign_up'] = true
    
  2. 保存文件并重新配置极狐GitLab,使更改生效。

使用 GitLab 作为 OAuth 提供者

note如果您使用的是 12.0 或更高版本,则会自动配置。您可以跳过本节。

要将 GitLab 用作 OAuth 提供程序,以便 GitLab 实例的用户可以访问 Grafana:

  1. 首先,创建应用程序 ID 和密钥。

  2. 根据您的 external_url 设置回调 URL。 例如 https://gitlab.example.com/-/grafana/login/gitlab

  3. 然后,编辑 /etc/gitlab/gitlab.rb 并添加以下几行:

    grafana['gitlab_application_id'] = 'GITLAB_APPLICATION_ID'
    grafana['gitlab_secret'] = 'GITLAB_SECRET'
    

    其中 GITLAB_APPLICATION_IDGITLAB_SECRET 是您在上一步中创建的应用程序 ID 及其 secret。

  4. 或者,您可以选择允许登录的 GitLab 组列表:

    grafana['allowed_groups'] = [my_group, group_one/group_two]
    
  5. 保存文件并重新配置极狐GitLab,使更改生效。

note默认情况下,GitLab 用户创建时具有只读查看者权限。管理员账号必须用于授予额外的访问权限。

重新设置管理员密码

首次启动后,管理员密码存储在 Grafana 数据存储中,您无法通过 gitlab.rb 更改它。

要更新它,您可以使用以下命令:

gitlab-ctl set-grafana-password

有关详细信息,请参阅 Grafana CLI 文档

面板

用于监控 Omnibus GitLab 的仪表板将被预加载并在初始登录时可用。

Grafana 指标

Grafana 可以提供 Prometheus 抓取的指标

默认情况下,指标 API 在捆绑的 Grafana 实例中处于禁用状态。

启用 Grafana 的指标 API

使用基本身份验证启用 Grafana 的指标 API:

  1. 编辑 /etc/gitlab/gitlab.rb 并添加/编辑以下几行:

    grafana['metrics_enabled'] = true
    grafana['metrics_basic_auth_username'] = 'grafana_metrics'
    grafana['metrics_basic_auth_password'] = 'please_set_a_unique_password'
    
  2. 保存文件并重新配置极狐GitLab 以使更改生效。

  3. 这些指标将在带有基本身份验证的 https://gitlab.example.com/-/grafana/metrics 上提供。基本身份验证的用户名和密码是在 /etc/gitlab/gitlab.rb 中设置的 metrics_basic_auth_usernamemetrics_basic_auth_password

Grafana SMTP

启用 SMTP 以允许 Grafana 发送电子邮件:

grafana['smtp']['enabled'] = true

要完全自定义 Grafana 的 SMTP 配置,请使用以下代码片段作为起点:

grafana['smtp'] = {
  'enabled' => true,
  'host' => 'localhost:25',
  'user' => nil,
  'password' => nil,
  'cert_file' => nil,
  'key_file' => nil,
  'skip_verify' => false,
  'from_address' => 'admin@grafana.localhost',
  'from_name' => 'Grafana',
  'ehlo_identity' => 'dashboard.example.com',
  'startTLS_policy' => nil
}

有关 Grafana 的 SMTP 配置的更多信息,请参阅 Grafana 的文档

故障排查

X.509: certificate signed by unknown authority

使用自签名 SSL 证书时,您可能会在 UI 中收到以下错误:

login.OAuthLogin(NewTransportWithCode)

Check the Grafana server logs for the detailed error message.

/var/log/gitlab/grafana/current 的 Grafana 日志中报告的错误可能是:

lvl=eror msg=login.OAuthLogin(NewTransportWithCode) logger=context userId=0 orgId=0 uname= error="Post \"https://gitlab.example.com/oauth/token\": x509: certificate signed by unknown authority"

在这种情况下,您必须将自签名 GitLab 证书安装为可信

包含的重定向 URI 无效

不正确的回调 URL 通常会导致此错误。 如果回调 URL 不正确,您在尝试登录 Grafana 时可能会收到此错误。 要解决这个问题:

  1. 在顶部栏上,选择 主菜单 > 管理员
  2. 在左侧边栏中,选择 应用
  3. 选择 GitLab Grafana 应用对应的 编辑
  4. 回调 URL 的值更改为类似于 https://gitlab.example.com/-/grafana/login/gitlab,其中 https://gitlab.example.com 对应于您的 external_url

由于未知客户端、未包含客户端身份验证或不支持的身份验证方法,客户端身份验证失败

如果 GitLab Grafana OAuth 应用程序不存在或 /etc/gitlab/gitlab-secrets.json 中的设置不再相互一致,则可能会发生这些错误。

caution如果 /etc/gitlab/gitlab-secrets.json 文件损坏,以下步骤可能会导致数据丢失。 确保在应用任何更改之前创建备份。

要解决这个问题:

  1. 在顶部栏上,选择 主菜单 > 管理员
  2. 在左侧边栏中,选择 应用
  3. 通过选择 删除,删除应用 GitLab Grafana(如果存在)。
  4. 在您的 GitLab 服务器上创建 /etc/gitlab/gitlab-secrets.json 的备份。
  5. 编辑 /etc/gitlab/gitlab-secrets.json 并删除以 grafana 开头的部分。您可以通过以下方式找到相关部分:

    $ grep grafana -A6 /etc/gitlab/gitlab-secrets.json
    
    "grafana": {
    "secret_key": "...",
    "gitlab_secret": "...",
    "gitlab_application_id": "...",
    "admin_password": "...",
    "metrics_basic_auth_password": null
    },
    
  6. 重新配置极狐GitLab,重新创建 GitLab Grafana 应用并重新生成 /etc/gitlab/gitlab-secrets.json 中的值:

    sudo gitlab-ctl reconfigure