最近,prometheus-operator已经被推广为稳定的helm图表(https://github.com/helm/charts/tree/master/stable/prometheus-operator)。
我想了解如何将自定义应用程序添加到在k8s集群中由prometheus-operator进行监视。如果能提供一个示例,例如默认提供9252指标的gitlab runner(https://docs.gitlab.com/runner/monitoring/#configuration-of-the-metrics-http-server)将不胜感激。
我有一个基本的yaml文件,显然不能正常工作,也没有提供任何关于哪里出问题的反馈:
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: gitlab-monitor
# Change this to the namespace the Prometheus instance is running in
namespace: default
labels:
app: gitlab-runner-gitlab-runner
release: prometheus
spec:
selector:
matchLabels:
app: gitlab-runner-gitlab-runner
namespaceSelector:
# matchNames:
# - default
any: true
endpoints:
- port: http-metrics
interval: 15s
这是Prometheus的配置:
> kubectl get prometheus -o yaml
...
serviceMonitorNamespaceSelector: {}
serviceMonitorSelector:
matchLabels:
release: prometheus
...
因此,选择器应该匹配。我所说的“不起作用”是指端点未出现在Prometheus UI中。
kubectl get prometheus -o yaml
的输出结果。在此处,您需要指定serviceMonitorNamespaceSelector: {}
和serviceMonitorSelector: {}
(例如将选择所有命名空间中的 serviceMonitors)。我认为您的ServiceMonitor
定义看起来很好。 - Peter IttnerserviceMonitorSelector: {}
,以便排除该选择器无法正常工作的可能性。您还可以检查服务的注释。在我的情况下,我有一个选择器 matchLabels: <key>: <value>它是有效的。我不确定
namespaceSelector: # matchNames: # - default any: true ` 是否也有效。 - Peter Ittner