Add extra wired tiger cache metrics to mongodb input (#3281)
This commit is contained in:
parent
f67350107d
commit
aba269e94c
|
@ -77,6 +77,21 @@ var WiredTigerStats = map[string]string{
|
||||||
"percent_cache_used": "CacheUsedPercent",
|
"percent_cache_used": "CacheUsedPercent",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var WiredTigerExtStats = map[string]string{
|
||||||
|
"wtcache_tracked_dirty_bytes": "TrackedDirtyBytes",
|
||||||
|
"wtcache_current_bytes": "CurrentCachedBytes",
|
||||||
|
"wtcache_max_bytes_configured": "MaxBytesConfigured",
|
||||||
|
"wtcache_app_threads_page_read_count": "AppThreadsPageReadCount",
|
||||||
|
"wtcache_app_threads_page_read_time": "AppThreadsPageReadTime",
|
||||||
|
"wtcache_app_threads_page_write_count": "AppThreadsPageWriteCount",
|
||||||
|
"wtcache_bytes_written_from": "BytesWrittenFrom",
|
||||||
|
"wtcache_bytes_read_into": "BytesReadInto",
|
||||||
|
"wtcache_pages_evicted_by_app_thread": "PagesEvictedByAppThread",
|
||||||
|
"wtcache_pages_queued_for_eviction": "PagesQueuedForEviction",
|
||||||
|
"wtcache_server_evicting_pages": "ServerEvictingPages",
|
||||||
|
"wtcache_worker_thread_evictingpages": "WorkerThreadEvictingPages",
|
||||||
|
}
|
||||||
|
|
||||||
var DbDataStats = map[string]string{
|
var DbDataStats = map[string]string{
|
||||||
"collections": "Collections",
|
"collections": "Collections",
|
||||||
"objects": "Objects",
|
"objects": "Objects",
|
||||||
|
@ -121,13 +136,11 @@ func (d *MongodbData) AddDefaultStats() {
|
||||||
floatVal, _ := strconv.ParseFloat(percentVal, 64)
|
floatVal, _ := strconv.ParseFloat(percentVal, 64)
|
||||||
d.add(key, floatVal)
|
d.add(key, floatVal)
|
||||||
}
|
}
|
||||||
|
d.addStat(statLine, WiredTigerExtStats)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *MongodbData) addStat(
|
func (d *MongodbData) addStat(statLine reflect.Value, stats map[string]string) {
|
||||||
statLine reflect.Value,
|
|
||||||
stats map[string]string,
|
|
||||||
) {
|
|
||||||
for key, value := range stats {
|
for key, value := range stats {
|
||||||
val := statLine.FieldByName(value).Interface()
|
val := statLine.FieldByName(value).Interface()
|
||||||
d.add(key, val)
|
d.add(key, val)
|
||||||
|
|
|
@ -70,9 +70,21 @@ func TestAddReplStats(t *testing.T) {
|
||||||
func TestAddWiredTigerStats(t *testing.T) {
|
func TestAddWiredTigerStats(t *testing.T) {
|
||||||
d := NewMongodbData(
|
d := NewMongodbData(
|
||||||
&StatLine{
|
&StatLine{
|
||||||
StorageEngine: "wiredTiger",
|
StorageEngine: "wiredTiger",
|
||||||
CacheDirtyPercent: 0,
|
CacheDirtyPercent: 0,
|
||||||
CacheUsedPercent: 0,
|
CacheUsedPercent: 0,
|
||||||
|
TrackedDirtyBytes: 0,
|
||||||
|
CurrentCachedBytes: 0,
|
||||||
|
MaxBytesConfigured: 0,
|
||||||
|
AppThreadsPageReadCount: 0,
|
||||||
|
AppThreadsPageReadTime: 0,
|
||||||
|
AppThreadsPageWriteCount: 0,
|
||||||
|
BytesWrittenFrom: 0,
|
||||||
|
BytesReadInto: 0,
|
||||||
|
PagesEvictedByAppThread: 0,
|
||||||
|
PagesQueuedForEviction: 0,
|
||||||
|
ServerEvictingPages: 0,
|
||||||
|
WorkerThreadEvictingPages: 0,
|
||||||
},
|
},
|
||||||
tags,
|
tags,
|
||||||
)
|
)
|
||||||
|
|
|
@ -127,9 +127,19 @@ type ConcurrentTransStats struct {
|
||||||
|
|
||||||
// CacheStats stores cache statistics for WiredTiger.
|
// CacheStats stores cache statistics for WiredTiger.
|
||||||
type CacheStats struct {
|
type CacheStats struct {
|
||||||
TrackedDirtyBytes int64 `bson:"tracked dirty bytes in the cache"`
|
TrackedDirtyBytes int64 `bson:"tracked dirty bytes in the cache"`
|
||||||
CurrentCachedBytes int64 `bson:"bytes currently in the cache"`
|
CurrentCachedBytes int64 `bson:"bytes currently in the cache"`
|
||||||
MaxBytesConfigured int64 `bson:"maximum bytes configured"`
|
MaxBytesConfigured int64 `bson:"maximum bytes configured"`
|
||||||
|
AppThreadsPageReadCount int64 `bson:"application threads page read from disk to cache count"`
|
||||||
|
AppThreadsPageReadTime int64 `bson:"application threads page read from disk to cache time (usecs)"`
|
||||||
|
AppThreadsPageWriteCount int64 `bson:"application threads page write from cache to disk count"`
|
||||||
|
AppThreadsPageWriteTime int64 `bson:"application threads page write from cache to disk time (usecs)"`
|
||||||
|
BytesWrittenFrom int64 `bson:"bytes written from cache"`
|
||||||
|
BytesReadInto int64 `bson:"bytes read into cache"`
|
||||||
|
PagesEvictedByAppThread int64 `bson:"pages evicted by application threads"`
|
||||||
|
PagesQueuedForEviction int64 `bson:"pages queued for eviction"`
|
||||||
|
ServerEvictingPages int64 `bson:"eviction server evicting pages"`
|
||||||
|
WorkerThreadEvictingPages int64 `bson:"eviction worker thread evicting pages"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// TransactionStats stores transaction checkpoints in WiredTiger.
|
// TransactionStats stores transaction checkpoints in WiredTiger.
|
||||||
|
@ -406,6 +416,20 @@ type StatLine struct {
|
||||||
CacheDirtyPercent float64
|
CacheDirtyPercent float64
|
||||||
CacheUsedPercent float64
|
CacheUsedPercent float64
|
||||||
|
|
||||||
|
// Cache ultilization extended (wiredtiger only)
|
||||||
|
TrackedDirtyBytes int64
|
||||||
|
CurrentCachedBytes int64
|
||||||
|
MaxBytesConfigured int64
|
||||||
|
AppThreadsPageReadCount int64
|
||||||
|
AppThreadsPageReadTime int64
|
||||||
|
AppThreadsPageWriteCount int64
|
||||||
|
BytesWrittenFrom int64
|
||||||
|
BytesReadInto int64
|
||||||
|
PagesEvictedByAppThread int64
|
||||||
|
PagesQueuedForEviction int64
|
||||||
|
ServerEvictingPages int64
|
||||||
|
WorkerThreadEvictingPages int64
|
||||||
|
|
||||||
// Replicated Opcounter fields
|
// Replicated Opcounter fields
|
||||||
InsertR, QueryR, UpdateR, DeleteR, GetMoreR, CommandR int64
|
InsertR, QueryR, UpdateR, DeleteR, GetMoreR, CommandR int64
|
||||||
ReplLag int64
|
ReplLag int64
|
||||||
|
@ -534,6 +558,19 @@ func NewStatLine(oldMongo, newMongo MongoStatus, key string, all bool, sampleSec
|
||||||
returnVal.Flushes = newStat.WiredTiger.Transaction.TransCheckpoints - oldStat.WiredTiger.Transaction.TransCheckpoints
|
returnVal.Flushes = newStat.WiredTiger.Transaction.TransCheckpoints - oldStat.WiredTiger.Transaction.TransCheckpoints
|
||||||
returnVal.CacheDirtyPercent = float64(newStat.WiredTiger.Cache.TrackedDirtyBytes) / float64(newStat.WiredTiger.Cache.MaxBytesConfigured)
|
returnVal.CacheDirtyPercent = float64(newStat.WiredTiger.Cache.TrackedDirtyBytes) / float64(newStat.WiredTiger.Cache.MaxBytesConfigured)
|
||||||
returnVal.CacheUsedPercent = float64(newStat.WiredTiger.Cache.CurrentCachedBytes) / float64(newStat.WiredTiger.Cache.MaxBytesConfigured)
|
returnVal.CacheUsedPercent = float64(newStat.WiredTiger.Cache.CurrentCachedBytes) / float64(newStat.WiredTiger.Cache.MaxBytesConfigured)
|
||||||
|
|
||||||
|
returnVal.TrackedDirtyBytes = newStat.WiredTiger.Cache.TrackedDirtyBytes
|
||||||
|
returnVal.CurrentCachedBytes = newStat.WiredTiger.Cache.CurrentCachedBytes
|
||||||
|
returnVal.MaxBytesConfigured = newStat.WiredTiger.Cache.MaxBytesConfigured
|
||||||
|
returnVal.AppThreadsPageReadCount = newStat.WiredTiger.Cache.AppThreadsPageReadCount
|
||||||
|
returnVal.AppThreadsPageReadTime = newStat.WiredTiger.Cache.AppThreadsPageReadTime
|
||||||
|
returnVal.AppThreadsPageWriteCount = newStat.WiredTiger.Cache.AppThreadsPageWriteCount
|
||||||
|
returnVal.BytesWrittenFrom = newStat.WiredTiger.Cache.BytesWrittenFrom
|
||||||
|
returnVal.BytesReadInto = newStat.WiredTiger.Cache.BytesReadInto
|
||||||
|
returnVal.PagesEvictedByAppThread = newStat.WiredTiger.Cache.PagesEvictedByAppThread
|
||||||
|
returnVal.PagesQueuedForEviction = newStat.WiredTiger.Cache.PagesQueuedForEviction
|
||||||
|
returnVal.ServerEvictingPages = newStat.WiredTiger.Cache.ServerEvictingPages
|
||||||
|
returnVal.WorkerThreadEvictingPages = newStat.WiredTiger.Cache.WorkerThreadEvictingPages
|
||||||
} else if newStat.BackgroundFlushing != nil && oldStat.BackgroundFlushing != nil {
|
} else if newStat.BackgroundFlushing != nil && oldStat.BackgroundFlushing != nil {
|
||||||
returnVal.Flushes = newStat.BackgroundFlushing.Flushes - oldStat.BackgroundFlushing.Flushes
|
returnVal.Flushes = newStat.BackgroundFlushing.Flushes - oldStat.BackgroundFlushing.Flushes
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue