master
go 36 lines 935 Bytes
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package mongo
4
5 import "fmt"
6
7 func (c *Collector) collect() (map[string]int64, error) {
8 if err := c.conn.initClient(c.URI, c.Timeout.Duration()); err != nil {
9 return nil, fmt.Errorf("init mongo conn: %v", err)
10 }
11
12 mx := make(map[string]int64)
13
14 if err := c.collectServerStatus(mx); err != nil {
15 return nil, fmt.Errorf("couldn't collect server status metrics: %v", err)
16 }
17
18 if err := c.collectDbStats(mx); err != nil {
19 return mx, fmt.Errorf("couldn't collect dbstats metrics: %v", err)
20 }
21
22 if c.conn.isReplicaSet() {
23 if err := c.collectReplSetStatus(mx); err != nil {
24 return mx, fmt.Errorf("couldn't collect documentReplSetStatus metrics: %v", err)
25 }
26 }
27
28 if c.conn.isMongos() {
29 c.addShardingChartsOnce.Do(c.addShardingCharts)
30 if err := c.collectSharding(mx); err != nil {
31 return mx, fmt.Errorf("couldn't collect sharding metrics: %v", err)
32 }
33 }
34
35 return mx, nil
36 }