blob: 5c95e952ee9b52c6eae8a6cab00965eab31f5eae (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
|
// SPDX-License-Identifier: GPL-3.0-or-later
package mongo
import "time"
// https://www.mongodb.com/docs/manual/reference/command/serverStatus
type documentServerStatus struct {
Process string `bson:"process"` // mongod|mongos
OpCounters documentOpCounters `bson:"opcounters" stm:"operations"`
OpLatencies *documentOpLatencies `bson:"opLatencies" stm:"operations_latencies"` // mongod only
Connections documentConnections `bson:"connections" stm:"connections"`
Network documentNetwork `bson:"network" stm:"network"`
Memory documentMemory `bson:"mem" stm:"memory"`
Metrics documentMetrics `bson:"metrics" stm:"metrics"`
ExtraInfo documentExtraInfo `bson:"extra_info" stm:"extra_info"`
Asserts documentAsserts `bson:"asserts" stm:"asserts"`
Transactions *documentTransactions `bson:"transactions" stm:"txn"` // mongod in 3.6.3+ and on mongos in 4.2+
GlobalLock *documentGlobalLock `bson:"globalLock" stm:"global_lock"`
Tcmalloc *documentTCMallocStatus `bson:"tcmalloc" stm:"tcmalloc"`
Locks *documentLocks `bson:"locks" stm:"locks"`
WiredTiger *documentWiredTiger `bson:"wiredTiger" stm:"wiredtiger"`
Repl interface{} `bson:"repl"`
}
type (
// https://www.mongodb.com/docs/manual/reference/command/serverStatus/#opcounters
documentOpCounters struct {
Insert int64 `bson:"insert" stm:"insert"`
Query int64 `bson:"query" stm:"query"`
Update int64 `bson:"update" stm:"update"`
Delete int64 `bson:"delete" stm:"delete"`
GetMore int64 `bson:"getmore" stm:"getmore"`
Command int64 `bson:"command" stm:"command"`
}
// https://www.mongodb.com/docs/manual/reference/command/serverStatus/#oplatencies
documentOpLatencies struct {
Reads documentLatencyStats `bson:"reads" stm:"reads"`
Writes documentLatencyStats `bson:"writes" stm:"writes"`
Commands documentLatencyStats `bson:"commands" stm:"commands"`
}
// https://www.mongodb.com/docs/manual/reference/operator/aggregation/collStats/#latencystats-document
documentLatencyStats struct {
Latency int64 `bson:"latency" stm:"latency"`
Ops int64 `bson:"ops" stm:"ops"`
}
// https://www.mongodb.com/docs/manual/reference/command/serverStatus/#connections
documentConnections struct {
Current int64 `bson:"current" stm:"current"`
Available int64 `bson:"available" stm:"available"`
TotalCreated int64 `bson:"totalCreated" stm:"total_created"`
Active *int64 `bson:"active" stm:"active"`
Threaded *int64 `bson:"threaded" stm:"threaded"`
ExhaustIsMaster *int64 `bson:"exhaustIsMaster" stm:"exhaust_is_master"`
ExhaustHello *int64 `bson:"exhaustHello" stm:"exhaust_hello"`
AwaitingTopologyChanges *int64 `bson:"awaitingTopologyChanges" stm:"awaiting_topology_changes"`
}
// https://www.mongodb.com/docs/manual/reference/command/serverStatus/#network
documentNetwork struct {
BytesIn int64 `bson:"bytesIn" stm:"bytes_in"`
BytesOut int64 `bson:"bytesOut" stm:"bytes_out"`
NumRequests int64 `bson:"numRequests" stm:"requests"`
NumSlowDNSOperations *int64 `bson:"numSlowDNSOperations" stm:"slow_dns_operations"` // 4.4+
NumSlowSSLOperations *int64 `bson:"numSlowSSLOperations" stm:"slow_ssl_operations"` // 4.4+
}
// https://www.mongodb.com/docs/manual/reference/command/serverStatus/#mem
documentMemory struct {
Resident int64 `bson:"resident" stm:"resident,1048576,1"`
Virtual int64 `bson:"virtual" stm:"virtual,1048576,1"`
}
// https://www.mongodb.com/docs/manual/reference/command/serverStatus/#extra_info
documentExtraInfo struct {
PageFaults int64 `bson:"page_faults" stm:"page_faults"`
}
// Values:
// - mongodb: https://github.com/mongodb/mongo/blob/54e1be7d98aa154e1676d6d652b4d2d1a1073b07/src/mongo/util/tcmalloc_server_status_section.cpp#L88
// - tcmalloc: https://github.com/google/tcmalloc/blob/927c1433141daa1f0bcf920e6d71bf64795cc2c2/tcmalloc/global_stats.cc#L582
// formattedString:
// - https://github.com/google/tcmalloc/blob/master/docs/stats.md
// - https://github.com/google/tcmalloc/blob/927c1433141daa1f0bcf920e6d71bf64795cc2c2/tcmalloc/global_stats.cc#L208
documentTCMallocStatus struct {
Generic *struct {
CurrentAllocatedBytes int64 `bson:"current_allocated_bytes" stm:"current_allocated_bytes"`
HeapSize int64 `bson:"heap_size" stm:"heap_size"`
} `bson:"generic" stm:"generic"`
Tcmalloc *struct {
PageheapFreeBytes int64 `bson:"pageheap_free_bytes" stm:"pageheap_free_bytes"`
PageheapUnmappedBytes int64 `bson:"pageheap_unmapped_bytes" stm:"pageheap_unmapped_bytes"`
MaxTotalThreadCacheBytes int64 `bson:"max_total_thread_cache_bytes" stm:"max_total_thread_cache_bytes"`
CurrentTotalThreadCacheBytes int64 `bson:"current_total_thread_cache_bytes" stm:"current_total_thread_cache_bytes"`
TotalFreeBytes int64 `bson:"total_free_bytes" stm:"total_free_bytes"`
CentralCacheFreeBytes int64 `bson:"central_cache_free_bytes" stm:"central_cache_free_bytes"`
TransferCacheFreeBytes int64 `bson:"transfer_cache_free_bytes" stm:"transfer_cache_free_bytes"`
ThreadCacheFreeBytes int64 `bson:"thread_cache_free_bytes" stm:"thread_cache_free_bytes"`
AggressiveMemoryDecommit int64 `bson:"aggressive_memory_decommit" stm:"aggressive_memory_decommit"`
PageheapCommittedBytes int64 `bson:"pageheap_committed_bytes" stm:"pageheap_committed_bytes"`
PageheapScavengeBytes int64 `bson:"pageheap_scavenge_bytes" stm:"pageheap_scavenge_bytes"`
PageheapCommitCount int64 `bson:"pageheap_commit_count" stm:"pageheap_commit_count"`
PageheapTotalCommitBytes int64 `bson:"pageheap_total_commit_bytes" stm:"pageheap_total_commit_bytes"`
PageheapDecommitCount int64 `bson:"pageheap_decommit_count" stm:"pageheap_decommit_count"`
PageheapTotalDecommitBytes int64 `bson:"pageheap_total_decommit_bytes" stm:"pageheap_total_decommit_bytes"`
PageheapReserveCount int64 `bson:"pageheap_reserve_count" stm:"pageheap_reserve_count"`
PageheapTotalReserveBytes int64 `bson:"pageheap_total_reserve_bytes" stm:"pageheap_total_reserve_bytes"`
SpinlockTotalDelayNs int64 `bson:"spinlock_total_delay_ns" stm:"spinlock_total_delay_ns"`
} `bson:"tcmalloc" stm:""`
}
// https://www.mongodb.com/docs/manual/reference/command/serverStatus/#metrics
documentMetrics struct {
Cursor struct {
TotalOpened *int64 `bson:"totalOpened" stm:"total_opened"`
TimedOut *int64 `bson:"timedOut" stm:"timed_out"`
Open struct {
NoTimeout *int64 `bson:"noTimeout" stm:"no_timeout"`
Total *int64 `bson:"total" stm:"total"`
} `bson:"open" stm:"open"`
Lifespan *struct {
GreaterThanOrEqual10Minutes int64 `bson:"greaterThanOrEqual10Minutes" stm:"greater_than_or_equal_10_minutes"`
LessThan10Minutes int64 `bson:"lessThan10Minutes" stm:"less_than_10_minutes"`
LessThan15Seconds int64 `bson:"lessThan15Seconds" stm:"less_than_15_seconds"`
LessThan1Minute int64 `bson:"lessThan1Minute" stm:"less_than_1_minute"`
LessThan1Second int64 `bson:"lessThan1Second" stm:"less_than_1_second"`
LessThan30Seconds int64 `bson:"lessThan30Seconds" stm:"less_than_30_seconds"`
LessThan5Seconds int64 `bson:"lessThan5Seconds" stm:"less_than_5_seconds"`
} `bson:"lifespan" stm:"lifespan"`
} `bson:"cursor" stm:"cursor"`
Document struct {
Deleted int64 `bson:"deleted" stm:"deleted"`
Inserted int64 `bson:"inserted" stm:"inserted"`
Returned int64 `bson:"returned" stm:"returned"`
Updated int64 `bson:"updated" stm:"updated"`
} `bson:"document" stm:"document"`
QueryExecutor struct {
Scanned int64 `bson:"scanned" stm:"scanned"`
ScannedObjects int64 `bson:"scannedObjects" stm:"scanned_objects"`
} `bson:"queryExecutor" stm:"query_executor"`
}
// https://www.mongodb.com/docs/manual/reference/command/serverStatus/#asserts
documentAsserts struct {
Regular int64 `bson:"regular" stm:"regular"`
Warning int64 `bson:"warning" stm:"warning"`
Msg int64 `bson:"msg" stm:"msg"`
User int64 `bson:"user" stm:"user"`
Tripwire int64 `bson:"tripwire" stm:"tripwire"`
Rollovers int64 `bson:"rollovers" stm:"rollovers"`
}
// https://www.mongodb.com/docs/manual/reference/command/serverStatus/#transactions
documentTransactions struct {
CurrentActive *int64 `bson:"currentActive" stm:"active"` // mongod in 4.0.2+ and mongos in 4.2.1+
CurrentInactive *int64 `bson:"currentInactive" stm:"inactive"` // mongod in 4.0.2+ and mongos in 4.2.1+
CurrentOpen *int64 `bson:"currentOpen" stm:"open"` // mongod in 4.0.2+ and mongos in 4.2.1+
CurrentPrepared *int64 `bson:"currentPrepared" stm:"prepared"` // 4.2+ mongod only
TotalAborted *int64 `bson:"totalAborted" stm:"total_aborted"` // mongod in 4.0.2+ and mongos in 4.2+
TotalCommitted *int64 `bson:"totalCommitted" stm:"total_committed"` // mongod in 4.0.2+ and mongos in 4.2+
TotalStarted *int64 `bson:"totalStarted" stm:"total_started"` // mongod in 4.0.2+ and mongos in 4.2+
TotalPrepared *int64 `bson:"totalPrepared" stm:"total_prepared"` // mongod in 4.0.2+ and mongos in 4.2+
CommitTypes *documentTransactionsCommitTypes `bson:"commitTypes" stm:"commit_types"` // mongos only
}
// https://www.mongodb.com/docs/manual/reference/command/serverStatus/#mongodb-serverstatus-serverstatus.transactions.commitTypes
documentTransactionsCommitTypes struct {
NoShards documentTransactionsCommitType `bson:"noShards" stm:"no_shards"`
SingleShard documentTransactionsCommitType `bson:"singleShard" stm:"single_shard"`
SingleWriteShard documentTransactionsCommitType `bson:"singleWriteShard" stm:"single_write_shard"`
ReadOnly documentTransactionsCommitType `bson:"readOnly" stm:"read_only"`
TwoPhaseCommit documentTransactionsCommitType `bson:"twoPhaseCommit" stm:"two_phase_commit"`
RecoverWithToken documentTransactionsCommitType `bson:"recoverWithToken" stm:"recover_with_token"`
}
documentTransactionsCommitType struct {
Initiated int64 `json:"initiated" stm:"initiated"`
Successful int64 `json:"successful" stm:"successful"`
SuccessfulDurationMicros int64 `json:"successfulDurationMicros" stm:"successful_duration_micros"`
}
// https://www.mongodb.com/docs/manual/reference/command/serverStatus/#globallock
documentGlobalLock struct {
CurrentQueue *struct {
Readers int64 `bson:"readers" stm:"readers"`
Writers int64 `bson:"writers" stm:"writers"`
} `bson:"currentQueue" stm:"current_queue"`
ActiveClients *struct {
Readers int64 `bson:"readers" stm:"readers"`
Writers int64 `bson:"writers" stm:"writers"`
} `bson:"activeClients" stm:"active_clients"`
}
// https://www.mongodb.com/docs/manual/reference/command/serverStatus/#mongodb-serverstatus-serverstatus.locks
documentLocks struct {
Global *documentLockType `bson:"Global" stm:"global"`
Database *documentLockType `bson:"Database" stm:"database"`
Collection *documentLockType `bson:"Collection" stm:"collection"`
Mutex *documentLockType `bson:"Mutex" stm:"mutex"`
Metadata *documentLockType `bson:"Metadata" stm:"metadata"`
Oplog *documentLockType `bson:"oplog" stm:"oplog"`
}
documentLockType struct {
AcquireCount documentLockModes `bson:"acquireCount" stm:"acquire"`
}
documentLockModes struct {
Shared int64 `bson:"R" stm:"shared"`
Exclusive int64 `bson:"W" stm:"exclusive"`
IntentShared int64 `bson:"r" stm:"intent_shared"`
IntentExclusive int64 `bson:"w" stm:"intent_exclusive"`
}
// https://www.mongodb.com/docs/manual/reference/command/serverStatus/#wiredtiger
documentWiredTiger struct {
ConcurrentTransaction struct {
Write struct {
Out int `bson:"out" stm:"out"`
Available int `bson:"available" stm:"available"`
} `bson:"write" stm:"write"`
Read struct {
Out int `bson:"out" stm:"out"`
Available int `bson:"available" stm:"available"`
} `bson:"read" stm:"read"`
} `bson:"concurrentTransactions" stm:"concurrent_txn"`
Cache struct {
BytesCurrentlyInCache int `bson:"bytes currently in the cache" stm:"currently_in_cache_bytes"`
MaximumBytesConfigured int `bson:"maximum bytes configured" stm:"maximum_configured_bytes"`
TrackedDirtyBytesInCache int `bson:"tracked dirty bytes in the cache" stm:"tracked_dirty_in_the_cache_bytes"`
UnmodifiedPagesEvicted int `bson:"unmodified pages evicted" stm:"unmodified_evicted_pages"`
ModifiedPagesEvicted int `bson:"modified pages evicted" stm:"modified_evicted_pages"`
PagesReadIntoCache int `bson:"pages read into cache" stm:"read_into_cache_pages"`
PagesWrittenFromCache int `bson:"pages written from cache" stm:"written_from_cache_pages"`
} `bson:"cache" stm:"cache"`
}
)
// https://www.mongodb.com/docs/manual/reference/command/dbStats/
type documentDBStats struct {
Collections int64 `bson:"collections"`
Views int64 `bson:"views"`
Indexes int64 `bson:"indexes"`
Objects int64 `bson:"objects"`
DataSize int64 `bson:"dataSize"`
IndexSize int64 `bson:"indexSize"`
StorageSize int64 `bson:"storageSize"`
}
// https://www.mongodb.com/docs/manual/reference/command/replSetGetStatus/
type documentReplSetStatus struct {
Date time.Time `bson:"date"`
Members []documentReplSetMember `bson:"members"`
}
type (
documentReplSetMember struct {
Name string `bson:"name"`
Self *bool `bson:"self"`
State int `bson:"state"`
Health int `bson:"health"`
OptimeDate time.Time `bson:"optimeDate"`
LastHeartbeat *time.Time `bson:"lastHeartbeat"`
LastHeartbeatRecv *time.Time `bson:"lastHeartbeatRecv"`
PingMs *int64 `bson:"pingMs"`
Uptime int64 `bson:"uptime"`
}
)
type documentAggrResults struct {
Bool bool `bson:"_id"`
Count int64 `bson:"count"`
}
type (
documentAggrResult struct {
True int64
False int64
}
)
type documentPartitionedResult struct {
Partitioned int64
UnPartitioned int64
}
type documentShardNodesResult struct {
ShardAware int64
ShardUnaware int64
}
|