除了采集组件默认的采集规则,您可能还需要配置面向自定义目标的采集规则。本文介绍如何配置自定义的采集规则。
概述
Prometheus 主要通过 Pull 的方式来抓取目标服务暴露的监控接口。因此,您需要在集群中配置对应的服务发现规则,指定采集对象,才能完成数据采集,并写入到托管 Prometheus 服务的工作区中。
托管 Prometheus 服务支持的服务发现类型,如下表所示。
前提条件
- 已创建托管 Prometheus 工作区,详情请参见 创建工作区。
- 在左侧导航栏中选择 接入中心 > 组件,单击 容器自定义采集,配置接入任务。
-
- 配置采集器的部署环境。选择 VKE 环境,并选择关联集群。
-
-
通过 ServiceMonitor 实现服务发现
您可以通过 ServiceMonitor 配置自定义目标的服务发现,实现对自定义目标的指标采集。
操作步骤如下:
- 在左侧菜单栏中选择 集群,并在右侧集群列表中选择目标集群。
- 在左侧菜单栏中选择 工作负载 > 对象浏览器。 单击 使用 Yaml 创建 ,通过 ServiceMonitor 配置服务发现。
apiVersion: monitoring.coreos.com/v1
namespace: volcano-metrics
- targetLabel: environment
app.kubernetes.io/name: ek8s-gpu-exporter
在容器服务中创建 CRD 后,可以遵循以下步骤,查看、编辑或删除配置。
- 在左侧菜单栏中选择 集群,并在右侧集群列表中选择目标集群。
- 在左侧菜单栏中选择 工作负载 > 对象浏览器,在 分类 下拉菜单中选择 CRD,即可查看创建的 CRD 资源。
-
- 单击 ServiceMonitor,进入详情页。
- 选择需要编辑或删除的配置项,单击 操作 栏的...,选择 编辑 Yaml 或 删除,即可编辑或删除该配置。
-
通过 PodMonitor 实现服务发现
您可以通过 PodMonitor 配置服务发现,实现对自定义目标的指标采集。
操作步骤如下:
- 在左侧菜单栏中选择 集群,并在右侧集群列表中选择目标集群。
- 在左侧菜单栏中选择 工作负载 > 对象浏览器。 单击 使用 Yaml 创建 ,通过 PodMonitor 配置服务发现。
apiVersion: monitoring.coreos.com/v1
namespace: volcano-metrics
replacement: 'kafka-xxxxxx'
app-name: kafka-exporter
在容器服务中创建 CRD 后,可以遵循以下步骤,查看、编辑或删除配置。
- 在左侧菜单栏中选择 集群,并在右侧集群列表中选择目标集群。
- 在左侧菜单栏中选择 工作负载 > 对象浏览器,在 分类 下拉菜单中选择 CRD,即可查看创建的 CRD 资源。
-
- 选择需要编辑或删除的配置项,单击 操作 栏的...,选择 编辑 Yaml 或 删除,即可编辑或删除该配置。
-
通过 Service/Pod annotation 实现服务发现
如上文所述,您可以使用 ServiceMonitor 或 PodMonitor 实现服务发现。但是,如果集群中有很多的 Service/Pod,那么就需要人工去创建多个 ServiceMonitor 或 PodMonitor 对象来进行监控,这会使得您的配置变得尤为复杂。
为了解决上述问题,托管 Prometheus 为您提供了另外一种服务发现方式,即通过配置 Service/Pod annotation 来实现服务发现。您可以在部署 Service 或 Pod 时,添加指定的 annotation 字段,实现业务的快速接入。
注意
- Service/Pod annotation 是一种快速的服务发现方式,但也存在部分问题,例如:无法实现指标的 Relabel 等。您需要根据实际需求,合理选择使用。
- kube-system 命名空间下无法使用 Service/Pod annotation 实现服务发现。如有需求,建议使用 ServiceMonotor 或 PodMonitor 实现。
当您在集群中配置 Service/Pod 时,可以通过添加如下的 annotation,实现对自定义目标的服务发现。
prometheus.io/scrape: "true"
prometheus.io/port: "9400"
prometheus.io/path: "/metrics"
说明
使用prometheus.io/port: "9400"指定目标的端口号时,该端口必须在容器的配置中显示声明,如下所示:
Service annotation 配置示例
当您在集群中配置服务时,可以添加 annotation 完成服务发现。方便服务快速接入监控,步骤如下:
- 在集群列表页面,单击目标集群,进入集群管理页面。
- 在左侧导航栏中,选择 服务与路由 > 服务,单击 使用 Yaml 创建 ,配置服务,并同时添加 annotation,实现服务发现。
name: golang-service-demo
app: golang-service-demo
prometheus.io/scrape: "true"
prometheus.io/port: "2023"
prometheus.io/path: "/metrics"
Pod annotation 配置示例
当您在集群中配置 Pod 时,可以添加 annotation 完成服务发现。方便 Pod 快速接入监控,步骤如下:
- 在集群列表页面,单击目标集群,进入集群管理页面。
- 在左侧菜单栏中选择 工作负载 > 无状态负载。 单击 使用 Yaml 创建 ,部署应用,并同时添加 annotation,实现服务发现。
prometheus.io/scrape: "true"
prometheus.io/port: "2023"
prometheus.io/path: "/metrics"
image: doc-cn-beijing.cr.volces.com/vmp/golang-demo:1.0
说明
- 本例以配置无状态负载(Deployment)为例,其他类型工作负载配置的方法相同。
- 本例中的镜像地址为举例,您需要将其修改为实际环境中镜像的正确地址。
- 使用 Pod annotation 实现服务发现时,不能同时支持 HTTP 和 HTTPS。
配置完成后,您可以查看任务状态和任务详情。确定目标 Kafka 接入任务是否正常。
- 选择 VKE 环境 页签。在任务列表中,可以查看接入任务的状态。
接入任务创建完成后,支持以下运维操作:
- 单击 任务名称,进入任务详情页面,支持查看接入任务详情。
- 单击 操作 列的 编辑,支持编辑指定的接入任务。
- 单击 操作 列的 暂停任务,支持暂停指定的接入任务。
- 单击 操作 列的 删除,支持删除指定的接入任务。
在左侧导航栏中选择 Explore,可以使用up查看接入任务中采集 Job 的状态。本例中为up{job="vmp-system/custom-***"}。当该指标的值为 1 时,表示采集器已创建完成并工作正常。
您可以使用托管 Prometheus 的 Explore 功能来快速查询和展示指标数据。详情请参见 指标查询。
您可以在容器服务集群或 ECS 主机中自建 Grafana,并通过 Grafana 查看指标和创建大盘。
您可以在托管 Prometheus 的告警中心配置监控目标的相关告警。详情请参见 创建告警规则。