Skip to content

Commit f7e3694

Browse files
authored
Merge pull request #109 from chrroberts-pure/alerts-optimize
[bug] allow for , in alert json strings that are collected
2 parents e181e19 + 1f01550 commit f7e3694

File tree

5 files changed

+71
-29
lines changed

5 files changed

+71
-29
lines changed

internal/openmetrics-exporter/alerts_collector.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ func (c *AlertsCollector) Collect(ch chan<- prometheus.Metric) {
2424
}
2525
al := make(map[string]float64)
2626
for _, alert := range alerts.Items {
27-
al[fmt.Sprintf("%s,%d,%s,%d,%s,%s,%s,%s",
27+
al[fmt.Sprintf("%s\n%d\n%s\n%d\n%s\n%s\n%s\n%s",
2828
alert.Category,
2929
alert.Code,
3030
alert.ComponentType,
@@ -36,7 +36,7 @@ func (c *AlertsCollector) Collect(ch chan<- prometheus.Metric) {
3636
)] += 1
3737
}
3838
for a, n := range al {
39-
alert := strings.Split(a, ",")
39+
alert := strings.Split(a, "\n")
4040
ch <- prometheus.MustNewConstMetric(
4141
c.AlertsDesc,
4242
prometheus.GaugeValue,
Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
package collectors
22

3-
43
import (
4+
"encoding/json"
55
"fmt"
6-
"testing"
7-
"regexp"
8-
"strings"
96
"net/http"
107
"net/http/httptest"
11-
"encoding/json"
128
"os"
9+
"regexp"
10+
"strings"
11+
"testing"
1312

14-
"purestorage/fa-openmetrics-exporter/internal/rest-client"
13+
client "purestorage/fa-openmetrics-exporter/internal/rest-client"
1514
)
1615

1716
func TestDriveCollector(t *testing.T) {
@@ -21,27 +20,27 @@ func TestDriveCollector(t *testing.T) {
2120
var drl client.DriveList
2221
json.Unmarshal(rdr, &drl)
2322
server := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
24-
url := regexp.MustCompile(`^/api/([0-9]+.[0-9]+)?/drive$`)
25-
if r.URL.Path == "/api/api_version" {
26-
w.Header().Set("Content-Type", "application/json")
27-
w.WriteHeader(http.StatusOK)
23+
url := regexp.MustCompile(`^/api/([0-9]+.[0-9]+)?/drive$`)
24+
if r.URL.Path == "/api/api_version" {
25+
w.Header().Set("Content-Type", "application/json")
26+
w.WriteHeader(http.StatusOK)
2827
w.Write([]byte(vers))
29-
} else if url.MatchString(r.URL.Path) {
28+
} else if url.MatchString(r.URL.Path) {
3029
w.Header().Set("x-auth-token", "faketoken")
3130
w.Header().Set("Content-Type", "application/json")
3231
w.WriteHeader(http.StatusOK)
3332
w.Write([]byte(rdr))
3433
}
35-
}))
36-
endp := strings.Split(server.URL, "/")
37-
e := endp[len(endp)-1]
34+
}))
35+
endp := strings.Split(server.URL, "/")
36+
e := endp[len(endp)-1]
3837
want := make(map[string]bool)
3938
for _, d := range drl.Items {
40-
want[fmt.Sprintf("label:{name:\"component_name\" value:\"%s\"} label:{name:\"component_status\" value:\"%s\"} label:{name:\"component_type\" value:\"%s\"} label:{name:\"component_type\" value:\"%s\"} gauge:{value:\"%s\"}", d.Name, d.Type, d.Status, d.Protocol, d.Capacity)] = true
41-
}
39+
want[fmt.Sprintf("label:{name:\"component_name\" value:\"%s\"} label:{name:\"component_status\" value:\"%s\"} label:{name:\"component_type\" value:\"%s\"} label:{name:\"component_type\" value:\"%s\"} gauge:{value:\"%g\"}", d.Name, d.Type, d.Status, d.Protocol, d.Capacity)] = true
4240
}
43-
c := client.NewRestClient(e, "fake-api-token", "latest", false)
41+
42+
c := client.NewRestClient(e, "fake-api-token", "latest", false)
4443
dc := NewDriveCollector(c)
45-
metricsCheck(t, dc, want)
46-
server.Close()
44+
metricsCheck(t, dc, want)
45+
server.Close()
4746
}

internal/rest-client/flasharray_client.go

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

33
import (
4-
// "log"
4+
// "log"
55
"crypto/tls"
66
"errors"
7+
78
"github.com/go-resty/resty/v2"
89
)
910

@@ -44,7 +45,7 @@ func NewRestClient(endpoint string, apitoken string, apiversion string, debug bo
4445
EndPoint: endpoint,
4546
ApiToken: apitoken,
4647
RestClient: resty.New(),
47-
XAuthToken: "",
48+
XAuthToken: "",
4849
}
4950
fa.RestClient.SetBaseURL("https://" + endpoint + "/api")
5051
fa.RestClient.SetTLSClientConfig(&tls.Config{InsecureSkipVerify: true})
@@ -55,10 +56,10 @@ func NewRestClient(endpoint string, apitoken string, apiversion string, debug bo
5556
if debug {
5657
fa.RestClient.SetDebug(true)
5758
}
58-
// fa.RestClient.OnRequestLog(func(rl *resty.RequestLog) error {
59-
// fmt.Fprintln(os.Stderr, rl)
60-
// return nil
61-
// })
59+
// fa.RestClient.OnRequestLog(func(rl *resty.RequestLog) error {
60+
// fmt.Fprintln(os.Stderr, rl)
61+
// return nil
62+
// })
6263

6364
result := new(ApiVersions)
6465
res, err := fa.RestClient.R().
@@ -69,11 +70,11 @@ func NewRestClient(endpoint string, apitoken string, apiversion string, debug bo
6970
return fa
7071
}
7172
if res.StatusCode() != 200 {
72-
fa.Error = errors.New("Not a valid FlashArray REST API server")
73+
fa.Error = errors.New("not a valid FlashArray REST API server")
7374
return fa
7475
}
7576
if len(result.Versions) == 0 {
76-
fa.Error = errors.New("Not a valid FlashArray REST API version")
77+
fa.Error = errors.New("not a valid FlashArray REST API version")
7778
return fa
7879
}
7980
if apiversion == "latest" {

test/data/alerts.json

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,27 @@
399399
"issue": "Directory service lookup failed.",
400400
"knowledge_base_url": "https://support.purestorage.com/?cid=Alert_0231",
401401
"summary": "(directory_service:Service: active_directory_domain_catalog_ldap, IpAddress: 172.31.50.19, Port: 389, Filter: (&(uidNumber=1000)(objectClass=user))): Directory service lookup failed."
402+
},
403+
{
404+
"description": "(directory_service:Service: active_directory_domain_catalog_ldap, IpAddress: 172.31.50.19, Port: 389, Filter: (&(uidNumber=1000)(objectClass=user))): Directory service lookup failed. Expected: , Actual: ",
405+
"created": 1678460265500,
406+
"state": "open",
407+
"component_type": "directory_service",
408+
"name": "10999254",
409+
"id": "1cb99f01d2754294a1d7eb3b6e61abdf",
410+
"code": 231,
411+
"category": "array",
412+
"severity": "info",
413+
"flagged": false,
414+
"updated": 1678460265500,
415+
"closed": null,
416+
"notified": null,
417+
"component_name": "Service: active_directory_domain_catalog_ldap, IpAddress: 172.31.50.19, Port: 389, Filter: (&(uidNumber=1000)(objectClass=user))",
418+
"expected": "",
419+
"actual": "",
420+
"issue": "Directory, service, lookup failed.",
421+
"knowledge_base_url": "https://support.purestorage.com/?cid=Alert_0231",
422+
"summary": "(directory_service:Service: active_directory_domain_catalog_ldap, IpAddress: 172.31.50.19, Port: 389, Filter: (&(uidNumber=1000)(objectClass=user))): Directory service lookup failed."
402423
}
403424
],
404425
"more_items_remaining": false,

test/data/alerts_open.json

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,27 @@
399399
"issue": "Directory service lookup failed.",
400400
"knowledge_base_url": "https://support.purestorage.com/?cid=Alert_0231",
401401
"summary": "(directory_service:Service: active_directory_domain_catalog_ldap, IpAddress: 172.31.50.19, Port: 389, Filter: (&(uidNumber=1000)(objectClass=user))): Directory service lookup failed."
402+
},
403+
{
404+
"description": "(directory_service:Service: active_directory_domain_catalog_ldap, IpAddress: 172.31.50.19, Port: 389, Filter: (&(uidNumber=1000)(objectClass=user))): Directory service lookup failed. Expected: , Actual: ",
405+
"created": 1678460265500,
406+
"state": "open",
407+
"component_type": "directory_service",
408+
"name": "10999254",
409+
"id": "1cb99f01d2754294a1d7eb3b6e61abdf",
410+
"code": 231,
411+
"category": "array",
412+
"severity": "info",
413+
"flagged": false,
414+
"updated": 1678460265500,
415+
"closed": null,
416+
"notified": null,
417+
"component_name": "Service: active_directory_domain_catalog_ldap, IpAddress: 172.31.50.19, Port: 389, Filter: (&(uidNumber=1000)(objectClass=user))",
418+
"expected": "",
419+
"actual": "",
420+
"issue": "Directory, service, lookup failed.",
421+
"knowledge_base_url": "https://support.purestorage.com/?cid=Alert_0231",
422+
"summary": "(directory_service:Service: active_directory_domain_catalog_ldap, IpAddress: 172.31.50.19, Port: 389, Filter: (&(uidNumber=1000)(objectClass=user))): Directory service lookup failed."
402423
}
403424
],
404425
"more_items_remaining": false,

0 commit comments

Comments
 (0)