how can i pass mongostat data in nodejs backend or is there some function to get mongostat data in nodejs?
Hi,
The output of mongostat
are just post-processed output of db.serverStatus() command.
You can determine which part of serverStatus forms which part of mongostat
output from the source (which is in go, but should be quite readable): stat_headers.go
The source also contains which part of serverStatus is used: server_status.go
Note that the raw output of serverStatus is showing absolute numbers. For example, the insert, query, update, delete, getmore, command output:
> db.serverStatus().opcounters
{
"insert" : NumberLong(27975),
"query" : NumberLong(5636),
"update" : NumberLong(3991),
"delete" : NumberLong(76),
"getmore" : NumberLong(262),
"command" : NumberLong(137933)
}
However mongostat
takes the delta of those numbers each seconds, that’s why it’s showing 0
if there’s no server activity. Which numbers are deltas and which are not should be explained in stat_headers.go
.
Quick example using node for getting the opcounters number and the dirty
number:
let res = await conn.db('admin').command({serverStatus: 1})
console.log(res.opcounters)
let cache_dirty = res.wiredTiger.cache['tracked dirty bytes in the cache']
let cache_max = res.wiredTiger.cache['maximum bytes configured']
console.log(100 * cache_dirty / cache_max)
This code in my PC outputs:
{
insert: 27975,
query: 5635,
update: 3989,
delete: 73,
getmore: 262,
command: 137876
}
0.7547448389232159
where the 0.75...
number corresponds with the dirty
number shown in mongostat
.
Best regards,
Kevin