首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的Prometheus操作符ServiceMonitor需要一个“`release`”标签才能正常运行?

为什么我的Prometheus操作符ServiceMonitor需要一个“`release`”标签才能正常运行?
EN

Stack Overflow用户
提问于 2021-10-06 13:22:08
回答 1查看 1.4K关注 0票数 3

当我部署这个时:

代码语言:javascript
复制
kind: ServiceMonitor
apiVersion: monitoring.coreos.com/v1
metadata:
  labels:
    app: complaints-monitor
    release: prometheus # <---------
  name: complaints-monitor-svc-monitor
  namespace: default
spec:
  endpoints:
    - path: /metrics
      port: web
  namespaceSelector:
    matchNames:
      - default
  selector:
    matchLabels:
      app: complaints-monitor

我的服务在普罗米修斯的目标下出现并正常运行。

如果应用以下内容,则目标将消失:

代码语言:javascript
复制
kind: ServiceMonitor
apiVersion: monitoring.coreos.com/v1
metadata:
  labels:
    app: complaints-monitor
  name: complaints-monitor-svc-monitor
  namespace: default
spec:
  endpoints:
    - path: /metrics
      port: web
  namespaceSelector:
    matchNames:
      - default
  selector:
    matchLabels:
      app: complaints-monitor
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-07 09:05:22

在检查了values.yaml of kube-prometheus-stack之后才发现了这个问题

代码语言:javascript
复制
    ## If true, a nil or {} value for prometheus.prometheusSpec.serviceMonitorSelector will cause the
    ## prometheus resource to be created with selectors based on values in the helm deployment,
    ## which will also match the servicemonitors created
    ##
    serviceMonitorSelectorNilUsesHelmValues: true


    ## ServiceMonitors to be selected for target discovery.
    ## If {}, select all ServiceMonitors
    ##
    serviceMonitorSelector: {}
    ## Example which selects ServiceMonitors with label "prometheus" set to "somelabel"
    # serviceMonitorSelector:
    #   matchLabels:
    #     prometheus: somelabel

当您使用helm安装kube-prometheus-stack时,它会向Kubernetes资源添加label release: <prometheus-installed-namespace>

如果设置serviceMonitorSelectorNilUsesHelmValuestrue,则将向prometheus.prometheusSpec.serviceMonitorSelector添加选择器,在您的情况下是release: prometheus

您将能够看到prometheus用命令选择serviceMonitor的选择器

代码语言:javascript
复制
kubectl -n <prometheus-installed-namespace> get prometheus -o yaml

并搜索serviceMonitorSelector

在不添加release标签的情况下,您有两个选项可以使它工作

  1. serviceMonitorSelectorNilUsesHelmValues设置为false,然后prometheus将选择所有serviceMonitor
  2. 或者,将serviceMonitorSelector设置为任何您喜欢的标签。
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69466567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档