github.com/xmidt-org/webpa-common@v1.11.9/secure/metrics.go (about) 1 package secure 2 3 import ( 4 "github.com/go-kit/kit/metrics" 5 gokitprometheus "github.com/go-kit/kit/metrics/prometheus" 6 "github.com/xmidt-org/webpa-common/xmetrics" 7 ) 8 9 //Names for our metrics 10 const ( 11 JWTValidationReasonCounter = "jwt_validation_reason" 12 NBFHistogram = "jwt_from_nbf_seconds" 13 EXPHistogram = "jwt_from_exp_seconds" 14 ) 15 16 //Metrics returns the Metrics relevant to this package 17 func Metrics() []xmetrics.Metric { 18 return []xmetrics.Metric{ 19 xmetrics.Metric{ 20 Name: JWTValidationReasonCounter, 21 Type: xmetrics.CounterType, 22 Help: "Counter for validation resolutions per reason", 23 LabelNames: []string{"reason"}, 24 }, 25 xmetrics.Metric{ 26 Name: NBFHistogram, 27 Type: xmetrics.HistogramType, 28 Help: "Difference (in seconds) between time of JWT validation and nbf (including leeway)", 29 Buckets: []float64{-61, -11, -2, -1, 0, 9, 60}, // defines the upper inclusive (<=) bounds 30 }, 31 xmetrics.Metric{ 32 Name: EXPHistogram, 33 Type: xmetrics.HistogramType, 34 Help: "Difference (in seconds) between time of JWT validation and exp (including leeway)", 35 Buckets: []float64{-61, -11, -2, -1, 0, 9, 60}, 36 }, 37 } 38 } 39 40 //JWTValidationMeasures describes the defined metrics that will be used by clients 41 type JWTValidationMeasures struct { 42 NBFHistogram *gokitprometheus.Histogram 43 ExpHistogram *gokitprometheus.Histogram 44 ValidationReason metrics.Counter 45 } 46 47 //NewJWTValidationMeasures realizes desired metrics 48 func NewJWTValidationMeasures(r xmetrics.Registry) *JWTValidationMeasures { 49 return &JWTValidationMeasures{ 50 NBFHistogram: gokitprometheus.NewHistogram(r.NewHistogramVec(NBFHistogram)), 51 ExpHistogram: gokitprometheus.NewHistogram(r.NewHistogramVec(EXPHistogram)), 52 ValidationReason: r.NewCounter(JWTValidationReasonCounter), 53 } 54 }