Merge pull request #1146 from povilasv/add-volume-id

add aws/gce volume id to kube_persistentvolume_info
This commit is contained in:
Kubernetes Prow Robot 2020-05-25 06:27:12 -07:00 committed by GitHub
commit cce1e3309a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 71 additions and 5 deletions

View File

@ -1,3 +1,7 @@
## MASTER
* [FEATURE] Add ebs_volume_id and gce_persistent_disk_name to kube_persistentvolume_info metric. #1146
## v1.9.5 / 2020-02-20
* [BUGFIX] Switch to using only v1 client of validatingwebhookconfiguration #1052

View File

@ -5,5 +5,5 @@
| kube_persistentvolume_capacity_bytes | Gauge | `persistentvolume`=<pv-name> | STABLE |
| kube_persistentvolume_status_phase | Gauge | `persistentvolume`=&lt;pv-name&gt; <br>`phase`=&lt;Bound\|Failed\|Pending\|Available\|Released&gt;| STABLE |
| kube_persistentvolume_labels | Gauge | `persistentvolume`=&lt;persistentvolume-name&gt; <br> `label_PERSISTENTVOLUME_LABEL`=&lt;PERSISTENTVOLUME_LABEL&gt; | STABLE |
| kube_persistentvolume_info | Gauge | `persistentvolume`=&lt;pv-name&gt; <br> `storageclass`=&lt;storageclass-name&gt; | STABLE |
| kube_persistentvolume_info | Gauge | `persistentvolume`=&lt;pv-name&gt; <br> `storageclass`=&lt;storageclass-name&gt; <br> `gce_persistent_disk_name`=&lt;pd-name&gt; <br> `ebs_volume_id`=&lt;ebs-volume-id&gt; | STABLE |

View File

@ -102,12 +102,28 @@ var (
Type: metric.Gauge,
Help: "Information about persistentvolume.",
GenerateFunc: wrapPersistentVolumeFunc(func(p *v1.PersistentVolume) *metric.Family {
var gcePDDiskName, ebsVolumeID string
switch {
case p.Spec.PersistentVolumeSource.GCEPersistentDisk != nil:
gcePDDiskName = p.Spec.PersistentVolumeSource.GCEPersistentDisk.PDName
case p.Spec.PersistentVolumeSource.AWSElasticBlockStore != nil:
ebsVolumeID = p.Spec.PersistentVolumeSource.AWSElasticBlockStore.VolumeID
}
return &metric.Family{
Metrics: []*metric.Metric{
{
LabelKeys: []string{"storageclass"},
LabelValues: []string{p.Spec.StorageClassName},
Value: 1,
LabelKeys: []string{
"storageclass",
"gce_persistent_disk_name",
"ebs_volume_id",
},
LabelValues: []string{
p.Spec.StorageClassName,
gcePDDiskName,
ebsVolumeID,
},
Value: 1,
},
},
}

View File

@ -169,7 +169,53 @@ func TestPersistentVolumeStore(t *testing.T) {
Want: `
# HELP kube_persistentvolume_info Information about persistentvolume.
# TYPE kube_persistentvolume_info gauge
kube_persistentvolume_info{persistentvolume="test-pv-available",storageclass=""} 1
kube_persistentvolume_info{ebs_volume_id="",gce_persistent_disk_name="",persistentvolume="test-pv-available",storageclass=""} 1
`,
MetricNames: []string{"kube_persistentvolume_info"},
},
{
Obj: &v1.PersistentVolume{
Spec: v1.PersistentVolumeSpec{
PersistentVolumeSource: v1.PersistentVolumeSource{
GCEPersistentDisk: &v1.GCEPersistentDiskVolumeSource{
PDName: "name",
},
},
},
ObjectMeta: metav1.ObjectMeta{
Name: "test-pv-available",
},
Status: v1.PersistentVolumeStatus{
Phase: v1.VolumeAvailable,
},
},
Want: `
# HELP kube_persistentvolume_info Information about persistentvolume.
# TYPE kube_persistentvolume_info gauge
kube_persistentvolume_info{ebs_volume_id="",gce_persistent_disk_name="name",persistentvolume="test-pv-available",storageclass=""} 1
`,
MetricNames: []string{"kube_persistentvolume_info"},
},
{
Obj: &v1.PersistentVolume{
Spec: v1.PersistentVolumeSpec{
PersistentVolumeSource: v1.PersistentVolumeSource{
AWSElasticBlockStore: &v1.AWSElasticBlockStoreVolumeSource{
VolumeID: "aws://eu-west-1c/vol-012d34d567890123b",
},
},
},
ObjectMeta: metav1.ObjectMeta{
Name: "test-pv-available",
},
Status: v1.PersistentVolumeStatus{
Phase: v1.VolumeAvailable,
},
},
Want: `
# HELP kube_persistentvolume_info Information about persistentvolume.
# TYPE kube_persistentvolume_info gauge
kube_persistentvolume_info{ebs_volume_id="aws://eu-west-1c/vol-012d34d567890123b",gce_persistent_disk_name="",persistentvolume="test-pv-available",storageclass=""} 1
`,
MetricNames: []string{"kube_persistentvolume_info"},
},