github.com/xmidt-org/webpa-common@v1.11.9/device/metrics.go (about)

     1  package device
     2  
     3  import (
     4  	"github.com/go-kit/kit/metrics"
     5  	"github.com/go-kit/kit/metrics/provider"
     6  	"github.com/xmidt-org/webpa-common/xmetrics"
     7  )
     8  
     9  const (
    10  	DeviceCounter             = "device_count"
    11  	DuplicatesCounter         = "duplicate_count"
    12  	RequestResponseCounter    = "request_response_count"
    13  	PingCounter               = "ping_count"
    14  	PongCounter               = "pong_count"
    15  	ConnectCounter            = "connect_count"
    16  	DisconnectCounter         = "disconnect_count"
    17  	DeviceLimitReachedCounter = "device_limit_reached_count"
    18  	ModelGauge                = "hardware_model"
    19  	WRPSourceCheck            = "wrp_source_check"
    20  )
    21  
    22  // Metrics is the device module function that adds default device metrics
    23  func Metrics() []xmetrics.Metric {
    24  	return []xmetrics.Metric{
    25  		{
    26  			Name: DeviceCounter,
    27  			Type: "gauge",
    28  		},
    29  		{
    30  			Name: DuplicatesCounter,
    31  			Type: "counter",
    32  		},
    33  		{
    34  			Name: RequestResponseCounter,
    35  			Type: "counter",
    36  		},
    37  		{
    38  			Name: PingCounter,
    39  			Type: "counter",
    40  		},
    41  		{
    42  			Name: PongCounter,
    43  			Type: "counter",
    44  		},
    45  		{
    46  			Name: ConnectCounter,
    47  			Type: "counter",
    48  		},
    49  		{
    50  			Name: DisconnectCounter,
    51  			Type: "counter",
    52  		},
    53  		{
    54  			Name: DeviceLimitReachedCounter,
    55  			Type: "counter",
    56  		},
    57  		{
    58  			Name:       ModelGauge,
    59  			Type:       "gauge",
    60  			LabelNames: []string{"model", "partnerid", "firmware", "trust"},
    61  		},
    62  		{
    63  			Name:       WRPSourceCheck,
    64  			Type:       "counter",
    65  			LabelNames: []string{"outcome", "reason"},
    66  		},
    67  	}
    68  }
    69  
    70  // Measures is a convenient struct that holds all the device-related metric objects for runtime consumption.
    71  type Measures struct {
    72  	Device          xmetrics.Setter
    73  	LimitReached    xmetrics.Incrementer
    74  	Duplicates      xmetrics.Incrementer
    75  	RequestResponse metrics.Counter
    76  	Ping            xmetrics.Incrementer
    77  	Pong            xmetrics.Incrementer
    78  	Connect         xmetrics.Incrementer
    79  	Disconnect      xmetrics.Adder
    80  	Models          metrics.Gauge
    81  	WRPSourceCheck  metrics.Counter
    82  }
    83  
    84  // NewMeasures constructs a Measures given a go-kit metrics Provider
    85  func NewMeasures(p provider.Provider) Measures {
    86  	return Measures{
    87  		Device:          p.NewGauge(DeviceCounter),
    88  		LimitReached:    xmetrics.NewIncrementer(p.NewCounter(DeviceLimitReachedCounter)),
    89  		RequestResponse: p.NewCounter(RequestResponseCounter),
    90  		Ping:            xmetrics.NewIncrementer(p.NewCounter(PingCounter)),
    91  		Pong:            xmetrics.NewIncrementer(p.NewCounter(PongCounter)),
    92  		Duplicates:      xmetrics.NewIncrementer(p.NewCounter(DuplicatesCounter)),
    93  		Connect:         xmetrics.NewIncrementer(p.NewCounter(ConnectCounter)),
    94  		Disconnect:      p.NewCounter(DisconnectCounter),
    95  		Models:          p.NewGauge(ModelGauge),
    96  		WRPSourceCheck:  p.NewCounter(WRPSourceCheck),
    97  	}
    98  }