基于pod标签动态更新prometheus scrape配置



我正在努力加强我的监控,并希望扩大从我们的Kube庄园引入Prometheus的指标数量。我们已经有了一个独立的Prom实现,它有一个硬编码的配置文件来监控一些裸机服务器,并挂钩到cadvisor中以获得通用的Pod指标

我想做的是配置Kube来监控集群中部署的Web服务器的apache_exporter度量,但也可以在实例扩展时动态添加第二、第三等Web服务器

我看过kube prometheus项目,但这似乎更适合于没有部署已建立的prometheus的情况。有没有一种简单的方法可以让prometheus抓取Kube API或etcd,以获取符合特定标准的当前pods列表(即deploymentType=webserver之类的标签(,并抓取这些pods的apache_exporter度量,以及抓取mysqld_exporter度量,其中deploymentType=mysql

有一个名为kube-prometheus-stack(以前的prometheus-operator(的项目:https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack

它有称为ServiceMonitorPodMonitor:的概念

  • https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/design.md#servicemonitor
  • https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/design.md#podmonitor

基本上,这是一个选择器,它指向普罗米修斯实例来抓取目标。在服务选择器的情况下,它会发现服务背后的所有pod。在pod选择器的情况下,它直接发现pod。普罗米修斯刮取配置在这两种情况下都会自动更新和重新加载。

示例PodMonitor:

apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: example
namespace: monitoring
spec:
podMetricsEndpoints:
- interval: 30s
path: /metrics
port: http
namespaceSelector:
matchNames:
- app
selector:
matchLabels:
app.kubernetes.io/name: my-app

请注意,此PodMonitor对象本身必须由控制器发现。为此,您编写了一个PodMonitorSelector(链接(。这种额外的显式链接是有意完成的——通过这种方式,如果您的集群上有两个Prometheus实例(比如InfraProduct(,您可以将哪个Prometheus将获得哪个Pod作为其抓取配置。

这同样适用于ServiceMonitor

相关内容

  • 没有找到相关文章

最新更新