in components/otelopscol/receiver/mongodbreceiver/metrics.go [246:284]
func (s *mongodbScraper) recordCacheOperations(now pcommon.Timestamp, doc bson.M, errs *scrapererror.ScrapeErrors) {
// Collect Cache Hits & Misses if wiredTiger storage engine is used
// WiredTiger.cache metrics are available in 3.0+
// https://www.mongodb.com/docs/v4.0/reference/command/serverStatus/#serverstatus.wiredTiger.cache
mongo30, _ := version.NewVersion("3.0")
if s.mongoVersion.LessThan(mongo30) {
return
}
storageEngine, err := dig(doc, []string{"storageEngine", "name"})
if err != nil {
errs.AddPartial(1, errors.New("failed to find storage engine for cache operations"))
return
}
if storageEngine != "wiredTiger" {
// mongodb is using a different storage engine and this metric can not be collected
return
}
metricPath := []string{"wiredTiger", "cache", "pages read into cache"}
metricName := "mongodb.cache.operations"
cacheMissVal, err := collectMetric(doc, metricPath)
if err != nil {
errs.AddPartial(2, fmt.Errorf(collectMetricWithAttributes, metricName, "miss, hit", err))
return
}
s.mb.RecordMongodbCacheOperationsDataPoint(now, cacheMissVal, metadata.AttributeTypeMiss)
cacheHitPath := []string{"wiredTiger", "cache", "pages requested from the cache"}
cacheHitName := "mongodb.cache.operations"
cacheHitVal, err := collectMetric(doc, cacheHitPath)
if err != nil {
errs.AddPartial(1, fmt.Errorf(collectMetricWithAttributes, cacheHitName, "hit", err))
return
}
cacheHits := cacheHitVal - cacheMissVal
s.mb.RecordMongodbCacheOperationsDataPoint(now, cacheHits, metadata.AttributeTypeHit)
}