@@ -155,58 +155,65 @@ type CourierConfig interface {
155155 WriteTimeout () time.Duration
156156 KeepAlive () time.Duration
157157 AckTimeout () time.Duration
158+ PoolSize () int
158159}
159160
160161func (t * OTel ) initCourierConfig (c UseMiddleware ) {
161- baseAttrs := append ([]attribute.KeyValue {
162- attribute .String ("service.name" , t .service ),
163- }, t .attributes ... )
164-
165- ctx := context .Background ()
166-
167162 cCfg , ok := c .(CourierConfig )
168163 if ! ok {
169164 return
170165 }
171166
172- connTimeout := cCfg .ConnectTimeout ().Seconds ()
173- writeTimeout := cCfg .WriteTimeout ().Seconds ()
174- keepAlive := cCfg .KeepAlive ().Seconds ()
175- ackTimeout := cCfg .AckTimeout ().Seconds ()
167+ t .setupCourierMetrics (cCfg )
168+ }
176169
177- connTimeoutGauge , err := t .meter .Float64UpDownCounter (
178- "courier.client.connection_timeout" ,
179- metric .WithDescription ("MQTT connection timeout in seconds" ),
180- metric .WithUnit ("s" ),
181- )
182- if err != nil {
183- panic (err )
184- }
170+ func (t * OTel ) setupCourierMetrics (cCfg CourierConfig ) {
171+ baseAttrs := append ([]attribute.KeyValue {
172+ attribute .String ("service.name" , t .service ),
173+ }, t .attributes ... )
185174
186- connTimeoutGauge . Add ( ctx , connTimeout , metric . WithAttributes ( baseAttrs ... ) )
175+ ctx := context . Background ( )
187176
188- writeTimeoutGauge , err := t .meter .Float64UpDownCounter (
189- "courier.client.write_timeout" ,
190- metric .WithDescription ("MQTT write timeout in seconds" ),
191- metric .WithUnit ("s" ),
192- )
193- if err != nil {
194- panic (err )
177+ timeoutMetrics := []struct {
178+ name string
179+ description string
180+ value float64
181+ }{
182+ {
183+ name : "courier.client.connection_timeout" ,
184+ description : "MQTT connection timeout in seconds" ,
185+ value : cCfg .ConnectTimeout ().Seconds (),
186+ },
187+ {
188+ name : "courier.client.write_timeout" ,
189+ description : "MQTT write timeout in seconds" ,
190+ value : cCfg .WriteTimeout ().Seconds (),
191+ },
192+ {
193+ name : "courier.client.keep_alive" ,
194+ description : "MQTT keep alive in seconds" ,
195+ value : cCfg .KeepAlive ().Seconds (),
196+ },
197+ {
198+ name : "courier.client.ack_timeout" ,
199+ description : "MQTT ack timeout in seconds" ,
200+ value : cCfg .AckTimeout ().Seconds (),
201+ },
195202 }
196203
197- writeTimeoutGauge .Add (ctx , writeTimeout , metric .WithAttributes (baseAttrs ... ))
204+ for _ , tm := range timeoutMetrics {
205+ gauge , err := t .meter .Float64UpDownCounter (
206+ tm .name ,
207+ metric .WithDescription (tm .description ),
208+ metric .WithUnit ("s" ),
209+ )
210+ if err != nil {
211+ panic (err )
212+ }
198213
199- keepAliveGauge , err := t .meter .Float64UpDownCounter (
200- "courier.client.keep_alive" ,
201- metric .WithDescription ("MQTT keep alive in seconds" ),
202- metric .WithUnit ("s" ),
203- )
204- if err != nil {
205- panic (err )
214+ gauge .Add (ctx , tm .value , metric .WithAttributes (baseAttrs ... ))
206215 }
207216
208- keepAliveGauge .Add (ctx , keepAlive , metric .WithAttributes (baseAttrs ... ))
209-
210217 versionGauge , err := t .meter .Float64UpDownCounter (
211218 "courier.client.library_version" ,
212219 metric .WithDescription ("Courier library version" ),
@@ -216,17 +223,15 @@ func (t *OTel) initCourierConfig(c UseMiddleware) {
216223 }
217224
218225 versionAttrs := append (baseAttrs , attribute .String ("version" , courier .Version ()))
219-
220226 versionGauge .Add (ctx , 1.0 , metric .WithAttributes (versionAttrs ... ))
221227
222- ackTimeoutGauge , err := t .meter .Float64UpDownCounter (
223- "courier.client.ack_timeout" ,
224- metric .WithDescription ("MQTT ack timeout in seconds" ),
225- metric .WithUnit ("s" ),
228+ poolSizeGauge , err := t .meter .Float64UpDownCounter (
229+ "courier.client.pool_size" ,
230+ metric .WithDescription ("Size of the MQTT connection pool" ),
226231 )
227232 if err != nil {
228233 panic (err )
229234 }
230235
231- ackTimeoutGauge .Add (ctx , ackTimeout , metric .WithAttributes (baseAttrs ... ))
236+ poolSizeGauge .Add (ctx , float64 ( cCfg . PoolSize ()) , metric .WithAttributes (baseAttrs ... ))
232237}
0 commit comments