我想从 Kubernetes 的部署(具有多个 Pod)收集指标,我的指标之一是我的部署收到的调用数量。
我的问题是关于 Prometheus:如何配置 Prometheus 从属于部署的所有 Pod 中获取指标?实现这一目标的最佳实践是什么?
我强烈建议使用 prometheus-operator 来完成所有繁重的工作,为您的应用程序配置 Prometheus 监控。
例如,拥有这样的部署和服务:
apiVersion: apps/v1
kind: Deployment
metadata:
name: example-app
spec:
replicas: 3
selector:
matchLabels:
app: example-app
template:
metadata:
labels:
app: example-app
spec:
containers:
- name: example-app
image: fabxc/instrumented_app
ports:
- name: web
containerPort: 8080
---
kind: Service
apiVersion: v1
metadata:
name: example-app
labels:
app: example-app
spec:
selector:
app: example-app
ports:
- name: web
port: 8080
您可以配置
ServiceMonitor
对象,该对象将使用 Service 作为服务发现端点来查找 Deployment 的所有 pod。这假设您的应用程序使用 HTTP 路径公开指标/metrics
。
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: example-app
labels:
team: frontend
spec:
selector:
matchLabels:
app: example-app
endpoints:
- port: web
这将使 Prometheus 为您的应用程序抓取指标。
您可以在这里阅读有关 ServiceMonitors 的更多信息:https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/getting-started.md