cloudflare/pint

Public

mirrored from https://github.com/cloudflare/pintAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
v0.13.0

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

internal/promapi/metrics.go

46lines · modecode

1package promapi
2
3import (
4 "errors"
5 "fmt"
6 "net"
7
8 v1 "github.com/prometheus/client_golang/api/prometheus/v1"
9 "github.com/prometheus/client_golang/prometheus"
10)
11
12var (
13 prometheusQueriesTotal = prometheus.NewCounterVec(
14 prometheus.CounterOpts{
15 Name: "pint_prometheus_queries_total",
16 Help: "Total number of all prometheus queries",
17 },
18 []string{"name", "endpoint"},
19 )
20 prometheusQueryErrorsTotal = prometheus.NewCounterVec(
21 prometheus.CounterOpts{
22 Name: "pint_prometheus_query_errors_total",
23 Help: "Total number of failed prometheus queries",
24 },
25 []string{"name", "endpoint", "reason"},
26 )
27)
28
29func RegisterMetrics() {
30 prometheus.MustRegister(prometheusQueriesTotal)
31 prometheus.MustRegister(prometheusQueryErrorsTotal)
32}
33
34func errReason(err error) string {
35 var neterr net.Error
36 if ok := errors.As(err, &neterr); ok && neterr.Timeout() {
37 return "connection/timeout"
38 }
39
40 var v1err *v1.Error
41 if ok := errors.As(err, &v1err); ok {
42 return fmt.Sprintf("api/%s", v1err.Type)
43 }
44
45 return "connection/error"
46}
47