以下示例来自github
创建一个实例deploy,创建的pod带有labels: app: example-app
yaml
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创建对应的svc
yaml
kind: Service
apiVersion: v1
metadata:
name: example-app
labels:
app: example-app
spec:
selector:
app: example-app
ports:
- name: web
port: 8080该svc选取label为
app: example-app
ServiceMonitor来进行监控
使用ServiceMonitor来对其进行监控
该ServiceMonitor对选中所有label为
app: example-app的svc,并且自己有一个label为team: frontend,可以在这个ServiceMonitor中写下所有前端团队的svc,这样就简单了许多
yaml
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: example-app
labels:
team: frontend
spec:
selector:
matchLabels:
app: example-app
endpoints:
- port: web修改prometheus或者创建新的
通过
spec.serviceMonitorSelector来对上面写的ServiceMonitor来进行监控
yaml
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
name: prometheus
spec:
serviceAccountName: prometheus
serviceMonitorSelector:
matchLabels:
team: frontend
resources:
requests:
memory: 400Mi
enableAdminAPI: false总结
通过prometheus选中svcMonitor,svcMonitor选中svc,svc选中pod,进行对pod的监控,通过label来进行监控
使用PodMonitors进行pod监控
和ServiceMonitor不一样,PodMonitors不需要创建svc,使用
spec.selector告诉prometheus哪些pod需要监控
PodMonitors
yaml
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: example-app
labels:
team: frontend
spec:
selector:
matchLabels:
app: example-app
podMetricsEndpoints:
- port: web和svcMonitor相同,这里需要修改spec.podMonitorSelector
yaml
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
name: prometheus
spec:
serviceAccountName: prometheus
podMonitorSelector:
matchLabels:
team: frontend
resources:
requests:
memory: 400Mi
enableAdminAPI: false