1.node level metrics
they are exposed by the kubelet at the /metrics/cadvisor endpoint on each node
根据node查container指标 是通过 每个节点上的 /metrics/cadvisor 短点获得
想直接访问的话,你需要开启kube-proxy
命令:
kubectl proxy --port=8085 --address=192.168.83.228 --accept-hosts=192.168.83.228
指标api
http://192.168.83.228:8085/api/v1/nodes/node1/proxy/metrics/cadvisor
2.理解配置文件
scrape_configs:
- job_name: 'node-cadvisor'
kubernetes_sd_configs:
- role: node
scheme: https
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
relabel_configs:
- target_label: address
replacement: kubernetes.default.svc:443
- source_labels: [__meta_kubernetes_node_name]
regex: (.+)
target_label: metrics_path
replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor
metric_relabel_configs:
- source_labels: [name,id]
regex: container_memory_working_set_bytes;/$
action: keep
role 告诉 k8s的服务发现机制,你要找每个节点
tls_config和bearer_token_file是权限验证用的
- target_label: __address__
replacement: kubernetes.default.svc:443
__address__: https://kubernetes.default.svc:443
这个替换的地址是一个常量,只要你要去通过k8s的api访问pod就要设置这个 !
- source_labels: [__meta_kubernetes_node_name]
regex: (.+)
target_label: __metrics_path__
replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor
__metrics_path__:/api/v1/nodes/{NODE_NAME}/proxy/metrics/cadvisor
总结,就是要拼接得到如下的url:
https://kubernetes.default.svc:443/api/v1/nodes/{NODE_NAME}/proxy/metrics/cadvisor
metric_relabel_configs:
- source_labels: [__name__,id]
regex: container_memory_working_set_bytes;/$
action: keep
keep 就是保留,抓取你敢兴趣的
/$ 精确匹配 id为 / $是什么结尾