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 }