【问题标题】:Kubelet's cAdvisor metrics endpoint does not reliably return all metricsKubelet 的 cAdvisor 指标端点不能可靠地返回所有指标
【发布时间】:2017-09-02 15:58:58
【问题描述】:

我在使用 cAdvisor 时遇到问题,当我查询其指标端点时,并非所有指标都可靠地返回。具体来说,通过 Prometheus 查询container_fs_limit_bytes{device=~"^/dev/.*$",id="/",kubernetes_io_hostname=~"^.*"} 通常只显示我的 Kubernetes 集群中一小部分节点的结果。当相应的指标超过 5 分钟未抓取时会发生这种情况(由于指标变为 stale),但我不确定为什么每次成功查询端点时都没有显示所有指标。

一遍又一遍地卷曲端点表明某些指标仅在特定时间返回,因此上述 Prometheus 查询将返回所有节点的数据,前提是它碰巧在过去 5 分钟内抓取了一次,但通常情况下不会事实并非如此。

一种解决方法是在超过 5 分钟的时间内获取指标的平均值,但这并不理想。

kubectl 版本:

Client Version: version.Info{Major:"1", Minor:"7", GitVersion:"v1.7.4", GitCommit:"793658f2d7ca7f064d2bdf606519f9fe1229c381", GitTreeState:"clean", BuildDate:"2017-08-17T08:48:23Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"7", GitVersion:"v1.7.3+coreos.0", GitCommit:"42de91f04e456f7625941a6c4aaedaa69708be1b", GitTreeState:"clean", BuildDate:"2017-08-07T19:44:31Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}

普罗米修斯版本:1.7.1

普罗米修斯配置:

global:
  scrape_interval: 15s
  scrape_timeout: 10s
  evaluation_interval: 1m
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - alertmanager:9093
    scheme: http
    timeout: 10s
rule_files:
- /etc/prometheus-rules/alert.rules
scrape_configs:
- job_name: kubernetes-nodes
  scrape_interval: 15s
  scrape_timeout: 10s
  metrics_path: /metrics
  scheme: https
  kubernetes_sd_configs:
  - api_server: null
    role: node
    namespaces:
      names: []
  bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
  tls_config:
    ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
    insecure_skip_verify: false
  relabel_configs:
  - source_labels: []
    separator: ;
    regex: __meta_kubernetes_node_label_(.+)
    replacement: $1
    action: labelmap
  - source_labels: []
    separator: ;
    regex: (.*)
    target_label: __address__
    replacement: kubernetes.default.svc:443
    action: replace
  - source_labels: [__meta_kubernetes_node_name]
    separator: ;
    regex: (.+)
    target_label: __metrics_path__
    replacement: /api/v1/nodes/${1}:4194/proxy/metrics
    action: replace
  metric_relabel_configs:
  - source_labels: [id]
    separator: ;
    regex: ^/machine\.slice/machine-rkt\\x2d([^\\]+)\\.+/([^/]+)\.service$
    target_label: rkt_container_name
    replacement: ${2}-${1}
    action: replace
  - source_labels: [id]
    separator: ;
    regex: ^/system\.slice/(.+)\.service$
    target_label: systemd_service_name
    replacement: ${1}
    action: replace

【问题讨论】:

    标签: kubernetes prometheus cadvisor


    【解决方案1】:

    这是 cAdvisor 如何使用 Prometheus 客户端库的known bug

    【讨论】:

      猜你喜欢
      • 2020-07-25
      • 2020-02-07
      • 2022-01-02
      • 2020-11-11
      • 1970-01-01
      • 2014-12-24
      • 2020-02-08
      • 2020-09-25
      • 2022-10-18
      相关资源
      最近更新 更多