# Prometheus integration

> 原文：[https://docs.gitlab.com/ee/user/project/integrations/prometheus.html](https://docs.gitlab.com/ee/user/project/integrations/prometheus.html)

*   [Enabling Prometheus Integration](#enabling-prometheus-integration)
    *   [Managed Prometheus on Kubernetes](#managed-prometheus-on-kubernetes)
        *   [Requirements](#requirements)
        *   [Getting started](#getting-started)
        *   [About managed Prometheus deployments](#about-managed-prometheus-deployments)
    *   [Manual configuration of Prometheus](#manual-configuration-of-prometheus)
        *   [Requirements](#requirements-1)
        *   [Getting started](#getting-started-1)
        *   [Configuration in GitLab](#configuration-in-gitlab)
        *   [Thanos configuration in GitLab](#thanos-configuration-in-gitlab)
    *   [Precedence with multiple Prometheus configurations](#precedence-with-multiple-prometheus-configurations)
*   [Determining the performance impact of a merge](#determining-the-performance-impact-of-a-merge)

# Prometheus integration[](#prometheus-integration "Permalink")

在 GitLab 9.0 中[引入](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/8935) .

GitLab 提供与[Prometheus 的](https://s0prometheus0io.icopy.site)强大集成，可直接在 GitLab 中监视您的应用程序的关键指标. 从 Prometheus 检索每个环境的度量，然后在 GitLab 界面中显示.

[![Environment Dashboard](img/45cb073d466ec4a6fcb5a09d7f5f204c.png)](img/prometheus_dashboard.png)

有两种方法可以设置 Prometheus 集成，具体取决于应用程序的运行位置：

*   对于在 Kubernetes 上的部署，GitLab 可以自动[部署和管理 Prometheus](#managed-prometheus-on-kubernetes) .
*   对于其他部署目标，只需[指定 Prometheus 服务器](#manual-configuration-of-prometheus) .

启用后，GitLab 将自动从[度量标准库](prometheus_library/index.html)中的已知服务中检测度量[标准](prometheus_library/index.html) . 您还可以[添加自己的指标](../../../operations/metrics/index.html#adding-custom-metrics)并创建[自定义仪表板](../../../operations/metrics/dashboards/index.html) .

## Enabling Prometheus Integration[](#enabling-prometheus-integration "Permalink")

### Managed Prometheus on Kubernetes[](#managed-prometheus-on-kubernetes "Permalink")

在 GitLab 10.5 中[引入](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/28916) .

GitLab 可以在[连接的 Kubernetes 集群](../clusters/index.html)上无缝部署和管理 Prometheus，从而使对应用程序的监视变得容易.

#### Requirements[](#requirements "Permalink")

*   A [connected Kubernetes cluster](../clusters/index.html)

#### Getting started[](#getting-started "Permalink")

拥有连接的 Kubernetes 集群后，只需单击即可轻松部署托管的 Prometheus.

1.  转到**操作> Kubernetes**页面以查看已连接的集群
2.  选择您要部署 Prometheus 的集群
3.  单击**安装**按钮以将 Prometheus 部署到群集

[![Managed Prometheus Deploy](img/a198157b454aaa7b52001592ed46dc03.png)](img/prometheus_deploy.png)

#### About managed Prometheus deployments[](#about-managed-prometheus-deployments "Permalink")

使用[官方 Helm 图表](https://github.com/helm/charts/tree/master/stable/prometheus)将 Prometheus 部署到`gitlab-managed-apps`命名空间中. Prometheus 仅可在集群中访问，并且 GitLab 通过[Kubernetes API 进行](https://kubernetes.io/docs/concepts/overview/kubernetes-api/)通信.

Prometheus 服务器将[自动检测和监视](https://s0prometheus0io.icopy.site/docs/prometheus/latest/configuration/configuration/)节点，吊舱和端点. 要配置 Prometheus 监视的资源，只需设置以下[Kubernetes 批注](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/) ：

*   `prometheus.io/scrape`为`true`以启用对资源的监视.
*   `prometheus.io/port`定义度量标准端点的端口.
*   `prometheus.io/path`来定义度量标准端点的路径. 默认为`/metrics` .

CPU 和内存使用情况受到监视，但是需要使用[命名约定](prometheus_library/kubernetes.html#specifying-the-environment)来确定环境. 如果您使用的是[Auto DevOps](../../../topics/autodevops/index.html) ，则会自动处理.

由 GitLab 部署到群集的[NGINX Ingress](../clusters/index.html#installing-applications)会自动添加注释，以进行监视，以提供关键的响应指标：延迟，吞吐量和错误率.

### Manual configuration of Prometheus[](#manual-configuration-of-prometheus "Permalink")

#### Requirements[](#requirements-1 "Permalink")

与 Prometheus 集成需要满足以下条件：

1.  GitLab 9.0 或更高版本
2.  必须将 Prometheus 配置为收集[支持的指标之一](prometheus_library/index.html)
3.  Each metric must be have a label to indicate the environment
4.  GitLab 必须与 Prometheus 服务器具有网络连接

#### Getting started[](#getting-started-1 "Permalink")

安装和配置 Prometheus 来监视应用程序非常简单.

1.  [Install Prometheus](https://s0prometheus0io.icopy.site/docs/prometheus/latest/installation/)
2.  设置[受支持的监视目标之一](prometheus_library/index.html)
3.  配置 Prometheus 服务器以[收集其指标](https://s0prometheus0io.icopy.site/docs/prometheus/latest/configuration/configuration/)

#### Configuration in GitLab[](#configuration-in-gitlab "Permalink")

GitLab 中 Prometheus 集成的实际配置非常简单. 您只需要与您要集成的 Prometheus 服务器的域名或 IP 地址. 如果 Prometheus 资源由 Google 的身份识别代理（IAP）保护，则可以传递其他信息，例如客户端 ID 和服务帐户凭据，GitLab 可以使用这些信息来访问资源. 有关从服务帐户进行身份验证的更多信息，请参见 Google 的" [从服务帐户](https://cloud.google.com/iap/docs/authentication-howto#authenticating_from_a_service_account)进行[身份验证"](https://cloud.google.com/iap/docs/authentication-howto#authenticating_from_a_service_account)文档.

1.  导航至位于的" [集成"页面](overview.html#accessing-integrations) **设置>集成** .
2.  单击**Prometheus**服务.
3.  对于**API URL** ，请提供服务器的域名或 IP 地址，例如`http://prometheus.example.com/`或`http://192.0.2.1/` .
4.  （可选）在**Google IAP Audience Client ID 中** ，提供受 Google IAP 保护的 Prometheus OAuth Client 的 Client ID.
5.  （可选）在**Google IAP 服务帐户 JSON 中** ，提供被授权访问 Prometheus 资源的服务帐户凭据文件的内容.
6.  Click **保存更改**.

[![Configure Prometheus Service](img/c154238c63e38411889c5647b2cdf20e.png)](img/prometheus_manual_configuration_v13_2.png)

#### Thanos configuration in GitLab[](#thanos-configuration-in-gitlab "Permalink")

您可以使用 GitLab 将[Thanos](https://thanos.io/)配置为 Prometheus 的替代品. 您将需要与之集成的 Thanos 服务器的域名或 IP 地址.

1.  导航到" [集成"页面](overview.html#accessing-integrations) .
2.  单击**Prometheus**服务.
3.  提供服务器的域名或 IP 地址，例如`http://thanos.example.com/`或`http://192.0.2.1/` .
4.  Click **保存更改**.

### Precedence with multiple Prometheus configurations[](#precedence-with-multiple-prometheus-configurations "Permalink")

尽管可以同时启用 Prometheus 的[手动配置](#manual-configuration-of-prometheus)和[自动配置](#managed-prometheus-on-kubernetes) ，但仅使用其中之一：

*   如果您已[在 Kubernetes 上](#managed-prometheus-on-kubernetes)启用了[Prometheus 手动配置](#manual-configuration-of-prometheus)和[托管的 Prometheus](#managed-prometheus-on-kubernetes) ，则手动配置优先，并用于从[仪表板](../../../operations/metrics/dashboards/index.html#defining-custom-dashboards-per-project)和[自定义指标](../../../operations/metrics/index.html#adding-custom-metrics)运行查询.
*   如果您已在**不同**级别（项目，组，实例）的 Kubernetes 集群上安装了托管的 Prometheus 应用程序，则集群的优先级中将描述[优先级的顺序](../../instance/clusters/index.html#cluster-precedence) .
*   If you have managed Prometheus applications installed on multiple Kubernetes clusters at the **same** level, the Prometheus application of a cluster with a matching [environment scope](../../../ci/environments/index.html#scoping-environments-with-specs) is used.

## Determining the performance impact of a merge[](#determining-the-performance-impact-of-a-merge "Permalink")

版本历史

*   在 GitLab 9.2 中[引入](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/10408) .
*   GitLab 9.3 添加了 30 分钟平均值的[数字比较](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/27439) .

开发人员可以在合并请求工作流程中查看其更改对性能的影响.

**Note:** Requires [Kubernetes](prometheus_library/kubernetes.html) metrics.

将源分支部署到环境后，将出现迷你图和平均内存消耗的数值比较. 在迷你图上，圆点指示部署当前更改的时间，前后最多显示 30 分钟的性能数据. 比较结果显示了部署前后 30 分钟平均值之间的差异. 部署每个提交后，将更新此信息.

合并并重新部署目标分支后，指标将切换为显示此修订版已部署到的新环境.

性能数据将在 Prometheus 服务器上持久保存的时间内可用.

[![Merge Request with Performance Impact](img/33cc6d96a283a4f1b3cc5b27da9fd1c4.png)](img/merge_request_performance.png)