@@ -66,6 +66,7 @@ func (d *currentopCollector) collect(ch chan<- prometheus.Metric) {
66
66
client := d .base .client
67
67
slowtime , err := time .ParseDuration (d .currentopslowtime )
68
68
if err != nil {
69
+ logger .Errorf ("Failed to parse slowtime: %s" , err )
69
70
ch <- prometheus .NewInvalidMetric (prometheus .NewInvalidDesc (err ), err )
70
71
return
71
72
}
@@ -89,6 +90,7 @@ func (d *currentopCollector) collect(ch chan<- prometheus.Metric) {
89
90
90
91
var r primitive.M
91
92
if err := res .Decode (& r ); err != nil {
93
+ logger .Errorf ("Failed to decode currentOp response: %s" , err )
92
94
ch <- prometheus .NewInvalidMetric (prometheus .NewInvalidDesc (err ), err )
93
95
return
94
96
}
@@ -99,10 +101,16 @@ func (d *currentopCollector) collect(ch chan<- prometheus.Metric) {
99
101
inprog , ok := r ["inprog" ].(primitive.A )
100
102
101
103
if ! ok {
104
+ logger .Errorf ("Invalid type primitive.A assertion for 'inprog': %T" , r ["inprog" ])
102
105
ch <- prometheus .NewInvalidMetric (prometheus .NewInvalidDesc (ErrInvalidOrMissingInprogEntry ),
103
106
ErrInvalidOrMissingInprogEntry )
104
107
}
105
108
109
+ labels := d .topologyInfo .baseLabels ()
110
+ ln := []string {"opid" , "op" , "desc" , "database" , "collection" , "ns" }
111
+ const name = "mongodb_currentop_query_uptime"
112
+ pd := prometheus .NewDesc (name , " mongodb_currentop_query_uptime currentop_query" , ln , labels )
113
+
106
114
for _ , bsonMap := range inprog {
107
115
108
116
bsonMapElement , ok := bsonMap .(primitive.M )
@@ -137,18 +145,8 @@ func (d *currentopCollector) collect(ch chan<- prometheus.Metric) {
137
145
continue
138
146
}
139
147
140
- labels := d .topologyInfo .baseLabels ()
141
- labels ["opid" ] = strconv .Itoa (int (opid ))
142
- labels ["op" ] = op
143
- labels ["desc" ] = desc
144
- labels ["database" ] = db
145
- labels ["collection" ] = collection
146
- labels ["ns" ] = namespace
147
-
148
- m := primitive.M {"uptime" : microsecs_running }
148
+ lv := []string {strconv .Itoa (int (opid )), op , desc , db , collection , namespace }
149
149
150
- for _ , metric := range makeMetrics ("currentop_query" , m , labels , d .compatibleMode ) {
151
- ch <- metric
152
- }
150
+ ch <- prometheus .MustNewConstMetric (pd , prometheus .GaugeValue , float64 (microsecs_running ), lv ... )
153
151
}
154
152
}
0 commit comments