diff --git a/metrics/prometheus.go b/metrics/prometheus.go index 7d738599..775866bb 100644 --- a/metrics/prometheus.go +++ b/metrics/prometheus.go @@ -228,6 +228,26 @@ func NewPrometheusCollector(i infoProvider, f ContainerLabelsFunc) *PrometheusCo }, } }, + }, { + name: "container_fs_inodes_free", + help: "Number of available Inodes", + valueType: prometheus.GaugeValue, + extraLabels: []string{"device"}, + getValues: func(s *info.ContainerStats) metricValues { + return fsValues(s.Filesystem, func(fs *info.FsStats) float64 { + return float64(fs.InodesFree) + }) + }, + }, { + name: "container_fs_inodes_total", + help: "Number of Inodes", + valueType: prometheus.GaugeValue, + extraLabels: []string{"device"}, + getValues: func(s *info.ContainerStats) metricValues { + return fsValues(s.Filesystem, func(fs *info.FsStats) float64 { + return float64(fs.Inodes) + }) + }, }, { name: "container_fs_limit_bytes", help: "Number of bytes that can be consumed by the container on this filesystem.", diff --git a/metrics/prometheus_test.go b/metrics/prometheus_test.go index d62a64ec..c02da60b 100644 --- a/metrics/prometheus_test.go +++ b/metrics/prometheus_test.go @@ -130,6 +130,8 @@ func (p testSubcontainersInfoProvider) SubcontainersInfo(string, *info.Container Filesystem: []info.FsStats{ { Device: "sda1", + InodesFree: 524288, + Inodes: 2097152, Limit: 22, Usage: 23, ReadsCompleted: 24, @@ -146,6 +148,8 @@ func (p testSubcontainersInfoProvider) SubcontainersInfo(string, *info.Container }, { Device: "sda2", + InodesFree: 262144, + Inodes: 2097152, Limit: 37, Usage: 38, ReadsCompleted: 39, diff --git a/metrics/testdata/prometheus_metrics b/metrics/testdata/prometheus_metrics index bd1f5d19..954c6a5a 100644 --- a/metrics/testdata/prometheus_metrics +++ b/metrics/testdata/prometheus_metrics @@ -22,6 +22,14 @@ container_cpu_usage_seconds_total{container_env_foo_env="prod",container_label_f # HELP container_cpu_user_seconds_total Cumulative user cpu time consumed in seconds. # TYPE container_cpu_user_seconds_total counter container_cpu_user_seconds_total{container_env_foo_env="prod",container_label_foo_label="bar",id="testcontainer",image="test",name="testcontaineralias",zone_name="hello"} 6e-09 +# HELP container_fs_inodes_free Number of available Inodes +# TYPE container_fs_inodes_free gauge +container_fs_inodes_free{container_env_foo_env="prod",container_label_foo_label="bar",device="sda1",id="testcontainer",image="test",name="testcontaineralias",zone_name="hello"} 524288 +container_fs_inodes_free{container_env_foo_env="prod",container_label_foo_label="bar",device="sda2",id="testcontainer",image="test",name="testcontaineralias",zone_name="hello"} 262144 +# HELP container_fs_inodes_total Number of Inodes +# TYPE container_fs_inodes_total gauge +container_fs_inodes_total{container_env_foo_env="prod",container_label_foo_label="bar",device="sda1",id="testcontainer",image="test",name="testcontaineralias",zone_name="hello"} 2.097152e+06 +container_fs_inodes_total{container_env_foo_env="prod",container_label_foo_label="bar",device="sda2",id="testcontainer",image="test",name="testcontaineralias",zone_name="hello"} 2.097152e+06 # HELP container_fs_io_current Number of I/Os currently in progress # TYPE container_fs_io_current gauge container_fs_io_current{container_env_foo_env="prod",container_label_foo_label="bar",device="sda1",id="testcontainer",image="test",name="testcontaineralias",zone_name="hello"} 42