Skip to content

Commit 9603c7f

Browse files
committed
PMM-13602 Improve performance
1 parent 112fabd commit 9603c7f

File tree

5 files changed

+553
-563
lines changed

5 files changed

+553
-563
lines changed

exporter/diagnostic_data_collector.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -118,17 +118,16 @@ func (d *diagnosticDataCollector) collect(ch chan<- prometheus.Metric) {
118118

119119
// MongoDB 8.0 splits the diagnostic data into multiple blocks, so we need to merge them
120120
if _, ok := m["common"]; ok {
121-
b := bson.M{}
122-
for _, mv := range m {
121+
for kv, mv := range m {
123122
block, ok := mv.(bson.M)
124123
if !ok {
125124
continue
126125
}
127126
for k, v := range block {
128-
b[k] = v
127+
m[k] = v
129128
}
129+
delete(m, kv)
130130
}
131-
m = b
132131
}
133132

134133
metrics = makeMetrics("", m, d.topologyInfo.baseLabels(), d.compatibleMode)

exporter/exporter.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ func (e *Exporter) makeRegistry(ctx context.Context, client *mongo.Client, topol
153153
e.getTotalCollectionsCount() <= e.opts.CollStatsLimit {
154154
limitsOk = true
155155
}
156+
limitsOk = true
156157

157158
if e.opts.CollectAll {
158159
if len(e.opts.CollStatsNamespaces) == 0 {
@@ -191,7 +192,7 @@ func (e *Exporter) makeRegistry(ctx context.Context, client *mongo.Client, topol
191192
// If we manually set the collection names we want or auto discovery is set.
192193
if (len(e.opts.CollStatsNamespaces) > 0 || e.opts.DiscoveringMode) && e.opts.EnableCollStats && limitsOk && requestOpts.EnableCollStats {
193194
cc := newCollectionStatsCollector(ctx, client, e.opts.Logger,
194-
e.opts.CompatibleMode, e.opts.DiscoveringMode,
195+
e.opts.DiscoveringMode,
195196
topologyInfo, e.opts.CollStatsNamespaces)
196197
registry.MustRegister(cc)
197198
}

exporter/metrics.go

Lines changed: 52 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,7 @@ func makeMetrics(prefix string, m bson.M, labels map[string]string, compatibleMo
335335

336336
metrics := []*rawMetric{rm}
337337

338-
if renamedMetrics := metricRenameAndLabel(rm, specialConversions()); renamedMetrics != nil {
338+
if renamedMetrics := metricRenameAndLabel(rm, specialConversions); renamedMetrics != nil {
339339
metrics = renamedMetrics
340340
}
341341

@@ -435,62 +435,60 @@ func metricRenameAndLabel(rm *rawMetric, convs []conversion) []*rawMetric {
435435

436436
// specialConversions returns a list of special conversions we want to implement.
437437
// See: https://jira.percona.com/browse/PMM-6506
438-
func specialConversions() []conversion {
439-
return []conversion{
440-
{
441-
oldName: "mongodb_ss_opLatencies_ops",
442-
prefix: "mongodb_ss_opLatencies",
443-
suffixLabel: "op_type",
444-
suffixMapping: map[string]string{
445-
"commands_ops": "commands",
446-
"reads_ops": "reads",
447-
"transactions_ops": "transactions",
448-
"writes_ops": "writes",
449-
},
438+
var specialConversions = []conversion{
439+
{
440+
oldName: "mongodb_ss_opLatencies_ops",
441+
prefix: "mongodb_ss_opLatencies",
442+
suffixLabel: "op_type",
443+
suffixMapping: map[string]string{
444+
"commands_ops": "commands",
445+
"reads_ops": "reads",
446+
"transactions_ops": "transactions",
447+
"writes_ops": "writes",
450448
},
451-
{
452-
oldName: "mongodb_ss_opLatencies_latency",
453-
prefix: "mongodb_ss_opLatencies",
454-
suffixLabel: "op_type",
455-
suffixMapping: map[string]string{
456-
"commands_latency": "commands",
457-
"reads_latency": "reads",
458-
"transactions_latency": "transactions",
459-
"writes_latency": "writes",
460-
},
449+
},
450+
{
451+
oldName: "mongodb_ss_opLatencies_latency",
452+
prefix: "mongodb_ss_opLatencies",
453+
suffixLabel: "op_type",
454+
suffixMapping: map[string]string{
455+
"commands_latency": "commands",
456+
"reads_latency": "reads",
457+
"transactions_latency": "transactions",
458+
"writes_latency": "writes",
461459
},
462-
// mongodb_ss_wt_concurrentTransactions_read_out
463-
// mongodb_ss_wt_concurrentTransactions_write_out
464-
{
465-
oldName: "mongodb_ss_wt_concurrentTransactions_out",
466-
prefix: "mongodb_ss_wt_concurrentTransactions",
467-
suffixLabel: "txn_rw",
468-
suffixMapping: map[string]string{
469-
"read_out": "read",
470-
"write_out": "write",
471-
},
460+
},
461+
// mongodb_ss_wt_concurrentTransactions_read_out
462+
// mongodb_ss_wt_concurrentTransactions_write_out
463+
{
464+
oldName: "mongodb_ss_wt_concurrentTransactions_out",
465+
prefix: "mongodb_ss_wt_concurrentTransactions",
466+
suffixLabel: "txn_rw",
467+
suffixMapping: map[string]string{
468+
"read_out": "read",
469+
"write_out": "write",
472470
},
473-
// mongodb_ss_wt_concurrentTransactions_read_available
474-
// mongodb_ss_wt_concurrentTransactions_write_available
475-
{
476-
oldName: "mongodb_ss_wt_concurrentTransactions_available",
477-
prefix: "mongodb_ss_wt_concurrentTransactions",
478-
suffixLabel: "txn_rw",
479-
suffixMapping: map[string]string{
480-
"read_available": "read",
481-
"write_available": "write",
482-
},
471+
},
472+
// mongodb_ss_wt_concurrentTransactions_read_available
473+
// mongodb_ss_wt_concurrentTransactions_write_available
474+
{
475+
oldName: "mongodb_ss_wt_concurrentTransactions_available",
476+
prefix: "mongodb_ss_wt_concurrentTransactions",
477+
suffixLabel: "txn_rw",
478+
suffixMapping: map[string]string{
479+
"read_available": "read",
480+
"write_available": "write",
483481
},
484-
// mongodb_ss_wt_concurrentTransactions_read_totalTickets
485-
// mongodb_ss_wt_concurrentTransactions_write_totalTickets
486-
{
487-
oldName: "mongodb_ss_wt_concurrentTransactions_totalTickets",
488-
prefix: "mongodb_ss_wt_concurrentTransactions",
489-
suffixLabel: "txn_rw",
490-
suffixMapping: map[string]string{
491-
"read_totalTickets": "read",
492-
"write_totalTickets": "write",
493-
},
482+
},
483+
// mongodb_ss_wt_concurrentTransactions_read_totalTickets
484+
// mongodb_ss_wt_concurrentTransactions_write_totalTickets
485+
{
486+
oldName: "mongodb_ss_wt_concurrentTransactions_totalTickets",
487+
prefix: "mongodb_ss_wt_concurrentTransactions",
488+
suffixLabel: "txn_rw",
489+
suffixMapping: map[string]string{
490+
"read_totalTickets": "read",
491+
"write_totalTickets": "write",
494492
},
495-
}
493+
},
496494
}

exporter/top_collector.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ func newTopCollector(ctx context.Context, client *mongo.Client, logger *logrus.L
4242
return &topCollector{
4343
ctx: ctx,
4444
base: newBaseCollector(client, logger.WithFields(logrus.Fields{"collector": "top"})),
45-
compatibleMode: compatible,
45+
compatibleMode: false, //there are no compatible metrics for this collector.
4646
topologyInfo: topology,
4747
}
4848
}

0 commit comments

Comments
 (0)