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

2024-03-19T10:09:30.png

指标api
http://192.168.83.228:8085/api/v1/nodes/node1/proxy/metrics/cadvisor

2024-03-19T10:09:45.png

2024-03-19T10:09:53.png

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

2024-03-19T10:10:02.png

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为 / $是什么结尾
2024-03-19T10:10:14.png

最后修改:2024 年 03 月 19 日
如果觉得我的文章对你有用,请随意赞赏