Prometheus 未从 GKE 中的 cadvisor 接收指标

use*_*466 3 kubernetes google-kubernetes-engine prometheus cadvisor

嘿嘿,

我在 GKE v1.16.x 中使用 kubernetes 部署了 prometheus、grafana、kube-state-metrics、alertmanager 等设置。我使用https://github.com/do-community/doks-monitoring作为 yaml 文件的起点。

我已经尝试调试一种情况几天了,非常感谢您的帮助。我的普罗米修斯节点没有从 cadvisor 获取指标。

  • 部署中的所有服务和 Pod 都在运行。prometheus、kube-state-metrics、node-exporter,全部运行 - 没有错误。
  • prometheus UI 中的 cadvisor 目标显示为“up”。
  • Prometheus 能够从集群收集其他指标,但没有 Pod/容器级别的使用指标。
  • 当我查询 时,我可以看到 cadvisor 指标kubectl get --raw "/api/v1/nodes/<your_node>/proxy/metrics/cadvisor",但是当我在 prometheus 中查找container_cpu_usage或时container_memory_usage,没有数据。
  • 我的 cadvisor 在 prometheus 中抓取作业配置
    - job_name: kubernetes-cadvisor
      honor_timestamps: true
      scrape_interval: 15s
      scrape_timeout: 10s
      metrics_path: /metrics/cadvisor
      scheme: https
      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: true
      kubernetes_sd_configs:
      - role: node
      relabel_configs:
        - action: labelmap
          regex: __meta_kubernetes_node_label_(.+)
Run Code Online (Sandbox Code Playgroud)

摘自 prometheus/docs/examples。

我已经在路径和抓取配置上尝试了一大堆不同的变体,但没有运气。基于我可以使用(它们存在)查询指标的事实,kubectl get在我看来,问题在于 prometheus 与 cadvisor 目标进行通信。

如果有人有配置此功能的经验,我肯定会感谢一些帮助调试。

干杯

use*_*466 5

我找到了一个博客,其中有一个适合我的示例配置。cadvisor(和 kubelet)指标的 GKE 端点与文档示例中的标准端点不同。这是我的普罗米修斯工作的摘录:

    - job_name: kubernetes-cadvisor
      honor_timestamps: true
      scrape_interval: 15s
      scrape_timeout: 10s
      metrics_path: /metrics/cadvisor
      scheme: https
      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: true
      kubernetes_sd_configs:
      - role: node
      relabel_configs:
        - action: labelmap
          regex: __meta_kubernetes_node_label_(.+)
        - target_label: __address__
          replacement: kubernetes.default.svc.cluster.local:443
        - source_labels: [__meta_kubernetes_node_name]
          regex: (.+)
          target_label: __metrics_path__
          replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor
    - job_name: kubernetes-kubelet
      honor_timestamps: true
      scrape_interval: 15s
      scrape_timeout: 10s
      metrics_path: /metrics
      scheme: https
      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: true
      kubernetes_sd_configs:
      - role: node
      relabel_configs:
      - action: labelmap
        regex: __meta_kubernetes_node_label_(.+)
      - target_label: __address__
        replacement: kubernetes.default.svc.cluster.local:443
      - target_label: __metrics_path__
        source_labels: [__meta_kubernetes_node_name]
        regex: (.+)
        replacement: /api/v1/nodes/${1}/proxy/metrics
Run Code Online (Sandbox Code Playgroud)

编辑:这是博客文章的链接 -> https://medium.com/htc-research-engineering-blog/monitoring-kubernetes-clusters-with-grafana-e2a413febefd