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  }