我正在尝试加强监控,并希望扩大从我们的Kube资产中提取到Prometheus中的指标数量。我们已经有一个独立的Prom实现,该实现具有一个硬编码的配置文件,用于监视一些裸机服务器,并且可以通过cadvisor来获取通用的Pod指标。
我想做的是配置Kube来监视部署在群集中的Web服务器的apache_exporter指标,还可以在实例扩展时动态添加第二,第三等Web服务器。
我看过kube-prometheus项目,但这似乎更适合没有部署既定Prometheus的实例。是否有一种简单的方法来使Prometheus刮擦Kube API或etcd来提取与特定条件匹配的Pod的当前列表(即,像deploymentType=webserver
这样的标记)并刮擦这些Pod的apache_exporter指标,并且刮取mysqld_exporter指标,其中deploymentType=mysql
答案 0 :(得分:0)
有一个名为kube-prometheus-stack
(以前是prometheus-operator
)的项目:https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack
它具有称为ServiceMonitor
和PodMonitor
的概念:
基本上,这是一个选择器,它将您的Prometheus实例指向抓取目标。对于服务选择器,它将发现服务后面的所有Pod。对于Pod选择器,它将直接发现Pod。在这两种情况下,Prometheus scrape配置都会自动更新并重新加载。
示例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
(link)。这种额外的显式链接是有意完成的-通过这种方式,如果您的群集上有2个Prometheus实例(例如Infra
和Product
),则可以将哪个Prometheus分离到哪个Pods中去。 / p>
ServiceMonitor
也是如此。