@@ -7,59 +7,121 @@ import (
77)
88
99type Metrics struct {
10- Registrer prometheus.Registerer
11- RequestFailures prometheus.Counter
12- ResponseStatus prometheus_CounterVec
13- ConnectionLatency prometheus.Histogram
14- InformDuration prometheus.Histogram
15- ConcurrentInforms prometheus.Gauge
10+ Bootstrapped prometheus.Counter
11+ ConnectionLatency prometheus.Histogram
12+ MethodCalls prometheus_CounterVec
13+ RequestFailures prometheus.Counter
14+ ResponseStatus prometheus_CounterVec
15+ SessionsAttempted prometheus.Counter
16+ SessionsEstablished prometheus.Counter
17+ SessionsCompleted prometheus.Counter
18+ SessionDuration prometheus_HistogramVec
19+ ConcurrentSessions prometheus.Gauge
20+ InformEvents prometheus_CounterVec
21+ ParametersRead prometheus.Counter
22+ ParametersWritten prometheus.Counter
1623}
1724
18- // Odd name, I know.
25+ // prometheus.CounterVec is a struct, not an interface. We can't reimplement it
26+ // so instead a custom interface is defined.
1927// nolint:revive,stylecheck
2028type prometheus_CounterVec interface {
2129 prometheus.Collector
2230 With (prometheus.Labels ) prometheus.Counter
2331}
2432
33+ // prometheus.HistogramVec is a struct, not an interface. We can't reimplement
34+ // it so instead a custom interface is defined.
35+ // nolint:revive,stylecheck
36+ type prometheus_HistogramVec interface {
37+ prometheus.Collector
38+ With (prometheus.Labels ) prometheus.Observer
39+ }
40+
2541func New (reg prometheus.Registerer ) * Metrics {
2642 m := & Metrics {
43+ Bootstrapped : prometheus .NewCounter (prometheus.CounterOpts {
44+ Name : "bootstrapped" ,
45+ Help : "Number of successful bootstraps" ,
46+ }),
47+ ConnectionLatency : prometheus .NewHistogram (prometheus.HistogramOpts {
48+ Name : "acs_connection_latency" ,
49+ Help : "Time it takes to establish a connection to ACS in milliseconds" ,
50+ Buckets : prometheus .LinearBuckets (0.5 , 0.5 , 10 ),
51+ NativeHistogramMaxExemplars : 100 ,
52+ NativeHistogramExemplarTTL : 15 * time .Second ,
53+ }),
54+ MethodCalls : prometheus .NewCounterVec (
55+ prometheus.CounterOpts {
56+ Name : "rpc_method_calls" ,
57+ Help : "Number of RPC method calls" ,
58+ },
59+ []string {"method" },
60+ ),
2761 RequestFailures : prometheus .NewCounter (prometheus.CounterOpts {
2862 Name : "acs_request_failures" ,
29- Help : "Number of times requests to ACS failed. " ,
63+ Help : "Number of times requests to ACS failed" ,
3064 }),
3165 ResponseStatus : prometheus .NewCounterVec (
3266 prometheus.CounterOpts {
3367 Name : "acs_response_status" ,
34- Help : "ACS response status code. " ,
68+ Help : "ACS response status code" ,
3569 },
3670 []string {"status" },
3771 ),
38- ConcurrentInforms : prometheus .NewGauge (prometheus.GaugeOpts {
39- Name : "concurrent_informs " ,
40- Help : "The number of inform sessions in progress. " ,
72+ SessionsAttempted : prometheus .NewCounter (prometheus.CounterOpts {
73+ Name : "sessions_attempted " ,
74+ Help : "Number of attempted sessions" ,
4175 }),
42- ConnectionLatency : prometheus .NewHistogram (prometheus.HistogramOpts {
43- Name : "acs_connection_latency" ,
44- Help : "Time it takes to establish a connection to ACS in milliseconds." ,
45- Buckets : prometheus .LinearBuckets (0.5 , 0.5 , 10 ),
46- NativeHistogramMaxExemplars : 100 ,
47- NativeHistogramExemplarTTL : 15 * time .Second ,
76+ SessionsEstablished : prometheus .NewCounter (prometheus.CounterOpts {
77+ Name : "sessions_established" ,
78+ Help : "Number of established sessions" ,
79+ }),
80+ SessionsCompleted : prometheus .NewCounter (prometheus.CounterOpts {
81+ Name : "sessions_completed" ,
82+ Help : "Number of completed sessions" ,
4883 }),
49- InformDuration : prometheus .NewHistogram (prometheus.HistogramOpts {
50- Name : "inform_duration " ,
51- Help : "Inform length in milliseconds. " ,
84+ SessionDuration : prometheus .NewHistogramVec (prometheus.HistogramOpts {
85+ Name : "session_duration_per_event " ,
86+ Help : "Session length in milliseconds" ,
5287 Buckets : prometheus .ExponentialBuckets (1 , 10 , 10 ),
5388 NativeHistogramMaxExemplars : 100 ,
5489 NativeHistogramExemplarTTL : 15 * time .Minute ,
90+ }, []string {"event" }),
91+ ConcurrentSessions : prometheus .NewGauge (prometheus.GaugeOpts {
92+ Name : "concurrent_sessions" ,
93+ Help : "The number of concurrent in-progress sessions" ,
94+ }),
95+ InformEvents : prometheus .NewCounterVec (
96+ prometheus.CounterOpts {
97+ Name : "inform_events" ,
98+ Help : "Inform event count by event" ,
99+ },
100+ []string {"event" },
101+ ),
102+ ParametersRead : prometheus .NewCounter (prometheus.CounterOpts {
103+ Name : "parameters_read" ,
104+ Help : "Number of parameters accessed via GetParameterValues" ,
105+ }),
106+ ParametersWritten : prometheus .NewCounter (prometheus.CounterOpts {
107+ Name : "parameters_written" ,
108+ Help : "Number of parameters changed via SetParameterValues" ,
55109 }),
56110 }
57111 reg .MustRegister (
112+ m .Bootstrapped ,
113+ m .ConnectionLatency ,
114+ m .MethodCalls ,
58115 m .RequestFailures ,
59116 m .ResponseStatus ,
60- m .ConcurrentInforms ,
61- m .ConnectionLatency ,
62- m .InformDuration ,
117+ m .SessionsAttempted ,
118+ m .SessionsEstablished ,
119+ m .SessionsCompleted ,
120+ m .SessionDuration ,
121+ m .ConcurrentSessions ,
122+ m .InformEvents ,
123+ m .ParametersRead ,
124+ m .ParametersWritten ,
63125 )
64126 return m
65127}
0 commit comments