1

我正在使用 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
4

2 回答 2

2

我不了解 ServiceMonitor,但我使用 Jenkins 服务上的注释监控我的 Jenkins 实例没有任何问题:

prometheus.io/scrape: "true"
prometheus.io/port: "8080"
prometheus.io/path: "/prometheus"
于 2019-05-05T08:21:17.817 回答
0

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

要让 prometheus-operator 检测到外部 serviceMonitors(就像 Jenkins 提供的那个),你必须配置两件事:

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

    serviceMonitorNamespaceSelector matchLabels: prometheus: please-scan-this-namespace-too

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

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

    serviceMonitorSelector:matchLabels:发布:prometheus-operator

注意:即使文档声明如果您将 serviceMonitorSelector 留给 {},它将选择所有 serviceMonitors,但它似乎不起作用。

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

于 2020-12-17T10:35:27.237 回答