summaryrefslogtreecommitdiffstats
path: root/src/go/collectors/go.d.plugin/modules/mongodb/collect.go
blob: 232145de361d2171c09da06ffd1e73e6b7bcb68e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// SPDX-License-Identifier: GPL-3.0-or-later

package mongo

import "fmt"

func (m *Mongo) collect() (map[string]int64, error) {
	if err := m.conn.initClient(m.URI, m.Timeout.Duration()); err != nil {
		return nil, fmt.Errorf("init mongo conn: %v", err)
	}

	mx := make(map[string]int64)

	if err := m.collectServerStatus(mx); err != nil {
		return nil, fmt.Errorf("couldn't collect server status metrics: %v", err)
	}

	if err := m.collectDbStats(mx); err != nil {
		return mx, fmt.Errorf("couldn't collect dbstats metrics: %v", err)
	}

	if m.conn.isReplicaSet() {
		if err := m.collectReplSetStatus(mx); err != nil {
			return mx, fmt.Errorf("couldn't collect documentReplSetStatus metrics: %v", err)
		}
	}

	if m.conn.isMongos() {
		m.addShardingChartsOnce.Do(m.addShardingCharts)
		if err := m.collectSharding(mx); err != nil {
			return mx, fmt.Errorf("couldn't collect sharding metrics: %v", err)
		}
	}

	return mx, nil
}

func boolToInt(v bool) int64 {
	if v {
		return 1
	}
	return 0
}