【问题标题】:Prometheus Helm Chart: Scrape Target not detected with prometheus.io/scrape annotationsPrometheus Helm 图表:使用 prometheus.io/scrape 注释未检测到抓取目标
【发布时间】:2021-02-04 19:14:34
【问题描述】:

我正在使用this prometheus chart。在文档中它说

为了让 prometheus 抓取 pod,您必须为 pod 添加注释,如下所示:

metadata:   
  annotations:
    prometheus.io/scrape: "true"
    prometheus.io/path: /metrics
    prometheus.io/port: "8080"

所以我创建了这样的服务

apiVersion: v1
kind: Service
metadata:
  name: nodejs-client-service
  labels:
    app: nodejs-client-app
  annotations:
    prometheus.io/scrape: "true"
    prometheus.io/path: /metrics
    prometheus.io/port: "5000"
spec:
  type: LoadBalancer
  selector:
    app: nodejs-client-app
  ports:
    - protocol: TCP
      name: http
      port: 80
      targetPort: 5000

但我的服务不会出现在普罗米修斯目标中。我错过了什么?

【问题讨论】:

  • ...向 pod 中添加注释...通过这句话,我不明白,注释必须放在 pod 中而不是服务中。您是否尝试过在部署规范或类似的情况下将注释添加到您的 pod?
  • 是的,我已经尝试在我的部署文件中的metadata/annotationsspec/template/metadata/annotations 下添加注释,但都不起作用
  • 您是否设法解决了这个问题?我有同样的issue

标签: kubernetes prometheus kubernetes-helm


【解决方案1】:

stable/prometheus-operator 图表也遇到了同样的问题。我尝试将上面的注释添加到 pod 和服务中,但都没有奏效。

对我来说,解决方案是添加一个ServiceMonitor 对象。添加后,Prometheus 会动态发现我的服务:

Fig 1: target list

Fig 2: dynamically added scrape_config

解决方案示例

这个命令解决了这个问题:kubectl apply -f service-monitor.yml

# service-monitor.yml
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  labels:
    release: prom
  name: eztype
  namespace: default
spec:
  endpoints:
    - path: /actuator/prometheus
      port: management
  namespaceSelector:
    matchNames:
      - default
  selector:
    matchLabels:
      app.kubernetes.io/name: eztype

在这里,我的 pod 和服务使用名称 eztype 进行注释,并在指定路径下的端口 8282 上公开指标。为了完整起见,这是我的服务定义的相关部分:

# service definition (partial)
spec:
  clusterIP: 10.128.156.246
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: http
  - name: management
    port: 8282
    protocol: TCP
    targetPort: 8282

值得注意的是,Prometheus 图表本身使用了 ServiceMonitor 对象:

$ kubectl get servicemonitors -n monitor
NAME                                               AGE
prom-prometheus-operator-alertmanager              14d
prom-prometheus-operator-apiserver                 14d
prom-prometheus-operator-coredns                   14d
prom-prometheus-operator-grafana                   14d
prom-prometheus-operator-kube-controller-manager   14d
prom-prometheus-operator-kube-etcd                 14d
prom-prometheus-operator-kube-proxy                14d
prom-prometheus-operator-kube-scheduler            14d
prom-prometheus-operator-kube-state-metrics        14d
prom-prometheus-operator-kubelet                   14d
prom-prometheus-operator-node-exporter             14d
prom-prometheus-operator-operator                  14d
prom-prometheus-operator-prometheus                14d

【讨论】:

    猜你喜欢
    • 2018-01-18
    • 2021-07-15
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    • 2018-04-13
    • 1970-01-01
    相关资源
    最近更新 更多