Prometheus/GrafanaでPersistent Volumesの空き容量を取得する
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も返ってきますが、今のところフィルタする方法はなさそうです。