【问题标题】:How to monitor disk usage of persistent volumes?如何监控持久卷的磁盘使用情况?
【发布时间】:2019-04-29 08:46:16
【问题描述】:

我想监控集群中持久卷的磁盘使用情况。我正在使用CoreOS Kube Prometheus。仪表板正在尝试使用名为 kubelet_volume_stats_capacity_bytes 的指标进行查询,从 v1.12 开始,Kubernetes 版本不再提供该指标。

我正在使用 Kubernetes 版本 v1.13.4 和 hostpath-provisioner 根据持久卷声明来配置卷。我想访问每个持久卷的当前磁盘使用指标。

  • kube_persistentvolumeclaim_resource_requests_storage_bytes 可用,但它仅显示以字节为单位的持久声明请求

  • container_fs_usage_bytes 没有完全解决我的问题。

【问题讨论】:

    标签: kubernetes prometheus metrics persistent-volumes kubernetes-pvc


    【解决方案1】:

    是的,在最新版本的 Kubernetes 中,您无法监控 kubelet_volume_stats_capacity_bytes 等指标,但有一些解决方法。不幸的是,这在今天的 Kubernetes 中有点分散。 PVC 可能具有容量和使用指标,具体取决于卷提供程序,并且似乎任何基于 CSI 的卷根本没有这些。我们可以尽最大努力做到这一点,但在这些指标不可用的情况下很容易快速找到。

    首先,只需编写自己的脚本,每次收集 container_fs_usage_bytes 等指标值时,将计算测量前容量与容器使用量之间的差异(以字节为单位)(指标将 container_fs_usage_bytes 有帮助)。

    Prometheus 是非常流行的解决方案,但要监控容量,尤其是磁盘使用情况,您可以使用 Heapster,现在他即将“退休”,但对于这种特殊情况,您可以使用它,但您也必须实现脚本。看看存储库: heapster-memory

    "res.Containers = append(res.Containers, metrics.ContainerMetrics{Name: c.Name, Usage: usage})"

    希望对你有帮助。

    【讨论】:

    • 我正在查看 container_fs_usage_bytes 指标,虽然这显示了容器上可用的内容,但问题是 PVC 可能来自容器外部和主机系统外部。例如,我们正在使用 NFS,而来自 NFS 的 PV 没有显示在 container_fs_usage_bytes 中。
    【解决方案2】:

    我的舞会配置中有如下工作:

      - job_name: 'kubernetes-nodes'
    
        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:
        - action: labelmap
          regex: __meta_kubernetes_node_label_(.+)
        - 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
    

    完成这项工作后,我在 Prometheus 中看到了以下可用指标:

    kubelet_volume_stats_available_bytes
    kubelet_volume_stats_capacity_bytes
    kubelet_volume_stats_inodes
    kubelet_volume_stats_inodes_free
    kubelet_volume_stats_inodes_used
    kubelet_volume_stats_used_bytes
    

    更多:https://github.com/google/cadvisor/issues/1702

    【讨论】:

      【解决方案3】:

      我有一个用于监控 pvc 使用情况的 prometheus 导出器,并提供了 pod 和 pvc 之间的映射。有兴趣的可以试试。

      https://github.com/kais271/pvc-exporter

      普罗米修斯指标:

      pvc_usage
      pvc_mapping
      

      【讨论】:

        猜你喜欢
        • 2017-11-26
        • 2023-03-20
        • 2013-05-03
        • 2011-08-04
        • 2021-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多