// Collect collects all mongodb's metrics. func (exporter *MongodbCollector) Collect(ch chan<- prometheus.Metric) { mongoSess := shared.MongoSession(exporter.Opts.URI) defer mongoSess.Close() if mongoSess != nil { serverVersion, err := shared.MongoSessionServerVersion(mongoSess) if err != nil { glog.Errorf("Problem gathering the mongo server version: %s", err) } nodeType, err := shared.MongoSessionNodeType(mongoSess) if err != nil { glog.Errorf("Problem gathering the mongo node type: %s", err) } glog.Infof("Connected to: %s (node type: %s, server version: %s)", exporter.Opts.URI, nodeType, serverVersion) switch { case nodeType == "mongos": exporter.collectMongos(mongoSess, ch) case nodeType == "mongod": exporter.collectMongod(mongoSess, ch) case nodeType == "replset": exporter.collectMongodReplSet(mongoSess, ch) default: glog.Infof("Unrecognized node type %s!", nodeType) } } }
// Describe describes all mongodb's metrics. func (exporter *MongodbCollector) Describe(ch chan<- *prometheus.Desc) { glog.Info("Describing groups") session := shared.MongoSession(exporter.Opts.URI) defer session.Close() if session != nil { serverStatus := collector_mongos.GetServerStatus(session) if serverStatus != nil { serverStatus.Describe(ch) } } }