我正在使用this prometheus helm chart。
我想知道是否可以将prometheus运算符设置为自动监视集群或名称空间中的每个服务,而不必为每个服务创建ServiceMonitor
。
在当前设置下,当我要监视服务时,必须创建一个标签为ServiceMonitor
的{{1}}。
编辑:
带有release: prometheus
标签的服务
monitoring: "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
答案 0 :(得分:4)
只有在所有服务上都具有通用标签
# for example:
org: "my-company"
# or
monitoring: "true"
# or
app.kubernetes.io/managed-by: "Helm" # <- in most cases this represents all
然后,您定义一个单一的交叉命名空间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
然后确保您自己的Prometheus操作员发现了此ServiceMonitor
:
ServiceMonitor
serviceMonitorSelector
https://github.com/prometheus-community/helm-charts/blob/4164ad5fdb6a977f1aba7b65f4e65582d3081528/charts/kube-prometheus-stack/values.yaml#L1760的ServiceMonitor
Prometheus Operator和ServiceMonitor之间的这种额外的显式链接是有意进行的-这样,如果您的群集上有2个Prometheus实例(例如Infra和Product),则可以将哪个Prometheus分离到哪个Pods进行抓取配置。 / p>
从您的问题来看,听起来您已经有一个基于serviceMonitorSelector
标签的release: prometheus
-尝试将其添加到全部ServiceMonitor
上。