如何使用 Prometheus Operator 抓取 Jenkins 指标

How to scrape Jenkins metrics using Prometheus Operator

我使用 Kube-prometheus 和 Prometheus-Operator 来监控我的 K8s 集群。我已经在我的集群上部署了 Jenkins,并想开始使用 ServiceMonitor 在这里获取指标。

我已经安装了 Prometheus 插件,该插件使用 /prometheus/metrics/API_KEY/metrics 来公开指标,如果我创建一个新的静态作业,它可以正常工作。但是,如果我想使用ServiceMonitor,它不起作用。

apiVersion: monitoring.coreos.com/v1                                                                                                                                                                        
kind: ServiceMonitor
metadata:
  labels:
    k8s-app: jenkins
  name: jenkins
  namespace: monitoring
spec:
  endpoints:
  - interval: 30s 
    port: http
    path: /metrics/y1H6G16T-DhqpHdW9XwHWnP9FWAXMMfy4XnXVnyoIOEV3-gPJZKN284OFUcVkPxL/metrics
  selector:
    matchLabels:
      jenkins: main

我不知道 ServiceMonitor,但我使用 Jenkins 服务上的注释毫无问题地监控我的 Jenkins 实例:

prometheus.io/scrape: "true"
prometheus.io/port: "8080"
prometheus.io/path: "/prometheus"

我正在使用 kube-prometheus-stack v12.8.0(以前称为 prometheus-operator helm chart)。

要使 prometheus-operator 检测外部服务监视器(如 Jenkins 提供的监视器),您必须配置两件事:

  1. 将其配置为扫描其他名称空间:

    serviceMonitorNamespaceSelector 匹配标签: 普罗米修斯:请也扫描这个命名空间

注意:或者,您可以将其留给 {},以便扫描所有名称空间

  1. 将其配置为还 select 在这些其他名称空间中检测到的 serviceMonitors:

    服务监控选择器: 匹配标签: 发布:普罗米修斯运营商

注意:尽管文档指出如果您将 serviceMonitorSelector 留给 {},它将 select 所有 serviceMonitors,但它似乎不起作用。

最后,您仍然需要将这些标签添加到 1) 命名空间和 2) 您希望 prometheus 采用的 serviceMonitors。