Skip to content

Commit 643996e

Browse files
authored
Merge pull request #42 from PureStorage-OpenConnect/41-report-s3-bucket-object-count
Add new metric - purefb_buckets_quota_space_bytes , purefb_buckets_object_count
2 parents 8ef1343 + 2c82be6 commit 643996e

11 files changed

+107
-91
lines changed

go.mod

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@ require (
1515
github.com/beorn7/perks v1.0.1 // indirect
1616
github.com/cespare/xxhash/v2 v2.2.0 // indirect
1717
github.com/kr/text v0.2.0 // indirect
18-
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect
19-
github.com/prometheus/common v0.45.0 // indirect
18+
github.com/prometheus/common v0.46.0 // indirect
2019
github.com/prometheus/procfs v0.12.0 // indirect
2120
golang.org/x/net v0.20.0 // indirect
2221
golang.org/x/sys v0.16.0 // indirect

go.sum

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,27 @@ github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj
66
github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
77
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
88
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
9+
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
10+
github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=
911
github.com/go-resty/resty/v2 v2.11.0 h1:i7jMfNOJYMp69lq7qozJP+bjgzfAzeOhuGlyDrqxT/8=
1012
github.com/go-resty/resty/v2 v2.11.0/go.mod h1:iiP/OpA0CkcL3IGt1O0+/SIItFUbkkyw5BGXiVdTu+A=
1113
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
1214
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
15+
github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
16+
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
17+
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
1318
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
1419
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
1520
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
16-
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg=
17-
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k=
21+
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
22+
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
23+
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
1824
github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk=
1925
github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA=
2026
github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw=
2127
github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI=
22-
github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM=
23-
github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY=
28+
github.com/prometheus/common v0.46.0 h1:doXzt5ybi1HBKpsZOL0sSkaNHJJqkyfEWZGGqqScV0Y=
29+
github.com/prometheus/common v0.46.0/go.mod h1:Tp0qkxpb9Jsg54QMe+EAmqXkSV7Evdy1BTn+g2pa/hQ=
2430
github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
2531
github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
2632
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
@@ -69,9 +75,11 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn
6975
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
7076
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
7177
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
78+
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
7279
google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I=
7380
google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
7481
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
7582
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
83+
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
7684
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
7785
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

internal/openmetrics-exporter/arrays_space_collector.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,31 +31,31 @@ func (c *ArraySpaceCollector) Collect(ch chan<- prometheus.Metric) {
3131
ch <- prometheus.MustNewConstMetric(
3232
c.ReductionDesc,
3333
prometheus.GaugeValue,
34-
as.Space.DataReduction,
34+
float64(as.Space.DataReduction),
3535
t,
3636
)
3737
ch <- prometheus.MustNewConstMetric(
3838
c.SpaceDesc,
3939
prometheus.GaugeValue,
40-
as.Space.Snapshots,
40+
float64(as.Space.Snapshots),
4141
t, "snapshots",
4242
)
4343
ch <- prometheus.MustNewConstMetric(
4444
c.SpaceDesc,
4545
prometheus.GaugeValue,
46-
as.Space.TotalPhysical,
46+
float64(as.Space.TotalPhysical),
4747
t, "total_physical",
4848
)
4949
ch <- prometheus.MustNewConstMetric(
5050
c.SpaceDesc,
5151
prometheus.GaugeValue,
52-
as.Space.Unique,
52+
float64(as.Space.Unique),
5353
t, "unique",
5454
)
5555
ch <- prometheus.MustNewConstMetric(
5656
c.SpaceDesc,
5757
prometheus.GaugeValue,
58-
as.Space.Virtual,
58+
float64(as.Space.Virtual),
5959
t, "virtual",
6060
)
6161
ch <- prometheus.MustNewConstMetric(
@@ -67,21 +67,21 @@ func (c *ArraySpaceCollector) Collect(ch chan<- prometheus.Metric) {
6767
ch <- prometheus.MustNewConstMetric(
6868
c.SpaceDesc,
6969
prometheus.GaugeValue,
70-
as.Capacity,
70+
float64(as.Capacity),
7171
t, "capacity",
7272
)
7373

7474
if t == "array" {
7575
ch <- prometheus.MustNewConstMetric(
7676
c.SpaceDesc,
7777
prometheus.GaugeValue,
78-
as.Capacity-as.Space.TotalPhysical,
78+
float64(as.Capacity-as.Space.TotalPhysical),
7979
t, "empty",
8080
)
8181
ch <- prometheus.MustNewConstMetric(
8282
c.UtilizationDesc,
8383
prometheus.GaugeValue,
84-
as.Space.TotalPhysical/as.Capacity*100,
84+
float64(as.Space.TotalPhysical)/float64(as.Capacity)*100,
8585
t,
8686
)
8787
}

internal/openmetrics-exporter/buckets_space_collector.go

Lines changed: 38 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
11
package collectors
22

33
import (
4+
"strconv"
5+
6+
client "purestorage/fb-openmetrics-exporter/internal/rest-client"
7+
48
"github.com/prometheus/client_golang/prometheus"
5-
"purestorage/fb-openmetrics-exporter/internal/rest-client"
69
)
710

811
type BucketsSpaceCollector struct {
9-
ReductionDesc *prometheus.Desc
10-
SpaceDesc *prometheus.Desc
11-
Buckets *client.BucketsList
12+
ReductionDesc *prometheus.Desc
13+
SpaceDesc *prometheus.Desc
14+
BucketQuotaDesc *prometheus.Desc
15+
BucketObjectCountDesc *prometheus.Desc
16+
Buckets *client.BucketsList
1217
}
1318

1419
func (c *BucketsSpaceCollector) Describe(ch chan<- *prometheus.Desc) {
@@ -23,31 +28,31 @@ func (c *BucketsSpaceCollector) Collect(ch chan<- prometheus.Metric) {
2328
ch <- prometheus.MustNewConstMetric(
2429
c.ReductionDesc,
2530
prometheus.GaugeValue,
26-
bucket.Space.DataReduction,
31+
float64(bucket.Space.DataReduction),
2732
bucket.Name,
2833
)
2934
ch <- prometheus.MustNewConstMetric(
3035
c.SpaceDesc,
3136
prometheus.GaugeValue,
32-
bucket.Space.Snapshots,
37+
float64(bucket.Space.Snapshots),
3338
bucket.Name, "snapshots",
3439
)
3540
ch <- prometheus.MustNewConstMetric(
3641
c.SpaceDesc,
3742
prometheus.GaugeValue,
38-
bucket.Space.TotalPhysical,
43+
float64(bucket.Space.TotalPhysical),
3944
bucket.Name, "total_physical",
4045
)
4146
ch <- prometheus.MustNewConstMetric(
4247
c.SpaceDesc,
4348
prometheus.GaugeValue,
44-
bucket.Space.Unique,
49+
float64(bucket.Space.Unique),
4550
bucket.Name, "unique",
4651
)
4752
ch <- prometheus.MustNewConstMetric(
4853
c.SpaceDesc,
4954
prometheus.GaugeValue,
50-
bucket.Space.Virtual,
55+
float64(bucket.Space.Virtual),
5156
bucket.Name, "virtual",
5257
)
5358
ch <- prometheus.MustNewConstMetric(
@@ -56,6 +61,18 @@ func (c *BucketsSpaceCollector) Collect(ch chan<- prometheus.Metric) {
5661
float64(bucket.ObjectCount),
5762
bucket.Name, "object_count",
5863
)
64+
ch <- prometheus.MustNewConstMetric(
65+
c.BucketObjectCountDesc,
66+
prometheus.GaugeValue,
67+
float64(bucket.ObjectCount),
68+
bucket.Name,
69+
)
70+
ch <- prometheus.MustNewConstMetric(
71+
c.BucketQuotaDesc,
72+
prometheus.GaugeValue,
73+
float64(bucket.QuotaLimit),
74+
bucket.Name, strconv.FormatBool(bucket.HardLimitEnabled),
75+
)
5976
}
6077
}
6178

@@ -73,6 +90,18 @@ func NewBucketsSpaceCollector(bl *client.BucketsList) *BucketsSpaceCollector {
7390
[]string{"name", "space"},
7491
prometheus.Labels{},
7592
),
93+
BucketQuotaDesc: prometheus.NewDesc(
94+
"purefb_buckets_quota_space_bytes",
95+
"FlashBlade buckets quota space in bytes",
96+
[]string{"name", "hard_limit_enabled"},
97+
prometheus.Labels{},
98+
),
99+
BucketObjectCountDesc: prometheus.NewDesc(
100+
"purefb_buckets_object_count",
101+
"FlashBlade buckets object count",
102+
[]string{"name"},
103+
prometheus.Labels{},
104+
),
76105
Buckets: bl,
77106
}
78107
}

internal/openmetrics-exporter/common_tests.go

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package collectors
22

33
import (
44
"testing"
5-
"fmt"
65

76
"github.com/google/go-cmp/cmp"
87
"github.com/prometheus/client_golang/prometheus"
@@ -25,24 +24,3 @@ func metricsCheck(t *testing.T, c prometheus.Collector, want map[string]bool) {
2524
t.Errorf("Mismatch (-want +got):\n%s", diff)
2625
}
2726
}
28-
29-
func metricsCheckP(t *testing.T, c prometheus.Collector, want map[string]bool) {
30-
chM := make(chan prometheus.Metric)
31-
go func() {
32-
c.Collect(chM)
33-
close(chM)
34-
}()
35-
var buff io_prometheus_client.Metric
36-
metrics := make(map[string]bool)
37-
for m := range chM {
38-
m.Write(&buff)
39-
metrics[buff.String()] = true
40-
}
41-
for a := range metrics {
42-
fmt.Println(a)
43-
}
44-
fmt.Println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++")
45-
for a := range want {
46-
fmt.Println(a)
47-
}
48-
}

internal/openmetrics-exporter/file_systems_space_collector.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package collectors
22

33
import (
4-
"github.com/prometheus/client_golang/prometheus"
5-
"purestorage/fb-openmetrics-exporter/internal/rest-client"
4+
client "purestorage/fb-openmetrics-exporter/internal/rest-client"
65
"strings"
6+
7+
"github.com/prometheus/client_golang/prometheus"
78
)
89

910
type FileSystemsSpaceCollector struct {
@@ -44,7 +45,7 @@ func (c *FileSystemsSpaceCollector) Collect(ch chan<- prometheus.Metric) {
4445
ch <- prometheus.MustNewConstMetric(
4546
c.ReductionDesc,
4647
prometheus.GaugeValue,
47-
fs.Space.DataReduction,
48+
float64(fs.Space.DataReduction),
4849
fs.Name, nfs, smb,
4950
)
5051
ch <- prometheus.MustNewConstMetric(
@@ -56,25 +57,25 @@ func (c *FileSystemsSpaceCollector) Collect(ch chan<- prometheus.Metric) {
5657
ch <- prometheus.MustNewConstMetric(
5758
c.SpaceDesc,
5859
prometheus.GaugeValue,
59-
fs.Space.Snapshots,
60+
float64(fs.Space.Snapshots),
6061
fs.Name, nfs, smb, "snapshots",
6162
)
6263
ch <- prometheus.MustNewConstMetric(
6364
c.SpaceDesc,
6465
prometheus.GaugeValue,
65-
fs.Space.TotalPhysical,
66+
float64(fs.Space.TotalPhysical),
6667
fs.Name, nfs, smb, "total_physical",
6768
)
6869
ch <- prometheus.MustNewConstMetric(
6970
c.SpaceDesc,
7071
prometheus.GaugeValue,
71-
fs.Space.Unique,
72+
float64(fs.Space.Unique),
7273
fs.Name, nfs, smb, "unique",
7374
)
7475
ch <- prometheus.MustNewConstMetric(
7576
c.SpaceDesc,
7677
prometheus.GaugeValue,
77-
fs.Space.Virtual,
78+
float64(fs.Space.Virtual),
7879
fs.Name, nfs, smb, "virtual",
7980
)
8081
}

internal/openmetrics-exporter/hardware_connectors_perf_collector.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
package collectors
22

33
import (
4+
client "purestorage/fb-openmetrics-exporter/internal/rest-client"
5+
46
"github.com/prometheus/client_golang/prometheus"
5-
"purestorage/fb-openmetrics-exporter/internal/rest-client"
67
)
78

89
type HwConnectorsPerfCollector struct {
@@ -98,7 +99,7 @@ func NewHwConnectorsPerfCollector(fb *client.FBClient) *HwConnectorsPerfCollecto
9899
prometheus.Labels{},
99100
),
100101
ErrorsDesc: prometheus.NewDesc(
101-
"purefb_shardware_connectors_performance_errors",
102+
"purefb_hardware_connectors_performance_errors",
102103
"FlashBlade hardware connectors performance errors per sec",
103104
[]string{"name", "dimension"},
104105
prometheus.Labels{},

internal/rest-client/arrays_space.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@ package client
33
type ArraySpace struct {
44
Name string `json:"name"`
55
Id string `json:"id"`
6-
Capacity float64 `json:"capacity"`
6+
Capacity int64 `json:"capacity"`
77
Parity float64 `json:"parity"`
88
Space Space `json:"space"`
9-
Time int `json:"time"`
9+
Time int64 `json:"time"`
1010
}
1111

1212
type ArraysSpaceList struct {
1313
CntToken string `json:"continuation_token"`
14-
TotalItemCnt int `json:"total_item_count"`
14+
TotalItemCnt int32 `json:"total_item_count"`
1515
Items []ArraySpace `json:"items"`
1616
}
1717

0 commit comments

Comments
 (0)