Skip to content

Commit 0ccc190

Browse files
authored
fix!: use _total suffix for counters (#10)
1 parent 6f69bde commit 0ccc190

File tree

9 files changed

+55
-55
lines changed

9 files changed

+55
-55
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,9 @@ The exporter can be configured by either command line flags (`saml-exporter -h`)
6565
| Name | Description | Type | Labels |
6666
|--------------------------|------------------------------------------|---------|-----------|
6767
| `saml_exporter_build_info` | Build info SAML exporter | `Gauge` | `"branch", "goversion", "revision", "revision"` |
68-
| `http_client_request` | HTTP client request | `Counter` | `"host", "code", "method"` |
69-
| `saml_metadata_errors` | Errors encountered while parsing SAML metadata | `Counter` | `"url"` |
70-
| `saml_x509_read_errors` | Errors encountered while parsing SAML X509 certificates | `Counter` | `"entityid", "use"` |
68+
| `http_client_request_total` | HTTP client request | `Counter` | `"host", "code", "method"` |
69+
| `saml_metadata_error_total` | Errors encountered while parsing SAML metadata | `Counter` | `"url"` |
70+
| `saml_x509_read_error_total` | Errors encountered while parsing SAML X509 certificates | `Counter` | `"entityid", "use"` |
7171
| `saml_x509_cert_not_after` | SAML X509 certificate expiration date | `Gauge` | `"entityid", "use", "serial_number", "issuer_C", "issuer_CN", "issuer_L", "issuer_O", "issuer_ST", "subject_C", "subject_CN", "subject_L", "subject_O"` |
7272
| `saml_x509_cert_not_before` | SAML X509 certificate not valid before | `Gauge` | `"entityid", "use", "serial_number", "issuer_C", "issuer_CN", "issuer_L", "issuer_O", "issuer_ST", "subject_C", "subject_CN", "subject_L", "subject_O"` |
7373

chart/saml-exporter/dashboard.json

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@
302302
"uid": "${DS_PROMETHEUS}"
303303
},
304304
"editorMode": "code",
305-
"expr": "count(sum(rate(http_client_request{code!~\"^2.*\", job=~\".*/saml-exporter\"}[$__rate_interval])) by (host)) or vector(0)",
305+
"expr": "count(sum(rate(http_client_request_total{code!~\"^2.*\", job=~\".*/saml-exporter\"}[$__rate_interval])) by (host)) or vector(0)",
306306
"interval": "",
307307
"legendFormat": "",
308308
"queryType": "randomWalk",
@@ -568,7 +568,7 @@
568568
"uid": "${DS_PROMETHEUS}"
569569
},
570570
"editorMode": "code",
571-
"expr": "(sum(saml_x509_read_errors) or vector(0)) + (sum(saml_metadata_errors) or vector(0))",
571+
"expr": "(sum(saml_x509_read_error_total) or vector(0)) + (sum(saml_metadata_error_total) or vector(0))",
572572
"instant": false,
573573
"interval": "",
574574
"legendFormat": "",
@@ -1209,7 +1209,7 @@
12091209
"uid": "RVra6BSnk"
12101210
},
12111211
"editorMode": "code",
1212-
"expr": "sum(rate(http_client_request{job=~\".*/saml-exporter\"}[$__rate_interval])) by (code, host)",
1212+
"expr": "sum(rate(http_client_request_total{job=~\".*/saml-exporter\"}[$__rate_interval])) by (code, host)",
12131213
"legendFormat": "{{host}}: {{code}}",
12141214
"range": true,
12151215
"refId": "A"
@@ -1295,7 +1295,7 @@
12951295
"uid": "${DS_PROMETHEUS}"
12961296
},
12971297
"editorMode": "code",
1298-
"expr": "sum((saml_x509_read_errors or vector(0)) > bool 0)",
1298+
"expr": "sum((saml_x509_read_error_total or vector(0)) > bool 0)",
12991299
"interval": "",
13001300
"legendFormat": "Certificate parsing errors",
13011301
"queryType": "randomWalk",
@@ -1308,7 +1308,7 @@
13081308
"uid": "${DS_PROMETHEUS}"
13091309
},
13101310
"editorMode": "code",
1311-
"expr": "sum((saml_metadata_errors or vector(0)) > bool 0)",
1311+
"expr": "sum((saml_metadata_error_total or vector(0)) > bool 0)",
13121312
"hide": false,
13131313
"legendFormat": "Metadata parsing errors",
13141314
"range": true,
@@ -1400,7 +1400,7 @@
14001400
"uid": "${DS_PROMETHEUS}"
14011401
},
14021402
"editorMode": "code",
1403-
"expr": "sum(saml_x509_read_errors) or vector(0)",
1403+
"expr": "sum(saml_x509_read_error_total) or vector(0)",
14041404
"interval": "",
14051405
"legendFormat": "Certificate parsing errors",
14061406
"queryType": "randomWalk",
@@ -1413,7 +1413,7 @@
14131413
"uid": "${DS_PROMETHEUS}"
14141414
},
14151415
"editorMode": "code",
1416-
"expr": "sum(saml_metadata_errors) or vector(0)",
1416+
"expr": "sum(saml_metadata_error_total) or vector(0)",
14171417
"hide": false,
14181418
"legendFormat": "Metadata parsing errors",
14191419
"range": true,
@@ -1506,7 +1506,7 @@
15061506
"uid": "${DS_PROMETHEUS}"
15071507
},
15081508
"editorMode": "code",
1509-
"expr": "sum(rate(saml_x509_read_errors[$__rate_interval])) or vector(0)",
1509+
"expr": "sum(rate(saml_x509_read_error_total[$__rate_interval])) or vector(0)",
15101510
"interval": "",
15111511
"legendFormat": "Certificate parsing errors",
15121512
"queryType": "randomWalk",
@@ -1519,7 +1519,7 @@
15191519
"uid": "${DS_PROMETHEUS}"
15201520
},
15211521
"editorMode": "code",
1522-
"expr": "sum(rate(saml_metadata_errors[$__rate_interval])) or vector(0)",
1522+
"expr": "sum(rate(saml_metadata_error_total[$__rate_interval])) or vector(0)",
15231523
"hide": false,
15241524
"legendFormat": "Metadata parsing errors",
15251525
"range": true,
@@ -1632,7 +1632,7 @@
16321632
"uid": "${DS_PROMETHEUS}"
16331633
},
16341634
"editorMode": "code",
1635-
"expr": "topk(10, saml_x509_read_errors)",
1635+
"expr": "topk(10, saml_x509_read_error_total)",
16361636
"format": "table",
16371637
"instant": true,
16381638
"interval": "",
@@ -1646,7 +1646,7 @@
16461646
"uid": "${DS_PROMETHEUS}"
16471647
},
16481648
"editorMode": "code",
1649-
"expr": "topk(10, saml_metadata_errors)",
1649+
"expr": "topk(10, saml_metadata_error_total)",
16501650
"hide": false,
16511651
"legendFormat": "__auto",
16521652
"range": true,
@@ -1751,7 +1751,7 @@
17511751
"uid": "${DS_PROMETHEUS}"
17521752
},
17531753
"editorMode": "code",
1754-
"expr": "topk(10, rate(saml_x509_read_errors[6h]))",
1754+
"expr": "topk(10, rate(saml_x509_read_error_total[6h]))",
17551755
"format": "table",
17561756
"instant": true,
17571757
"interval": "",
@@ -1765,7 +1765,7 @@
17651765
"uid": "${DS_PROMETHEUS}"
17661766
},
17671767
"editorMode": "code",
1768-
"expr": "topk(10, rate(saml_metadata_errors[6h]))",
1768+
"expr": "topk(10, rate(saml_metadata_error_total[6h]))",
17691769
"hide": false,
17701770
"legendFormat": "__auto",
17711771
"range": true,

chart/saml-exporter/templates/prometheusrule.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ spec:
3232
rules:
3333
{{- if .Values.prometheusRule.alertOnReadErrors }}
3434
- alert: '{{ printf "%s%s" $rulePrefix "X509CertificateReadErrors" | trim }}'
35-
expr: delta(saml_x509_read_errors[15m]) > 0
35+
expr: delta(saml_x509_read_error_total[15m]) > 0
3636
for: 5m
3737
labels:
3838
severity: {{ .Values.prometheusRule.readErrorsSeverity }}
@@ -48,7 +48,7 @@ spec:
4848
{{- end }}
4949
{{- if .Values.prometheusRule.alertOnMetadataErrors }}
5050
- alert: '{{ printf "%s%s" $rulePrefix "MetadataError" | trim }}'
51-
expr: delta(saml_metadata_errors[15m]) > 0
51+
expr: delta(saml_metadata_error_total[15m]) > 0
5252
for: 5m
5353
labels:
5454
severity: {{ .Values.prometheusRule.metadataErrorsSeverity }}
@@ -91,7 +91,7 @@ spec:
9191
{{- toYaml .Values.prometheusRule.alertExtraAnnotations | nindent 8 }}
9292
{{- end }}
9393
- alert: '{{ printf "%s%s" $rulePrefix "UnavailableMetadataEndpoint" | trim }}'
94-
expr: sum(rate(http_client_request{job="{{ .Values.podMonitor.namespace | default .Values.serviceMonitor.namespace | default .Release.Namespace}}/{{ include "saml-exporter.fullname" . }}", code!~"^2.*"}[5m])) > 0
94+
expr: sum(rate(http_client_request_total{job="{{ .Values.podMonitor.namespace | default .Values.serviceMonitor.namespace | default .Release.Namespace}}/{{ include "saml-exporter.fullname" . }}", code!~"^2.*"}[5m])) by (host) > 0
9595
for: 3m
9696
labels:
9797
severity: {{ .Values.prometheusRule.unavailableMetadataEndpointSeverity }}

grafana/dashboard.json

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@
302302
"uid": "${DS_PROMETHEUS}"
303303
},
304304
"editorMode": "code",
305-
"expr": "count(sum(rate(http_client_request{code!~\"^2.*\", job=~\".*/saml-exporter\"}[$__rate_interval])) by (host)) or vector(0)",
305+
"expr": "count(sum(rate(http_client_request_total{code!~\"^2.*\", job=~\".*/saml-exporter\"}[$__rate_interval])) by (host)) or vector(0)",
306306
"interval": "",
307307
"legendFormat": "",
308308
"queryType": "randomWalk",
@@ -568,7 +568,7 @@
568568
"uid": "${DS_PROMETHEUS}"
569569
},
570570
"editorMode": "code",
571-
"expr": "(sum(saml_x509_read_errors) or vector(0)) + (sum(saml_metadata_errors) or vector(0))",
571+
"expr": "(sum(saml_x509_read_error_total) or vector(0)) + (sum(saml_metadata_error_total) or vector(0))",
572572
"instant": false,
573573
"interval": "",
574574
"legendFormat": "",
@@ -1209,7 +1209,7 @@
12091209
"uid": "RVra6BSnk"
12101210
},
12111211
"editorMode": "code",
1212-
"expr": "sum(rate(http_client_request{job=~\".*/saml-exporter\"}[$__rate_interval])) by (code, host)",
1212+
"expr": "sum(rate(http_client_request_total{job=~\".*/saml-exporter\"}[$__rate_interval])) by (code, host)",
12131213
"legendFormat": "{{host}}: {{code}}",
12141214
"range": true,
12151215
"refId": "A"
@@ -1295,7 +1295,7 @@
12951295
"uid": "${DS_PROMETHEUS}"
12961296
},
12971297
"editorMode": "code",
1298-
"expr": "sum((saml_x509_read_errors or vector(0)) > bool 0)",
1298+
"expr": "sum((saml_x509_read_error_total or vector(0)) > bool 0)",
12991299
"interval": "",
13001300
"legendFormat": "Certificate parsing errors",
13011301
"queryType": "randomWalk",
@@ -1308,7 +1308,7 @@
13081308
"uid": "${DS_PROMETHEUS}"
13091309
},
13101310
"editorMode": "code",
1311-
"expr": "sum((saml_metadata_errors or vector(0)) > bool 0)",
1311+
"expr": "sum((saml_metadata_error_total or vector(0)) > bool 0)",
13121312
"hide": false,
13131313
"legendFormat": "Metadata parsing errors",
13141314
"range": true,
@@ -1400,7 +1400,7 @@
14001400
"uid": "${DS_PROMETHEUS}"
14011401
},
14021402
"editorMode": "code",
1403-
"expr": "sum(saml_x509_read_errors) or vector(0)",
1403+
"expr": "sum(saml_x509_read_error_total) or vector(0)",
14041404
"interval": "",
14051405
"legendFormat": "Certificate parsing errors",
14061406
"queryType": "randomWalk",
@@ -1413,7 +1413,7 @@
14131413
"uid": "${DS_PROMETHEUS}"
14141414
},
14151415
"editorMode": "code",
1416-
"expr": "sum(saml_metadata_errors) or vector(0)",
1416+
"expr": "sum(saml_metadata_error_total) or vector(0)",
14171417
"hide": false,
14181418
"legendFormat": "Metadata parsing errors",
14191419
"range": true,
@@ -1506,7 +1506,7 @@
15061506
"uid": "${DS_PROMETHEUS}"
15071507
},
15081508
"editorMode": "code",
1509-
"expr": "sum(rate(saml_x509_read_errors[$__rate_interval])) or vector(0)",
1509+
"expr": "sum(rate(saml_x509_read_error_total[$__rate_interval])) or vector(0)",
15101510
"interval": "",
15111511
"legendFormat": "Certificate parsing errors",
15121512
"queryType": "randomWalk",
@@ -1519,7 +1519,7 @@
15191519
"uid": "${DS_PROMETHEUS}"
15201520
},
15211521
"editorMode": "code",
1522-
"expr": "sum(rate(saml_metadata_errors[$__rate_interval])) or vector(0)",
1522+
"expr": "sum(rate(saml_metadata_error_total[$__rate_interval])) or vector(0)",
15231523
"hide": false,
15241524
"legendFormat": "Metadata parsing errors",
15251525
"range": true,
@@ -1632,7 +1632,7 @@
16321632
"uid": "${DS_PROMETHEUS}"
16331633
},
16341634
"editorMode": "code",
1635-
"expr": "topk(10, saml_x509_read_errors)",
1635+
"expr": "topk(10, saml_x509_read_error_total)",
16361636
"format": "table",
16371637
"instant": true,
16381638
"interval": "",
@@ -1646,7 +1646,7 @@
16461646
"uid": "${DS_PROMETHEUS}"
16471647
},
16481648
"editorMode": "code",
1649-
"expr": "topk(10, saml_metadata_errors)",
1649+
"expr": "topk(10, saml_metadata_error_total)",
16501650
"hide": false,
16511651
"legendFormat": "__auto",
16521652
"range": true,
@@ -1751,7 +1751,7 @@
17511751
"uid": "${DS_PROMETHEUS}"
17521752
},
17531753
"editorMode": "code",
1754-
"expr": "topk(10, rate(saml_x509_read_errors[6h]))",
1754+
"expr": "topk(10, rate(saml_x509_read_error_total[6h]))",
17551755
"format": "table",
17561756
"instant": true,
17571757
"interval": "",
@@ -1765,7 +1765,7 @@
17651765
"uid": "${DS_PROMETHEUS}"
17661766
},
17671767
"editorMode": "code",
1768-
"expr": "topk(10, rate(saml_metadata_errors[6h]))",
1768+
"expr": "topk(10, rate(saml_metadata_error_total[6h]))",
17691769
"hide": false,
17701770
"legendFormat": "__auto",
17711771
"range": true,

integration_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ func TestMain(t *testing.T) {
3535
name: "integration test using kristophjunge/test-saml-idp",
3636
image: "kristophjunge/test-saml-idp:latest",
3737
expectedMetrics: map[string]int{
38-
"http_client_request": 1,
39-
"saml_x509_cert_not_after": 2,
38+
"http_client_request_total": 1,
39+
"saml_x509_cert_not_after": 2,
4040
},
4141
},
4242
}

internal/collector/collector_test.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -221,9 +221,9 @@ func TestInitializeMetrics(t *testing.T) {
221221
# TYPE saml_x509_cert_not_before gauge
222222
saml_x509_cert_not_before{entityid="example-entity-id",issuer_C="US",issuer_CN="Certificate Manager",issuer_L="Santa Clara",issuer_O="Sun Microsystems Inc.",issuer_ST="",serial_number="1679",subject_C="",subject_CN="loadbalancer-9.siroe.com",subject_L="",subject_O="",use="encryption"} 1.162943777e+09
223223
224-
# HELP saml_x509_read_errors Errors encountered while parsing SAML X509 certificates
225-
# TYPE saml_x509_read_errors counter
226-
saml_x509_read_errors{entityid="example-entity-id",use="signing"} 1
224+
# HELP saml_x509_read_error_total Errors encountered while parsing SAML X509 certificates
225+
# TYPE saml_x509_read_error_total counter
226+
saml_x509_read_error_total{entityid="example-entity-id",use="signing"} 1
227227
`,
228228
},
229229
{
@@ -250,9 +250,9 @@ func TestInitializeMetrics(t *testing.T) {
250250
</EntityDescriptor>`)),
251251
}, nil),
252252
expected: `
253-
# HELP saml_x509_read_errors Errors encountered while parsing SAML X509 certificates
254-
# TYPE saml_x509_read_errors counter
255-
saml_x509_read_errors{entityid="example-entity-id",use="signing"} 1
253+
# HELP saml_x509_read_error_total Errors encountered while parsing SAML X509 certificates
254+
# TYPE saml_x509_read_error_total counter
255+
saml_x509_read_error_total{entityid="example-entity-id",use="signing"} 1
256256
`,
257257
},
258258
{
@@ -262,9 +262,9 @@ func TestInitializeMetrics(t *testing.T) {
262262
Body: io.NopCloser(strings.NewReader(`Invalid XML`)),
263263
}, nil),
264264
expected: `
265-
# HELP saml_metadata_errors Errors encountered while parsing SAML metadata
266-
# TYPE saml_metadata_errors counter
267-
saml_metadata_errors{url="//saml-metadata"} 1
265+
# HELP saml_metadata_error_total Errors encountered while parsing SAML metadata
266+
# TYPE saml_metadata_error_total counter
267+
saml_metadata_error_total{url="//saml-metadata"} 1
268268
`,
269269
},
270270
{
@@ -274,9 +274,9 @@ func TestInitializeMetrics(t *testing.T) {
274274
Body: io.NopCloser(iotest.ErrReader(errors.New("random error"))),
275275
}, nil),
276276
expected: `
277-
# HELP saml_metadata_errors Errors encountered while parsing SAML metadata
278-
# TYPE saml_metadata_errors counter
279-
saml_metadata_errors{url="//saml-metadata"} 1
277+
# HELP saml_metadata_error_total Errors encountered while parsing SAML metadata
278+
# TYPE saml_metadata_error_total counter
279+
saml_metadata_error_total{url="//saml-metadata"} 1
280280
`,
281281
},
282282
{

internal/collector/metrics.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ var (
1414
}, []string{"entityid", "use", "serial_number", "issuer_C", "issuer_CN", "issuer_L", "issuer_O", "issuer_ST", "subject_C", "subject_CN", "subject_L", "subject_O"})
1515

1616
certParse = prometheus.NewCounterVec(prometheus.CounterOpts{
17-
Name: "saml_x509_read_errors",
17+
Name: "saml_x509_read_error_total",
1818
Help: "Errors encountered while parsing SAML X509 certificates",
1919
}, []string{"entityid", "use"})
2020

2121
metadataParse = prometheus.NewCounterVec(prometheus.CounterOpts{
22-
Name: "saml_metadata_errors",
22+
Name: "saml_metadata_error_total",
2323
Help: "Errors encountered while parsing SAML metadata",
2424
}, []string{"url"})
2525
)

internal/transport/metrics.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99

1010
var (
1111
requestResponse = prometheus.NewCounterVec(prometheus.CounterOpts{
12-
Name: "http_client_request",
12+
Name: "http_client_request_total",
1313
Help: "HTTP client request",
1414
}, []string{"host", "code", "method"})
1515
)

internal/transport/metrics_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ func TestMetrics(t *testing.T) {
3131
reg := prometheus.NewRegistry()
3232
reg.MustRegister(metrics)
3333
assert.NoError(t, testutil.GatherAndCompare(reg, strings.NewReader(`
34-
# HELP http_client_request HTTP client request
35-
# TYPE http_client_request counter
36-
http_client_request{code="200",host="",method="GET"} 1
34+
# HELP http_client_request_total HTTP client request
35+
# TYPE http_client_request_total counter
36+
http_client_request_total{code="200",host="",method="GET"} 1
3737
`)))
3838

3939
requestResponse.Reset()
@@ -52,8 +52,8 @@ func TestMetrics(t *testing.T) {
5252
reg = prometheus.NewRegistry()
5353
reg.MustRegister(metrics)
5454
assert.NoError(t, testutil.GatherAndCompare(reg, strings.NewReader(`
55-
# HELP http_client_request HTTP client request
56-
# TYPE http_client_request counter
57-
http_client_request{code="0",host="",method="POST"} 1
55+
# HELP http_client_request_total HTTP client request
56+
# TYPE http_client_request_total counter
57+
http_client_request_total{code="0",host="",method="POST"} 1
5858
`)))
5959
}

0 commit comments

Comments
 (0)