You need to enable JavaScript to run this app.
文档中心
托管 Prometheus

托管 Prometheus

复制全文
下载 pdf
容器服务接入
自定义采集
复制全文
下载 pdf
自定义采集
除了采集组件默认的采集规则,您可能还需要配置面向自定义目标的采集规则。本文介绍如何配置自定义的采集规则。
概述
Prometheus 主要通过 Pull 的方式来抓取目标服务暴露的监控接口。因此,您需要在集群中配置对应的服务发现规则,指定采集对象,才能完成数据采集,并写入到托管 Prometheus 服务的工作区中。
托管 Prometheus 服务支持的服务发现类型,如下表所示。
服务发现类型
说明
ServiceMonitor
在 Kubernetes 集群中,使用 NameSpace 和 Label 指定需要进行监控的 Service。
PodMonitor
在 Kubernetes 集群中,使用 NameSpace 和 Label 指定需要进行监控的 Pod。
Service/Pod annotation
在 Kubernetes 集群中,通过给 Service 或 Pod 配置指定的 annotation,实现服务发现。
前提条件
  • 托管 Prometheus
  • 已创建托管 Prometheus 工作区,详情请参见 创建工作区
  • 容器服务
配置方式
方式一:接入中心(推荐)
  1. 登录 VMP 服务控制台
  1. 在顶部导航栏,选择目标地域。
  1. 在左侧导航栏中选择 接入中心 > 组件,单击 容器自定义采集,配置接入任务。
  1. 配置采集器的部署环境。选择 VKE 环境,并选择关联集群。
  1. 单击 创建接入任务,配置接入任务的详情。
  • 配置项
    说明
    基础信息
    任务名称
    配置接入任务的名称。支持中文、英文大小写、数字和下划线_,取值范围为 1~40 个字符。
    采集配置
    JobLabel
    支持从关联的 Kubernetes Service 对象中选取标签,该标签值将作为所有指标的 job 标签。例如,若 jobLabel 设为 foo,且 Service 标签为foo: bar,则会为所有采集的指标添加job="bar"标签。若该字段为空或指定的标签不存在,则指标的 job 标签默认为关联的 Service 名称。
    指标采集间隔
    配置采集器的采集间隔,整数形式,取值范围为 1~600,单位为秒。
    命名空间
    配置采集目标在集群中部署的命名空间。取值:
    • 任意:表示可以采集集群中任意命名空间中的资源指标。
    • 自定义:选择该选项时,允许配置集群中的命名空间。表示仅支持采集指定命名空间中的资源指标。例如:配置为default时,表示只能采集 default 命名空间中的资源指标。
    指标采集端口
    配置采集目标的指标端口,支持配置为端口名称或端口号。字符串形式,取值范围为 1~100。
    指标采集路径
    配置采集目标的指标路径。字符串形式,取值范围为 1~200。
    LabelSelector
    用于选择要采集指标的 Kubernetes Service 对象的标签选择器。
    高级配置
    Metric Relabel 配置
    配置采集指标 Relabel,详情请参见 指标 Relabel
  1. 单击 确认,完成配置。
方式二:自定义部署
通过 ServiceMonitor 实现服务发现
您可以通过 ServiceMonitor 配置自定义目标的服务发现,实现对自定义目标的指标采集。
操作步骤如下:
  1. 在左侧菜单栏中选择 集群,并在右侧集群列表中选择目标集群。
  1. 单击集群名称,进入集群配置页面。
  1. 在左侧菜单栏中选择 工作负载 > 对象浏览器。 单击 使用 Yaml 创建 ,通过 ServiceMonitor 配置服务发现。
  • 类型 下拉菜单中选择 自定义
  • Yaml 配置框内输入 Yaml 配置。
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: service-discover # 配置服务发现的名称
namespace: volcano-metrics # 配置服务发现的命名空间
labels:
volcengine.vmp: "true" # 配置服务发现的标签,允许被 Agent 发现
spec:
endpoints:
- interval: 15s # 配置采集的时间间隔,默认为 15 秒
scrapeTimeout: 10s # 配置采集超时时间,默认为 10 秒
port: metrics # 填写服务端口名称,该端口名称必须在容器的配置中显示声明
path: /metrics # 填写指标暴露的 URI 路径,默认为 /metrics
scheme: http # 配置采集协议,支持 HTTP 和 HTTPS ,默认为 HTTP
relabelings: # 配置指标的 relabel。如没有需求,可省略
- targetLabel: environment
action: replace # 这个例子中我们添加一个固定 label:environment="Production"
replacement: Production
namespaceSelector: # 配置为采集对象所在的命名空间,不填写表示选择当前命名空间
matchNames:
- volcano-metrics
selector: # 配置 Service 的 Label 值,以定位和选择目标 Service
matchLabels:
app.kubernetes.io/name: ek8s-gpu-exporter
说明
更多配置项说明,请参见 官方文档
  1. 单击 确定,完成配置。
在容器服务中创建 CRD 后,可以遵循以下步骤,查看、编辑或删除配置。
  1. 在左侧菜单栏中选择 集群,并在右侧集群列表中选择目标集群。
  1. 单击集群名称,进入集群配置页面。
  1. 在左侧菜单栏中选择 工作负载 > 对象浏览器,在 分类 下拉菜单中选择 CRD,即可查看创建的 CRD 资源。
  • alt
  1. 单击 ServiceMonitor,进入详情页。
  1. 选择需要编辑或删除的配置项,单击 操作 栏的...,选择 编辑 Yaml删除,即可编辑或删除该配置。
  • alt
通过 PodMonitor 实现服务发现
您可以通过 PodMonitor 配置服务发现,实现对自定义目标的指标采集。
操作步骤如下:
  1. 在左侧菜单栏中选择 集群,并在右侧集群列表中选择目标集群。
  1. 单击集群名称,进入集群配置页面。
  1. 在左侧菜单栏中选择 工作负载 > 对象浏览器。 单击 使用 Yaml 创建 ,通过 PodMonitor 配置服务发现。
  • 类型 下拉菜单中选择 自定义
  • Yaml 配置框内输入 Yaml 配置。
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: pod-discover # 配置服务发现的名称
namespace: volcano-metrics # 配置服务发现的命名空间
labels:
volcengine.vmp: "true" # 配置服务发现的标签,允许被 Agent 发现
spec: # 描述采集目标 Pod 的特征和采集任务的配置
podMetricsEndpoints: # 配置需要监控对象的 Prometheus HTTP 接口,可以配置多个 Endpoint
- interval: 15s # 配置采集的时间间隔,默认为 15 秒
scrapeTimeout: 10s # 配置采集超时时间,默认为 10 秒
port: metric-port # 填写容器端口名称,该端口名称必须在容器的配置中显示声明
path: /metrics # 填写指标暴露的 URI 路径,默认为 /metrics
scheme: http # 配置采集协议,支持 HTTP 和 HTTPS ,默认为 HTTP
relabelings: # 配置指标的标签改写功能,允许配置多个改写规则,按照顺序执行
- action: replace # 标签匹配后的操作,包括:replace(替换)、keep、drop
sourceLabels: # 从原始 labels 中取哪些 label 的值进行 relabel
- instance
regex: (.*) # 对 source labels 对应值进行正则匹配的表达式
targetLabel: instance # 当 action 为 replace 时,通过 target_label 来指定对应 label name
replacement: 'kafka-xxxxxx' # 当 action 为 replace 时,通过 replacement 来定义当 regex 匹配之后需要替换的表达式
namespaceSelector: # 配置为采集对象所在的命名空间,不填写表示选择当前命名空间
matchNames:
- volcano-metrics
selector: # 配置采集对象的 Label 值,以定位和选择目标 Pod
matchLabels:
app-name: kafka-exporter
说明
更多配置项说明,请参见 官方文档
  1. 单击 确定,完成配置。
在容器服务中创建 CRD 后,可以遵循以下步骤,查看、编辑或删除配置。
  1. 在左侧菜单栏中选择 集群,并在右侧集群列表中选择目标集群。
  1. 单击集群名称,进入集群配置页面。
  1. 在左侧菜单栏中选择 工作负载 > 对象浏览器,在 分类 下拉菜单中选择 CRD,即可查看创建的 CRD 资源。
  • alt
  1. 单击 PodMonitor,进入详情页。
  1. 选择需要编辑或删除的配置项,单击 操作 栏的...,选择 编辑 Yaml删除,即可编辑或删除该配置。
  • alt
通过 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" # 配置为 true 表示开启采集
prometheus.io/port: "9400" # 配置为采集指标暴露的端口号
prometheus.io/path: "/metrics" # 填写指标暴露的 URI 路径,一般是 /metrics
说明
使用prometheus.io/port: "9400"指定目标的端口号时,该端口必须在容器的配置中显示声明,如下所示:
...
spec:
containers:
ports:
- containerPort: 9400 # 在容器配置中,对容器端口进行显示声明
Service annotation 配置示例
当您在集群中配置服务时,可以添加 annotation 完成服务发现。方便服务快速接入监控,步骤如下:
  1. 单击左侧导航栏中的 集群
  1. 在集群列表页面,单击目标集群,进入集群管理页面。
  1. 在左侧导航栏中,选择 服务与路由 > 服务,单击 使用 Yaml 创建 ,配置服务,并同时添加 annotation,实现服务发现。
apiVersion: v1
kind: Service
metadata:
name: golang-service-demo
labels:
app: golang-service-demo # 配置服务的标签
annotations:
prometheus.io/scrape: "true" # 配置为 true 表示开启服务发现
prometheus.io/port: "2023" # 配置为采集指标暴露的端口号,该端口号必须在容器的配置中显示声明
prometheus.io/path: "/metrics" # 填写指标暴露的 URI 路径,一般是 /metrics
spec:
selector:
app: golang-demo
ports:
- protocol: TCP
port: 2023
targetPort: 2023
name: metrics # 配置服务端口名称
type: ClusterIP
Pod annotation 配置示例
当您在集群中配置 Pod 时,可以添加 annotation 完成服务发现。方便 Pod 快速接入监控,步骤如下:
  1. 单击左侧导航栏中的 集群
  1. 在集群列表页面,单击目标集群,进入集群管理页面。
  1. 在左侧菜单栏中选择 工作负载 > 无状态负载。 单击 使用 Yaml 创建 ,部署应用,并同时添加 annotation,实现服务发现。
apiVersion: apps/v1
kind: Deployment
metadata:
name: golang-demo # 配置应用的名称
labels:
app: golang-demo # 配置应用的标签
spec:
replicas: 2 # 配置应用副本数
selector:
matchLabels:
app: golang-demo
template:
metadata:
labels:
app: golang-demo
annotations:
prometheus.io/scrape: "true" # 配置为 true 表示开启服务发现
prometheus.io/port: "2023" # 配置为采集指标暴露的端口号,该端口号必须在容器的配置中显示声明
prometheus.io/path: "/metrics" # 填写指标暴露的 URI 路径,一般是 /metrics
spec:
containers:
- name: golang-demo # 配置容器名称
image: doc-cn-beijing.cr.volces.com/vmp/golang-demo:1.0 # 配置应用镜像的地址和版本
ports:
- containerPort: 2023 # 配置容器端口号
说明
  • 本例以配置无状态负载(Deployment)为例,其他类型工作负载配置的方法相同。
  • 本例中的镜像地址为举例,您需要将其修改为实际环境中镜像的正确地址。
  • 使用 Pod annotation 实现服务发现时,不能同时支持 HTTP 和 HTTPS。
结果验证
查看接入任务
配置完成后,您可以查看任务状态和任务详情。确定目标 Kafka 接入任务是否正常。
  1. 在左侧导航栏中选择 接入中心 > 接入任务
  1. 选择 VKE 环境 页签在任务列表中,可以查看接入任务的状态。
接入任务创建完成后,支持以下运维操作:
  • 单击 任务名称,进入任务详情页面,支持查看接入任务详情。
  • 单击 操作 列的 编辑,支持编辑指定的接入任务。
  • 单击 操作 列的 暂停任务,支持暂停指定的接入任务。
  • 单击 操作 列的 删除,支持删除指定的接入任务。
查询任务指标
在左侧导航栏中选择 Explore,可以使用up查看接入任务中采集 Job 的状态。本例中为up{job="vmp-system/custom-***"}。当该指标的值为 1 时,表示采集器已创建完成并工作正常。
监控信息
查询指标
您可以使用托管 Prometheus 的 Explore 功能来快速查询和展示指标数据。详情请参见 指标查询
搭建大盘
您可以在容器服务集群或 ECS 主机中自建 Grafana,并通过 Grafana 查看指标和创建大盘。
配置告警
您可以在托管 Prometheus 的告警中心配置监控目标的相关告警。详情请参见 创建告警规则
最近更新时间:2026.07.09 14:18:07
这个页面对您有帮助吗?
有用
有用
无用
无用