add persistent volume capacity metric
This commit is contained in:
parent
83302c9ed1
commit
8d4984cc1a
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
| Metric name| Metric type | Labels/tags | Status |
|
||||
| ---------- | ----------- | ----------- | ----------- |
|
||||
| kube_persistentvolume_capacity | Gauge | `persistentvolume`=<pv-name> | STABLE |
|
||||
| kube_persistentvolume_status_phase | Gauge | `persistentvolume`=<pv-name> <br>`phase`=<Bound\|Failed\|Pending\|Available\|Released>| STABLE |
|
||||
| kube_persistentvolume_labels | Gauge | `persistentvolume`=<persistentvolume-name> <br> `label_PERSISTENTVOLUME_LABEL`=<PERSISTENTVOLUME_LABEL> | STABLE |
|
||||
| kube_persistentvolume_info | Gauge | `persistentvolume`=<pv-name> <br> `storageclass`=<storageclass-name> | STABLE |
|
||||
|
|
|
|||
|
|
@ -108,6 +108,21 @@ var (
|
|||
}
|
||||
}),
|
||||
},
|
||||
{
|
||||
Name: "kube_persistentvolume_capacity",
|
||||
Type: metric.MetricTypeGauge,
|
||||
Help: "persistentvolume capacity in Gigabytes.",
|
||||
GenerateFunc: wrapPersistentVolumeFunc(func(p *v1.PersistentVolume) *metric.Family {
|
||||
storage := p.Spec.Capacity[v1.ResourceStorage]
|
||||
return &metric.Family{
|
||||
Metrics: []*metric.Metric{
|
||||
{
|
||||
Value: float64(storage.Size()),
|
||||
},
|
||||
},
|
||||
}
|
||||
}),
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import (
|
|||
"testing"
|
||||
|
||||
"k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/api/resource"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/kube-state-metrics/pkg/metric"
|
||||
)
|
||||
|
|
@ -34,6 +35,8 @@ func TestPersistentVolumeCollector(t *testing.T) {
|
|||
# TYPE kube_persistentvolume_labels gauge
|
||||
# HELP kube_persistentvolume_info Information about persistentvolume.
|
||||
# TYPE kube_persistentvolume_info gauge
|
||||
# HELP kube_persistentvolume_capacity The size of the persistentvolume in Gigabytes.
|
||||
# TYPE kube_persistentvolume_capacity gauge
|
||||
`
|
||||
cases := []generateMetricsTestCase{
|
||||
// Verify phase enumerations.
|
||||
|
|
@ -201,6 +204,22 @@ func TestPersistentVolumeCollector(t *testing.T) {
|
|||
`,
|
||||
MetricNames: []string{"kube_persistentvolume_labels"},
|
||||
},
|
||||
{
|
||||
Obj: &v1.PersistentVolume{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "test-pv",
|
||||
},
|
||||
Spec: v1.PersistentVolumeSpec{
|
||||
Capacity: v1.ResourceList{
|
||||
v1.ResourceStorage: resource.MustParse("5Gi"),
|
||||
},
|
||||
},
|
||||
},
|
||||
Want: `
|
||||
kube_persistentvolume_capacity{persistentvolume="test-pv"} 5
|
||||
`,
|
||||
MetricNames: []string{"kube_persistentvolume_capacity"},
|
||||
},
|
||||
}
|
||||
for i, c := range cases {
|
||||
c.Func = metric.ComposeMetricGenFuncs(persistentVolumeMetricFamilies)
|
||||
|
|
|
|||
Loading…
Reference in New Issue