Kubernetes 普罗米修斯:监视所有服务而不为每个服务创建ServiceMonitor?

Kubernetes 普罗米修斯:监视所有服务而不为每个服务创建ServiceMonitor?,kubernetes,prometheus,kubernetes-helm,prometheus-operator,Kubernetes,Prometheus,Kubernetes Helm,Prometheus Operator,我正在使用 我想知道是否可以设置prometheus操作符来自动监视集群或命名空间中的每个服务,而不必为每个服务创建ServiceMonitor 使用当前设置,当我想要监控服务时,我必须创建一个标签为release:prometheus的ServiceMonitor 编辑: 带有监控的服务:“true”标签 apiVersion: v1 kind: Service metadata: name: issue-manager-service labels: app: issue-m

我正在使用

我想知道是否可以设置prometheus操作符来自动监视集群或命名空间中的每个服务,而不必为每个服务创建
ServiceMonitor

使用当前设置,当我想要监控服务时,我必须创建一个标签为
release:prometheus
ServiceMonitor

编辑:

带有
监控的服务:“true”
标签

apiVersion: v1
kind: Service
metadata:
  name: issue-manager-service
  labels:
    app: issue-manager-app
    monitoring: "true"
spec:
  selector:
    app: issue-manager-app
  ports:
    - protocol: TCP
      name: http
      port: 80
      targetPort: 7200
“全部捕获”服务监视器:

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: service-monitor-scraper
  labels:
    release: prometheus
spec:
  endpoints:
  - port: metrics
    interval: 30s
    path: /metrics
  jobLabel: monitoring
  namespaceSelector:
    any: true
  selector:
    matchLabels:
      monitoring: "true"

只有在所有服务上都有一个通用标签的情况下

# for example:
org: "my-company"
# or
monitoring: "true"
# or 
app.kubernetes.io/managed-by: "Helm"  # <- in most cases this represents all
然后,为确保普罗米修斯操作员发现此
服务监视器
,您可以:

  • 通过内置操作员模板声明此
    ServiceMonitor
  • 或者,声明一个指向您的
    ServiceMonitor
Prometheus Operator和ServiceMonitor之间的这种额外的显式链接是有意实现的——通过这种方式,如果集群上有两个Prometheus实例(比如Infra和Product),您可以将哪些Prometheus将获得哪些POD分配到其刮片配置中


从您的问题来看,听起来您已经有了一个基于
release:prometheus
标签的
serviceMonitorSelector
——尝试将其添加到您的全面
ServiceMonitor
上。

谢谢您的帮助。我已经创建了ServiceMonitor,并且只将
监控:true
更改为
监控:“true”
,因为我在其他方面遇到了错误。我已经应用了这个文件,然后将标签
monitoring:“true”
添加到一个服务,并应用了它。然而,这项服务并没有出现在我的普罗米修斯目标中。有什么想法吗?ServiceMonitor应该在什么时候使用
监控:“true”
标签获取服务?等等,我添加了另一部分的描述-如果一切都正确,操作员如何发现ServiceMonitor本身,服务将在一分钟内进入目标列表。我已将
release:prometheus
标签添加到我的“一网打尽”服务监视器中。现在它显示在普罗米修斯目标中,但当我将标签
监控:“true”
添加到服务中时,它仍然不会显示在普罗米修斯目标中。我已将我的yaml文件添加到我的问题中。知道哪里有问题吗?
port:metrics
-服务端口称为
http
。servicemonitor或服务中的更改。这是我能看到的唯一问题
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: common-monitor
  namespace: monitoring
spec:
  endpoints:
  - port: metrics
    interval: 30s
    path: /metrics
  jobLabel: monitoring
  namespaceSelector:
    any: true  # <- important
  selector:
    matchLabels:
      monitoring: "true"  # <- should match what you've chosen as common