@int128

int128.hatenablog.com

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で確認しています。

Grafanaで以下のクエリを指定すると、

  • Query: kubelet_volume_stats_used_bytes / kubelet_volume_stats_capacity_bytes
  • Legend: {{namespace}}/{{persistentvolumeclaim}}

このようなグラフが作成されます。

f:id:int128:20180218153328p:plain

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も返ってきますが、今のところフィルタする方法はなさそうです。