TL;DR
- KubernetesのPersistent Volumesの容量をPrometheusで取得するには以下のMetricsを使用する。
kubelet_volume_stats_available_bytes(使用可能バイト数)kubelet_volume_stats_used_bytes(使用済みバイト数)kubelet_volume_stats_capacity_bytes(容量)
- Namespaceやノード名などでフィルタできる。
- 削除済みのPersistent Volumesも返されるが、今のところフィルタする方法はなさそう。
具体的な方法と例
HelmでNamespace kube-system にインストールしたPrometheus 2.1.0とGrafana 4.6.3で確認しています。
- Prometheus: https://github.com/kubernetes/charts/tree/master/stable/prometheus
- Grafana: https://github.com/kubernetes/charts/tree/master/stable/grafana
Grafanaで以下のクエリを指定すると、
- Query:
kubelet_volume_stats_used_bytes / kubelet_volume_stats_capacity_bytes - Legend:
{{namespace}}/{{persistentvolumeclaim}}
このようなグラフが作成されます。

Prometheusでは以下の情報が取得できるため、Namespaceやノード名などでフィルタすることも可能です。
kubelet_volume_stats_capacity_bytes{
beta_kubernetes_io_arch="amd64",
beta_kubernetes_io_instance_type="m3.medium",
beta_kubernetes_io_os="linux",
failure_domain_beta_kubernetes_io_region="us-west-2",
failure_domain_beta_kubernetes_io_zone="us-west-2a",
instance="ip-172-20-46-41.us-west-2.compute.internal",
job="kubernetes-nodes",
kops_k8s_io_instancegroup="nodes",
kubernetes_io_hostname="ip-172-20-46-41.us-west-2.compute.internal",
kubernetes_io_role="node",
namespace="kube-system",
node_role_kubernetes_io_node="",
persistentvolumeclaim="prometheus-prometheus-server"}
削除済みのPersistent Volumesも返ってきますが、今のところフィルタする方法はなさそうです。