Add per-host shard metrics in mongodb input (#3819)
This commit is contained in:
committed by
Daniel Nelson
parent
d44b3f6839
commit
0fc8724f88
@@ -125,12 +125,27 @@ type WiredTiger struct {
|
||||
|
||||
// ShardStats stores information from shardConnPoolStats.
|
||||
type ShardStats struct {
|
||||
ShardStatsData `bson:",inline"`
|
||||
Hosts map[string]ShardHostStatsData `bson:"hosts"`
|
||||
}
|
||||
|
||||
// ShardStatsData is the total Shard Stats from shardConnPoolStats database command.
|
||||
type ShardStatsData struct {
|
||||
TotalInUse int64 `bson:"totalInUse"`
|
||||
TotalAvailable int64 `bson:"totalAvailable"`
|
||||
TotalCreated int64 `bson:"totalCreated"`
|
||||
TotalRefreshing int64 `bson:"totalRefreshing"`
|
||||
}
|
||||
|
||||
// ShardHostStatsData is the host-specific stats
|
||||
// from shardConnPoolStats database command.
|
||||
type ShardHostStatsData struct {
|
||||
InUse int64 `bson:"inUse"`
|
||||
Available int64 `bson:"available"`
|
||||
Created int64 `bson:"created"`
|
||||
Refreshing int64 `bson:"refreshing"`
|
||||
}
|
||||
|
||||
type ConcurrentTransactions struct {
|
||||
Write ConcurrentTransStats `bson:"write"`
|
||||
Read ConcurrentTransStats `bson:"read"`
|
||||
@@ -469,6 +484,9 @@ type StatLine struct {
|
||||
|
||||
// Shard stats
|
||||
TotalInUse, TotalAvailable, TotalCreated, TotalRefreshing int64
|
||||
|
||||
// Shard Hosts stats field
|
||||
ShardHostStatsLines map[string]ShardHostStatLine
|
||||
}
|
||||
|
||||
type DbStatLine struct {
|
||||
@@ -484,6 +502,13 @@ type DbStatLine struct {
|
||||
Ok int64
|
||||
}
|
||||
|
||||
type ShardHostStatLine struct {
|
||||
InUse int64
|
||||
Available int64
|
||||
Created int64
|
||||
Refreshing int64
|
||||
}
|
||||
|
||||
func parseLocks(stat ServerStatus) map[string]LockUsage {
|
||||
returnVal := map[string]LockUsage{}
|
||||
for namespace, lockInfo := range stat.Locks {
|
||||
@@ -809,6 +834,17 @@ func NewStatLine(oldMongo, newMongo MongoStatus, key string, all bool, sampleSec
|
||||
returnVal.TotalAvailable = newShardStats.TotalAvailable
|
||||
returnVal.TotalCreated = newShardStats.TotalCreated
|
||||
returnVal.TotalRefreshing = newShardStats.TotalRefreshing
|
||||
returnVal.ShardHostStatsLines = map[string]ShardHostStatLine{}
|
||||
for host, stats := range newShardStats.Hosts {
|
||||
shardStatLine := &ShardHostStatLine{
|
||||
InUse: stats.InUse,
|
||||
Available: stats.Available,
|
||||
Created: stats.Created,
|
||||
Refreshing: stats.Refreshing,
|
||||
}
|
||||
|
||||
returnVal.ShardHostStatsLines[host] = *shardStatLine
|
||||
}
|
||||
|
||||
return returnVal
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user