1.先在prometheus-cfg.yaml配置文件里添加如下配置信息:
- job_name: kubernetes-pods
kubernetes_sd_configs:
- role: pod
relabel_configs:
- action: keep
regex: true
source_labels:
- __meta_kubernetes_pod_annotation_prometheus_io_scrape
- action: replace
regex: (.+)
source_labels:
- __meta_kubernetes_pod_annotation_prometheus_io_path
target_label: __metrics_path__
- action: replace
regex: ([^:]+)(?::\d+)?;(\d+)
replacement: $1:$2
source_labels:
- __address__
- __meta_kubernetes_pod_annotation_prometheus_io_port
target_label: __address__
- action: labelmap
regex: __meta_kubernetes_pod_label_(.+)
- action: replace
source_labels:
- __meta_kubernetes_namespace
target_label: kubernetes_namespace
- action: replace
source_labels:
- __meta_kubernetes_pod_name
target_label: kubernetes_pod_name
2.需要修改pod,让prometheus可以抓取到
kubectl -n monitoa-sa get po
[root@k8s-master ~]# kubectl get pods -n monitor-sa
NAME READY STATUS RESTARTS AGE
node-exporter-7vs6m 1/1 Running 3 27d
node-exporter-xqh6c 1/1 Running 3 27d
prometheus-server-86cf69fb95-w2cjp 2/2 Running 0 12h
kubectl edit pods prometheus-server-86cf69fb95-w2cjp -n monitor-sa
修改annotations字段
metadata:
annotations:
cni.projectcalico.org/podIP: 10.244.1.68/32
prometheus.io/scrape: "true" #默认是false,变成true,就可以被prometheus抓取到,如果pod内没有这段内容,直接加上这段内容即可,加上这段内容就可以被prometheus监控到,其他pod也一样如此
修改好之后,在prometheus web界面,点击status->targets,可以看到target列表多了kubernetes-pod这个列表