| 1 | // SPDX-License-Identifier: GPL-3.0-or-later |
| 2 | |
| 3 | package mongo |
| 4 | |
| 5 | import ( |
| 6 | "github.com/netdata/netdata/go/plugins/plugin/framework/collectorapi" |
| 7 | ) |
| 8 | |
| 9 | const ( |
| 10 | prioOperationsRate = collectorapi.Priority + iota |
| 11 | prioOperationsLatencyTime |
| 12 | prioOperationsByTypeRate |
| 13 | prioDocumentOperationsRate |
| 14 | prioScannedIndexesRate |
| 15 | prioScannedDocumentsRate |
| 16 | |
| 17 | prioActiveClientsCount |
| 18 | prioQueuedOperationsCount |
| 19 | |
| 20 | prioGlobalLockAcquisitionsRate |
| 21 | prioDatabaseLockAcquisitionsRate |
| 22 | prioCollectionLockAcquisitionsRate |
| 23 | prioMutexLockAcquisitionsRate |
| 24 | prioMetadataLockAcquisitionsRate |
| 25 | prioOpLogLockAcquisitionsRate |
| 26 | |
| 27 | prioCursorsOpenCount |
| 28 | prioCursorsOpenNoTimeoutCount |
| 29 | prioCursorsOpenedRate |
| 30 | prioTimedOutCursorsRate |
| 31 | prioCursorsByLifespanCount |
| 32 | |
| 33 | prioTransactionsCount |
| 34 | prioTransactionsRate |
| 35 | prioTransactionsNoShardsCommitsRate |
| 36 | prioTransactionsNoShardsCommitsDurationTime |
| 37 | prioTransactionsSingleShardCommitsRate |
| 38 | prioTransactionsSingleShardCommitsDurationTime |
| 39 | prioTransactionsSingleWriteShardCommitsRate |
| 40 | prioTransactionsSingleWriteShardCommitsDurationTime |
| 41 | prioTransactionsReadOnlyCommitsRate |
| 42 | prioTransactionsReadOnlyCommitsDurationTime |
| 43 | prioTransactionsTwoPhaseCommitCommitsRate |
| 44 | prioTransactionsTwoPhaseCommitCommitsDurationTime |
| 45 | prioTransactionsRecoverWithTokenCommitsRate |
| 46 | prioTransactionsRecoverWithTokenCommitsDurationTime |
| 47 | |
| 48 | prioConnectionsUsage |
| 49 | prioConnectionsByStateCount |
| 50 | prioConnectionsRate |
| 51 | |
| 52 | prioAssertsRate |
| 53 | |
| 54 | prioNetworkTrafficRate |
| 55 | prioNetworkRequestsRate |
| 56 | prioNetworkSlowDNSResolutionsRate |
| 57 | prioNetworkSlowSSLHandshakesRate |
| 58 | |
| 59 | prioMemoryResidentSize |
| 60 | prioMemoryVirtualSize |
| 61 | prioMemoryPageFaultsRate |
| 62 | prioMemoryTCMallocStats |
| 63 | |
| 64 | prioWiredTigerConcurrentReadTransactionsUsage |
| 65 | prioWiredTigerConcurrentWriteTransactionsUsage |
| 66 | prioWiredTigerCacheUsage |
| 67 | prioWiredTigerCacheDirtySpaceSize |
| 68 | prioWiredTigerCacheIORate |
| 69 | prioWiredTigerCacheEvictionsRate |
| 70 | |
| 71 | prioDatabaseCollectionsCount |
| 72 | prioDatabaseIndexesCount |
| 73 | prioDatabaseViewsCount |
| 74 | prioDatabaseDocumentsCount |
| 75 | prioDatabaseDataSize |
| 76 | prioDatabaseStorageSize |
| 77 | prioDatabaseIndexSize |
| 78 | |
| 79 | prioReplSetMemberState |
| 80 | prioReplSetMemberHealthStatus |
| 81 | prioReplSetMemberReplicationLagTime |
| 82 | prioReplSetMemberHeartbeatLatencyTime |
| 83 | prioReplSetMemberPingRTTTime |
| 84 | prioReplSetMemberUptime |
| 85 | |
| 86 | prioShardingNodesCount |
| 87 | prioShardingShardedDatabasesCount |
| 88 | prioShardingShardedCollectionsCount |
| 89 | prioShardChunks |
| 90 | ) |
| 91 | |
| 92 | const ( |
| 93 | chartPxDatabase = "database_" |
| 94 | chartPxReplSetMember = "replica_set_member_" |
| 95 | chartPxShard = "sharding_shard_" |
| 96 | ) |
| 97 | |
| 98 | // these charts are expected to be available in many versions |
| 99 | var chartsServerStatus = collectorapi.Charts{ |
| 100 | chartOperationsByTypeRate.Copy(), |
| 101 | chartDocumentOperationsRate.Copy(), |
| 102 | chartScannedIndexesRate.Copy(), |
| 103 | chartScannedDocumentsRate.Copy(), |
| 104 | |
| 105 | chartConnectionsUsage.Copy(), |
| 106 | chartConnectionsByStateCount.Copy(), |
| 107 | chartConnectionsRate.Copy(), |
| 108 | |
| 109 | chartNetworkTrafficRate.Copy(), |
| 110 | chartNetworkRequestsRate.Copy(), |
| 111 | |
| 112 | chartMemoryResidentSize.Copy(), |
| 113 | chartMemoryVirtualSize.Copy(), |
| 114 | chartMemoryPageFaultsRate.Copy(), |
| 115 | |
| 116 | chartAssertsRate.Copy(), |
| 117 | } |
| 118 | |
| 119 | var chartsTmplDatabase = collectorapi.Charts{ |
| 120 | chartTmplDatabaseCollectionsCount.Copy(), |
| 121 | chartTmplDatabaseIndexesCount.Copy(), |
| 122 | chartTmplDatabaseViewsCount.Copy(), |
| 123 | chartTmplDatabaseDocumentsCount.Copy(), |
| 124 | chartTmplDatabaseDataSize.Copy(), |
| 125 | chartTmplDatabaseStorageSize.Copy(), |
| 126 | chartTmplDatabaseIndexSize.Copy(), |
| 127 | } |
| 128 | |
| 129 | var chartsTmplReplSetMember = collectorapi.Charts{ |
| 130 | chartTmplReplSetMemberState.Copy(), |
| 131 | chartTmplReplSetMemberHealthStatus.Copy(), |
| 132 | chartTmplReplSetMemberReplicationLagTime.Copy(), |
| 133 | chartTmplReplSetMemberHeartbeatLatencyTime.Copy(), |
| 134 | chartTmplReplSetMemberPingRTTTime.Copy(), |
| 135 | chartTmplReplSetMemberUptime.Copy(), |
| 136 | } |
| 137 | |
| 138 | var chartsSharding = collectorapi.Charts{ |
| 139 | chartShardingNodesCount.Copy(), |
| 140 | chartShardingShardedDatabases.Copy(), |
| 141 | chartShardingShardedCollectionsCount.Copy(), |
| 142 | } |
| 143 | |
| 144 | var chartsTmplShardingShard = collectorapi.Charts{ |
| 145 | chartTmplShardChunks.Copy(), |
| 146 | } |
| 147 | |
| 148 | var ( |
| 149 | chartOperationsRate = collectorapi.Chart{ |
| 150 | ID: "operations_rate", |
| 151 | Title: "Operations rate", |
| 152 | Units: "operations/s", |
| 153 | Fam: "operations", |
| 154 | Ctx: "mongodb.operations_rate", |
| 155 | Priority: prioOperationsRate, |
| 156 | Dims: collectorapi.Dims{ |
| 157 | {ID: "operations_latencies_reads_ops", Name: "reads", Algo: collectorapi.Incremental}, |
| 158 | {ID: "operations_latencies_writes_ops", Name: "writes", Algo: collectorapi.Incremental}, |
| 159 | {ID: "operations_latencies_commands_ops", Name: "commands", Algo: collectorapi.Incremental}, |
| 160 | }, |
| 161 | } |
| 162 | chartOperationsLatencyTime = collectorapi.Chart{ |
| 163 | ID: "operations_latency_time", |
| 164 | Title: "Operations Latency", |
| 165 | Units: "milliseconds", |
| 166 | Fam: "operations", |
| 167 | Ctx: "mongodb.operations_latency_time", |
| 168 | Priority: prioOperationsLatencyTime, |
| 169 | Dims: collectorapi.Dims{ |
| 170 | {ID: "operations_latencies_reads_latency", Name: "reads", Algo: collectorapi.Incremental, Div: 1000}, |
| 171 | {ID: "operations_latencies_writes_latency", Name: "writes", Algo: collectorapi.Incremental, Div: 1000}, |
| 172 | {ID: "operations_latencies_commands_latency", Name: "commands", Algo: collectorapi.Incremental, Div: 1000}, |
| 173 | }, |
| 174 | } |
| 175 | chartOperationsByTypeRate = collectorapi.Chart{ |
| 176 | ID: "operations_by_type_rate", |
| 177 | Title: "Operations by type", |
| 178 | Units: "operations/s", |
| 179 | Fam: "operations", |
| 180 | Ctx: "mongodb.operations_by_type_rate", |
| 181 | Priority: prioOperationsByTypeRate, |
| 182 | Dims: collectorapi.Dims{ |
| 183 | {ID: "operations_insert", Name: "insert", Algo: collectorapi.Incremental}, |
| 184 | {ID: "operations_query", Name: "query", Algo: collectorapi.Incremental}, |
| 185 | {ID: "operations_update", Name: "update", Algo: collectorapi.Incremental}, |
| 186 | {ID: "operations_delete", Name: "delete", Algo: collectorapi.Incremental}, |
| 187 | {ID: "operations_getmore", Name: "getmore", Algo: collectorapi.Incremental}, |
| 188 | {ID: "operations_command", Name: "command", Algo: collectorapi.Incremental}, |
| 189 | }, |
| 190 | } |
| 191 | chartDocumentOperationsRate = collectorapi.Chart{ |
| 192 | ID: "document_operations_rate", |
| 193 | Title: "Document operations", |
| 194 | Units: "operations/s", |
| 195 | Fam: "operations", |
| 196 | Ctx: "mongodb.document_operations_rate", |
| 197 | Type: collectorapi.Stacked, |
| 198 | Priority: prioDocumentOperationsRate, |
| 199 | Dims: collectorapi.Dims{ |
| 200 | {ID: "metrics_document_inserted", Name: "inserted", Algo: collectorapi.Incremental}, |
| 201 | {ID: "metrics_document_deleted", Name: "deleted", Algo: collectorapi.Incremental}, |
| 202 | {ID: "metrics_document_returned", Name: "returned", Algo: collectorapi.Incremental}, |
| 203 | {ID: "metrics_document_updated", Name: "updated", Algo: collectorapi.Incremental}, |
| 204 | }, |
| 205 | } |
| 206 | chartScannedIndexesRate = collectorapi.Chart{ |
| 207 | ID: "scanned_indexes_rate", |
| 208 | Title: "Scanned indexes", |
| 209 | Units: "indexes/s", |
| 210 | Fam: "operations", |
| 211 | Ctx: "mongodb.scanned_indexes_rate", |
| 212 | Priority: prioScannedIndexesRate, |
| 213 | Dims: collectorapi.Dims{ |
| 214 | {ID: "metrics_query_executor_scanned", Name: "scanned", Algo: collectorapi.Incremental}, |
| 215 | }, |
| 216 | } |
| 217 | chartScannedDocumentsRate = collectorapi.Chart{ |
| 218 | ID: "scanned_documents_rate", |
| 219 | Title: "Scanned documents", |
| 220 | Units: "documents/s", |
| 221 | Fam: "operations", |
| 222 | Ctx: "mongodb.scanned_documents_rate", |
| 223 | Priority: prioScannedDocumentsRate, |
| 224 | Dims: collectorapi.Dims{ |
| 225 | {ID: "metrics_query_executor_scanned_objects", Name: "scanned", Algo: collectorapi.Incremental}, |
| 226 | }, |
| 227 | } |
| 228 | |
| 229 | chartGlobalLockActiveClientsCount = collectorapi.Chart{ |
| 230 | ID: "active_clients_count", |
| 231 | Title: "Connected clients", |
| 232 | Units: "clients", |
| 233 | Fam: "clients", |
| 234 | Ctx: "mongodb.active_clients_count", |
| 235 | Priority: prioActiveClientsCount, |
| 236 | Dims: collectorapi.Dims{ |
| 237 | {ID: "global_lock_active_clients_readers", Name: "readers"}, |
| 238 | {ID: "global_lock_active_clients_writers", Name: "writers"}, |
| 239 | }, |
| 240 | } |
| 241 | chartGlobalLockCurrentQueueCount = collectorapi.Chart{ |
| 242 | ID: "queued_operations", |
| 243 | Title: "Queued operations because of a lock", |
| 244 | Units: "operations", |
| 245 | Fam: "clients", |
| 246 | Ctx: "mongodb.queued_operations_count", |
| 247 | Priority: prioQueuedOperationsCount, |
| 248 | Dims: collectorapi.Dims{ |
| 249 | {ID: "global_lock_current_queue_readers", Name: "readers"}, |
| 250 | {ID: "global_lock_current_queue_writers", Name: "writers"}, |
| 251 | }, |
| 252 | } |
| 253 | |
| 254 | chartConnectionsUsage = collectorapi.Chart{ |
| 255 | ID: "connections_usage", |
| 256 | Title: "Connections usage", |
| 257 | Units: "connections", |
| 258 | Fam: "connections", |
| 259 | Ctx: "mongodb.connections_usage", |
| 260 | Type: collectorapi.Stacked, |
| 261 | Priority: prioConnectionsUsage, |
| 262 | Dims: collectorapi.Dims{ |
| 263 | {ID: "connections_available", Name: "available"}, |
| 264 | {ID: "connections_current", Name: "used"}, |
| 265 | }, |
| 266 | } |
| 267 | chartConnectionsByStateCount = collectorapi.Chart{ |
| 268 | ID: "connections_by_state_count", |
| 269 | Title: "Connections By State", |
| 270 | Units: "connections", |
| 271 | Fam: "connections", |
| 272 | Ctx: "mongodb.connections_by_state_count", |
| 273 | Priority: prioConnectionsByStateCount, |
| 274 | Dims: collectorapi.Dims{ |
| 275 | {ID: "connections_active", Name: "active"}, |
| 276 | {ID: "connections_threaded", Name: "threaded"}, |
| 277 | {ID: "connections_exhaust_is_master", Name: "exhaust_is_master"}, |
| 278 | {ID: "connections_exhaust_hello", Name: "exhaust_hello"}, |
| 279 | {ID: "connections_awaiting_topology_changes", Name: "awaiting_topology_changes"}, |
| 280 | }, |
| 281 | } |
| 282 | chartConnectionsRate = collectorapi.Chart{ |
| 283 | ID: "connections_rate", |
| 284 | Title: "Connections Rate", |
| 285 | Units: "connections/s", |
| 286 | Fam: "connections", |
| 287 | Ctx: "mongodb.connections_rate", |
| 288 | Priority: prioConnectionsRate, |
| 289 | Dims: collectorapi.Dims{ |
| 290 | {ID: "connections_total_created", Name: "created", Algo: collectorapi.Incremental}, |
| 291 | }, |
| 292 | } |
| 293 | |
| 294 | chartNetworkTrafficRate = collectorapi.Chart{ |
| 295 | ID: "network_traffic", |
| 296 | Title: "Network traffic", |
| 297 | Units: "bytes/s", |
| 298 | Fam: "network", |
| 299 | Ctx: "mongodb.network_traffic_rate", |
| 300 | Priority: prioNetworkTrafficRate, |
| 301 | Type: collectorapi.Area, |
| 302 | Dims: collectorapi.Dims{ |
| 303 | {ID: "network_bytes_in", Name: "in", Algo: collectorapi.Incremental}, |
| 304 | {ID: "network_bytes_out", Name: "out", Algo: collectorapi.Incremental}, |
| 305 | }, |
| 306 | } |
| 307 | chartNetworkRequestsRate = collectorapi.Chart{ |
| 308 | ID: "network_requests_rate", |
| 309 | Title: "Network Requests", |
| 310 | Units: "requests/s", |
| 311 | Fam: "network", |
| 312 | Ctx: "mongodb.network_requests_rate", |
| 313 | Priority: prioNetworkRequestsRate, |
| 314 | Dims: collectorapi.Dims{ |
| 315 | {ID: "network_requests", Name: "requests", Algo: collectorapi.Incremental}, |
| 316 | }, |
| 317 | } |
| 318 | chartNetworkSlowDNSResolutionsRate = collectorapi.Chart{ |
| 319 | ID: "network_slow_dns_resolutions_rate", |
| 320 | Title: "Slow DNS resolution operations", |
| 321 | Units: "resolutions/s", |
| 322 | Fam: "network", |
| 323 | Ctx: "mongodb.network_slow_dns_resolutions_rate", |
| 324 | Priority: prioNetworkSlowDNSResolutionsRate, |
| 325 | Dims: collectorapi.Dims{ |
| 326 | {ID: "network_slow_dns_operations", Name: "slow_dns", Algo: collectorapi.Incremental}, |
| 327 | }, |
| 328 | } |
| 329 | chartNetworkSlowSSLHandshakesRate = collectorapi.Chart{ |
| 330 | ID: "network_slow_ssl_handshakes_rate", |
| 331 | Title: "Slow SSL handshake operations", |
| 332 | Units: "handshakes/s", |
| 333 | Fam: "network", |
| 334 | Ctx: "mongodb.network_slow_ssl_handshakes_rate", |
| 335 | Priority: prioNetworkSlowSSLHandshakesRate, |
| 336 | Dims: collectorapi.Dims{ |
| 337 | {ID: "network_slow_ssl_operations", Name: "slow_ssl", Algo: collectorapi.Incremental}, |
| 338 | }, |
| 339 | } |
| 340 | |
| 341 | chartMemoryResidentSize = collectorapi.Chart{ |
| 342 | ID: "memory_resident_size", |
| 343 | Title: "Used resident memory", |
| 344 | Units: "bytes", |
| 345 | Fam: "memory", |
| 346 | Ctx: "mongodb.memory_resident_size", |
| 347 | Priority: prioMemoryResidentSize, |
| 348 | Dims: collectorapi.Dims{ |
| 349 | {ID: "memory_resident", Name: "used"}, |
| 350 | }, |
| 351 | } |
| 352 | chartMemoryVirtualSize = collectorapi.Chart{ |
| 353 | ID: "memory_virtual_size", |
| 354 | Title: "Used virtual memory", |
| 355 | Units: "bytes", |
| 356 | Fam: "memory", |
| 357 | Ctx: "mongodb.memory_virtual_size", |
| 358 | Priority: prioMemoryVirtualSize, |
| 359 | Dims: collectorapi.Dims{ |
| 360 | {ID: "memory_virtual", Name: "used"}, |
| 361 | }, |
| 362 | } |
| 363 | chartMemoryPageFaultsRate = collectorapi.Chart{ |
| 364 | ID: "memory_page_faults", |
| 365 | Title: "Memory page faults", |
| 366 | Units: "pgfaults/s", |
| 367 | Fam: "memory", |
| 368 | Ctx: "mongodb.memory_page_faults_rate", |
| 369 | Priority: prioMemoryPageFaultsRate, |
| 370 | Dims: collectorapi.Dims{ |
| 371 | {ID: "extra_info_page_faults", Name: "pgfaults", Algo: collectorapi.Incremental}, |
| 372 | }, |
| 373 | } |
| 374 | chartMemoryTCMallocStatsChart = collectorapi.Chart{ |
| 375 | ID: "memory_tcmalloc_stats", |
| 376 | Title: "TCMalloc statistics", |
| 377 | Units: "bytes", |
| 378 | Fam: "memory", |
| 379 | Ctx: "mongodb.memory_tcmalloc_stats", |
| 380 | Priority: prioMemoryTCMallocStats, |
| 381 | Dims: collectorapi.Dims{ |
| 382 | {ID: "tcmalloc_generic_current_allocated_bytes", Name: "allocated"}, |
| 383 | {ID: "tcmalloc_central_cache_free_bytes", Name: "central_cache_freelist"}, |
| 384 | {ID: "tcmalloc_transfer_cache_free_bytes", Name: "transfer_cache_freelist"}, |
| 385 | {ID: "tcmalloc_thread_cache_free_bytes", Name: "thread_cache_freelists"}, |
| 386 | {ID: "tcmalloc_pageheap_free_bytes", Name: "pageheap_freelist"}, |
| 387 | {ID: "tcmalloc_pageheap_unmapped_bytes", Name: "pageheap_unmapped"}, |
| 388 | }, |
| 389 | } |
| 390 | |
| 391 | chartAssertsRate = collectorapi.Chart{ |
| 392 | ID: "asserts_rate", |
| 393 | Title: "Raised assertions", |
| 394 | Units: "asserts/s", |
| 395 | Fam: "asserts", |
| 396 | Ctx: "mongodb.asserts_rate", |
| 397 | Type: collectorapi.Stacked, |
| 398 | Priority: prioAssertsRate, |
| 399 | Dims: collectorapi.Dims{ |
| 400 | {ID: "asserts_regular", Name: "regular", Algo: collectorapi.Incremental}, |
| 401 | {ID: "asserts_warning", Name: "warning", Algo: collectorapi.Incremental}, |
| 402 | {ID: "asserts_msg", Name: "msg", Algo: collectorapi.Incremental}, |
| 403 | {ID: "asserts_user", Name: "user", Algo: collectorapi.Incremental}, |
| 404 | {ID: "asserts_tripwire", Name: "tripwire", Algo: collectorapi.Incremental}, |
| 405 | {ID: "asserts_rollovers", Name: "rollovers", Algo: collectorapi.Incremental}, |
| 406 | }, |
| 407 | } |
| 408 | |
| 409 | chartTransactionsCount = collectorapi.Chart{ |
| 410 | ID: "transactions_count", |
| 411 | Title: "Current transactions", |
| 412 | Units: "transactions", |
| 413 | Fam: "transactions", |
| 414 | Ctx: "mongodb.transactions_count", |
| 415 | Priority: prioTransactionsCount, |
| 416 | Dims: collectorapi.Dims{ |
| 417 | {ID: "txn_active", Name: "active"}, |
| 418 | {ID: "txn_inactive", Name: "inactive"}, |
| 419 | {ID: "txn_open", Name: "open"}, |
| 420 | {ID: "txn_prepared", Name: "prepared"}, |
| 421 | }, |
| 422 | } |
| 423 | chartTransactionsRate = collectorapi.Chart{ |
| 424 | ID: "transactions_rate", |
| 425 | Title: "Transactions rate", |
| 426 | Units: "transactions/s", |
| 427 | Fam: "transactions", |
| 428 | Ctx: "mongodb.transactions_rate", |
| 429 | Priority: prioTransactionsRate, |
| 430 | Dims: collectorapi.Dims{ |
| 431 | {ID: "txn_total_started", Name: "started", Algo: collectorapi.Incremental}, |
| 432 | {ID: "txn_total_aborted", Name: "aborted", Algo: collectorapi.Incremental}, |
| 433 | {ID: "txn_total_committed", Name: "committed", Algo: collectorapi.Incremental}, |
| 434 | {ID: "txn_total_prepared", Name: "prepared", Algo: collectorapi.Incremental}, |
| 435 | }, |
| 436 | } |
| 437 | chartTransactionsNoShardsCommitsRate = collectorapi.Chart{ |
| 438 | ID: "transactions_no_shards_commits_rate", |
| 439 | Title: "Transactions commits", |
| 440 | Units: "commits/s", |
| 441 | Fam: "transactions", |
| 442 | Ctx: "mongodb.transactions_commits_rate", |
| 443 | Priority: prioTransactionsNoShardsCommitsRate, |
| 444 | Type: collectorapi.Stacked, |
| 445 | Labels: []collectorapi.Label{{Key: "commit_type", Value: "noShards"}}, |
| 446 | Dims: collectorapi.Dims{ |
| 447 | {ID: "txn_commit_types_no_shards_successful", Name: "success", Algo: collectorapi.Incremental}, |
| 448 | {ID: "txn_commit_types_no_shards_unsuccessful", Name: "fail", Algo: collectorapi.Incremental}, |
| 449 | }, |
| 450 | } |
| 451 | chartTransactionsNoShardsCommitsDurationTime = collectorapi.Chart{ |
| 452 | ID: "transactions_no_shards_commits_duration_time", |
| 453 | Title: "Transactions successful commits duration", |
| 454 | Units: "milliseconds", |
| 455 | Fam: "transactions", |
| 456 | Ctx: "mongodb.transactions_commits_duration_time", |
| 457 | Priority: prioTransactionsNoShardsCommitsDurationTime, |
| 458 | Labels: []collectorapi.Label{{Key: "commit_type", Value: "noShards"}}, |
| 459 | Dims: collectorapi.Dims{ |
| 460 | {ID: "txn_commit_types_no_shards_successful_duration_micros", Name: "commits", Algo: collectorapi.Incremental, Div: 1000}, |
| 461 | }, |
| 462 | } |
| 463 | chartTransactionsSingleShardCommitsRate = collectorapi.Chart{ |
| 464 | ID: "transactions_single_shard_commits_rate", |
| 465 | Title: "Transactions commits", |
| 466 | Units: "commits/s", |
| 467 | Fam: "transactions", |
| 468 | Ctx: "mongodb.transactions_commits_rate", |
| 469 | Priority: prioTransactionsSingleShardCommitsRate, |
| 470 | Type: collectorapi.Stacked, |
| 471 | Labels: []collectorapi.Label{{Key: "commit_type", Value: "singleShard"}}, |
| 472 | Dims: collectorapi.Dims{ |
| 473 | {ID: "txn_commit_types_single_shard_successful", Name: "success", Algo: collectorapi.Incremental}, |
| 474 | {ID: "txn_commit_types_single_shard_unsuccessful", Name: "fail", Algo: collectorapi.Incremental}, |
| 475 | }, |
| 476 | } |
| 477 | chartTransactionsSingleShardCommitsDurationTime = collectorapi.Chart{ |
| 478 | ID: "transactions_single_shard_commits_duration_time", |
| 479 | Title: "Transactions successful commits duration", |
| 480 | Units: "milliseconds", |
| 481 | Fam: "transactions", |
| 482 | Ctx: "mongodb.transactions_commits_duration_time", |
| 483 | Priority: prioTransactionsSingleShardCommitsDurationTime, |
| 484 | Labels: []collectorapi.Label{{Key: "commit_type", Value: "singleShard"}}, |
| 485 | Dims: collectorapi.Dims{ |
| 486 | {ID: "txn_commit_types_single_shard_successful_duration_micros", Name: "commits", Algo: collectorapi.Incremental, Div: 1000}, |
| 487 | }, |
| 488 | } |
| 489 | chartTransactionsSingleWriteShardCommitsRate = collectorapi.Chart{ |
| 490 | ID: "transactions_single_write_shard_commits_rate", |
| 491 | Title: "Transactions commits", |
| 492 | Units: "commits/s", |
| 493 | Fam: "transactions", |
| 494 | Ctx: "mongodb.transactions_commits_rate", |
| 495 | Priority: prioTransactionsSingleWriteShardCommitsRate, |
| 496 | Type: collectorapi.Stacked, |
| 497 | Labels: []collectorapi.Label{{Key: "commit_type", Value: "singleWriteShard"}}, |
| 498 | Dims: collectorapi.Dims{ |
| 499 | {ID: "txn_commit_types_single_write_shard_successful", Name: "success", Algo: collectorapi.Incremental}, |
| 500 | {ID: "txn_commit_types_single_write_shard_unsuccessful", Name: "fail", Algo: collectorapi.Incremental}, |
| 501 | }, |
| 502 | } |
| 503 | chartTransactionsSingleWriteShardCommitsDurationTime = collectorapi.Chart{ |
| 504 | ID: "transactions_single_write_shard_commits_duration_time", |
| 505 | Title: "Transactions successful commits duration", |
| 506 | Units: "milliseconds", |
| 507 | Fam: "transactions", |
| 508 | Ctx: "mongodb.transactions_commits_duration_time", |
| 509 | Priority: prioTransactionsSingleWriteShardCommitsDurationTime, |
| 510 | Labels: []collectorapi.Label{{Key: "commit_type", Value: "singleWriteShard"}}, |
| 511 | Dims: collectorapi.Dims{ |
| 512 | {ID: "txn_commit_types_single_write_shard_successful_duration_micros", Name: "commits", Algo: collectorapi.Incremental, Div: 1000}, |
| 513 | }, |
| 514 | } |
| 515 | chartTransactionsReadOnlyCommitsRate = collectorapi.Chart{ |
| 516 | ID: "transactions_read_only_commits_rate", |
| 517 | Title: "Transactions commits", |
| 518 | Units: "commits/s", |
| 519 | Fam: "transactions", |
| 520 | Ctx: "mongodb.transactions_commits_rate", |
| 521 | Priority: prioTransactionsReadOnlyCommitsRate, |
| 522 | Type: collectorapi.Stacked, |
| 523 | Labels: []collectorapi.Label{{Key: "commit_type", Value: "readOnly"}}, |
| 524 | Dims: collectorapi.Dims{ |
| 525 | {ID: "txn_commit_types_read_only_successful", Name: "success", Algo: collectorapi.Incremental}, |
| 526 | {ID: "txn_commit_types_read_only_unsuccessful", Name: "fail", Algo: collectorapi.Incremental}, |
| 527 | }, |
| 528 | } |
| 529 | chartTransactionsReadOnlyCommitsDurationTime = collectorapi.Chart{ |
| 530 | ID: "transactions_read_only_commits_duration_time", |
| 531 | Title: "Transactions successful commits duration", |
| 532 | Units: "milliseconds", |
| 533 | Fam: "transactions", |
| 534 | Ctx: "mongodb.transactions_commits_duration_time", |
| 535 | Priority: prioTransactionsReadOnlyCommitsDurationTime, |
| 536 | Labels: []collectorapi.Label{{Key: "commit_type", Value: "readOnly"}}, |
| 537 | Dims: collectorapi.Dims{ |
| 538 | {ID: "txn_commit_types_read_only_successful_duration_micros", Name: "commits", Algo: collectorapi.Incremental, Div: 1000}, |
| 539 | }, |
| 540 | } |
| 541 | chartTransactionsTwoPhaseCommitCommitsRate = collectorapi.Chart{ |
| 542 | ID: "transactions_two_phase_commit_commits_rate", |
| 543 | Title: "Transactions commits", |
| 544 | Units: "commits/s", |
| 545 | Fam: "transactions", |
| 546 | Ctx: "mongodb.transactions_commits_rate", |
| 547 | Priority: prioTransactionsTwoPhaseCommitCommitsRate, |
| 548 | Type: collectorapi.Stacked, |
| 549 | Labels: []collectorapi.Label{{Key: "commit_type", Value: "twoPhaseCommit"}}, |
| 550 | Dims: collectorapi.Dims{ |
| 551 | {ID: "txn_commit_types_two_phase_commit_successful", Name: "success", Algo: collectorapi.Incremental}, |
| 552 | {ID: "txn_commit_types_two_phase_commit_unsuccessful", Name: "fail", Algo: collectorapi.Incremental}, |
| 553 | }, |
| 554 | } |
| 555 | chartTransactionsTwoPhaseCommitCommitsDurationTime = collectorapi.Chart{ |
| 556 | ID: "transactions_two_phase_commit_commits_duration_time", |
| 557 | Title: "Transactions successful commits duration", |
| 558 | Units: "milliseconds", |
| 559 | Fam: "transactions", |
| 560 | Ctx: "mongodb.transactions_commits_duration_time", |
| 561 | Priority: prioTransactionsTwoPhaseCommitCommitsDurationTime, |
| 562 | Labels: []collectorapi.Label{{Key: "commit_type", Value: "twoPhaseCommit"}}, |
| 563 | Dims: collectorapi.Dims{ |
| 564 | {ID: "txn_commit_types_two_phase_commit_successful_duration_micros", Name: "commits", Algo: collectorapi.Incremental, Div: 1000}, |
| 565 | }, |
| 566 | } |
| 567 | chartTransactionsRecoverWithTokenCommitsRate = collectorapi.Chart{ |
| 568 | ID: "transactions_recover_with_token_commits_rate", |
| 569 | Title: "Transactions commits", |
| 570 | Units: "commits/s", |
| 571 | Fam: "transactions", |
| 572 | Ctx: "mongodb.transactions_commits_rate", |
| 573 | Priority: prioTransactionsRecoverWithTokenCommitsRate, |
| 574 | Type: collectorapi.Stacked, |
| 575 | Labels: []collectorapi.Label{{Key: "commit_type", Value: "recoverWithToken"}}, |
| 576 | Dims: collectorapi.Dims{ |
| 577 | {ID: "txn_commit_types_recover_with_token_successful", Name: "success", Algo: collectorapi.Incremental}, |
| 578 | {ID: "txn_commit_types_recover_with_token_unsuccessful", Name: "fail", Algo: collectorapi.Incremental}, |
| 579 | }, |
| 580 | } |
| 581 | chartTransactionsRecoverWithTokenCommitsDurationTime = collectorapi.Chart{ |
| 582 | ID: "transactions_recover_with_token_commits_duration_time", |
| 583 | Title: "Transactions successful commits duration", |
| 584 | Units: "milliseconds", |
| 585 | Fam: "transactions", |
| 586 | Ctx: "mongodb.transactions_commits_duration_time", |
| 587 | Priority: prioTransactionsRecoverWithTokenCommitsDurationTime, |
| 588 | Labels: []collectorapi.Label{{Key: "commit_type", Value: "recoverWithToken"}}, |
| 589 | Dims: collectorapi.Dims{ |
| 590 | {ID: "txn_commit_types_recover_with_token_successful_duration_micros", Name: "commits", Algo: collectorapi.Incremental, Div: 1000}, |
| 591 | }, |
| 592 | } |
| 593 | |
| 594 | chartGlobalLockAcquisitionsRate = collectorapi.Chart{ |
| 595 | ID: "global_lock_acquisitions_rate", |
| 596 | Title: "Global lock acquisitions", |
| 597 | Units: "acquisitions/s", |
| 598 | Fam: "locks", |
| 599 | Ctx: "mongodb.lock_acquisitions_rate", |
| 600 | Priority: prioGlobalLockAcquisitionsRate, |
| 601 | Labels: []collectorapi.Label{{Key: "lock_type", Value: "global"}}, |
| 602 | Dims: collectorapi.Dims{ |
| 603 | {ID: "locks_global_acquire_shared", Name: "shared", Algo: collectorapi.Incremental}, |
| 604 | {ID: "locks_global_acquire_exclusive", Name: "exclusive", Algo: collectorapi.Incremental}, |
| 605 | {ID: "locks_global_acquire_intent_shared", Name: "intent_shared", Algo: collectorapi.Incremental}, |
| 606 | {ID: "locks_global_acquire_intent_exclusive", Name: "intent_exclusive", Algo: collectorapi.Incremental}, |
| 607 | }, |
| 608 | } |
| 609 | chartDatabaseLockAcquisitionsRate = collectorapi.Chart{ |
| 610 | ID: "database_lock_acquisitions_rate", |
| 611 | Title: "Database lock acquisitions", |
| 612 | Units: "acquisitions/s", |
| 613 | Fam: "locks", |
| 614 | Ctx: "mongodb.lock_acquisitions_rate", |
| 615 | Priority: prioDatabaseLockAcquisitionsRate, |
| 616 | Labels: []collectorapi.Label{{Key: "lock_type", Value: "database"}}, |
| 617 | Dims: collectorapi.Dims{ |
| 618 | {ID: "locks_database_acquire_shared", Name: "shared", Algo: collectorapi.Incremental}, |
| 619 | {ID: "locks_database_acquire_exclusive", Name: "exclusive", Algo: collectorapi.Incremental}, |
| 620 | {ID: "locks_database_acquire_intent_shared", Name: "intent_shared", Algo: collectorapi.Incremental}, |
| 621 | {ID: "locks_database_acquire_intent_exclusive", Name: "intent_exclusive", Algo: collectorapi.Incremental}, |
| 622 | }, |
| 623 | } |
| 624 | chartCollectionLockAcquisitionsRate = collectorapi.Chart{ |
| 625 | ID: "collection_lock_acquisitions_rate", |
| 626 | Title: "Collection lock acquisitions", |
| 627 | Units: "acquisitions/s", |
| 628 | Fam: "locks", |
| 629 | Ctx: "mongodb.lock_acquisitions_rate", |
| 630 | Priority: prioCollectionLockAcquisitionsRate, |
| 631 | Labels: []collectorapi.Label{{Key: "lock_type", Value: "collection"}}, |
| 632 | Dims: collectorapi.Dims{ |
| 633 | {ID: "locks_collection_acquire_shared", Name: "shared", Algo: collectorapi.Incremental}, |
| 634 | {ID: "locks_collection_acquire_exclusive", Name: "exclusive", Algo: collectorapi.Incremental}, |
| 635 | {ID: "locks_collection_acquire_intent_shared", Name: "intent_shared", Algo: collectorapi.Incremental}, |
| 636 | {ID: "locks_collection_acquire_intent_exclusive", Name: "intent_exclusive", Algo: collectorapi.Incremental}, |
| 637 | }, |
| 638 | } |
| 639 | chartMutexLockAcquisitionsRate = collectorapi.Chart{ |
| 640 | ID: "mutex_lock_acquisitions_rate", |
| 641 | Title: "Mutex lock acquisitions", |
| 642 | Units: "acquisitions/s", |
| 643 | Fam: "locks", |
| 644 | Ctx: "mongodb.lock_acquisitions_rate", |
| 645 | Priority: prioMutexLockAcquisitionsRate, |
| 646 | Labels: []collectorapi.Label{{Key: "lock_type", Value: "mutex"}}, |
| 647 | Dims: collectorapi.Dims{ |
| 648 | {ID: "locks_mutex_acquire_shared", Name: "shared", Algo: collectorapi.Incremental}, |
| 649 | {ID: "locks_mutex_acquire_exclusive", Name: "exclusive", Algo: collectorapi.Incremental}, |
| 650 | {ID: "locks_mutex_acquire_intent_shared", Name: "intent_shared", Algo: collectorapi.Incremental}, |
| 651 | {ID: "locks_mutex_acquire_intent_exclusive", Name: "intent_exclusive", Algo: collectorapi.Incremental}, |
| 652 | }, |
| 653 | } |
| 654 | chartMetadataLockAcquisitionsRate = collectorapi.Chart{ |
| 655 | ID: "metadata_lock_acquisitions_rate", |
| 656 | Title: "Metadata lock acquisitions", |
| 657 | Units: "acquisitions/s", |
| 658 | Fam: "locks", |
| 659 | Ctx: "mongodb.lock_acquisitions_rate", |
| 660 | Priority: prioMetadataLockAcquisitionsRate, |
| 661 | Labels: []collectorapi.Label{{Key: "lock_type", Value: "metadata"}}, |
| 662 | Dims: collectorapi.Dims{ |
| 663 | {ID: "locks_metadata_acquire_shared", Name: "shared", Algo: collectorapi.Incremental}, |
| 664 | {ID: "locks_metadata_acquire_exclusive", Name: "exclusive", Algo: collectorapi.Incremental}, |
| 665 | {ID: "locks_metadata_acquire_intent_shared", Name: "intent_shared", Algo: collectorapi.Incremental}, |
| 666 | {ID: "locks_metadata_acquire_intent_exclusive", Name: "intent_exclusive", Algo: collectorapi.Incremental}, |
| 667 | }, |
| 668 | } |
| 669 | chartOpLogLockAcquisitionsRate = collectorapi.Chart{ |
| 670 | ID: "oplog_lock_acquisitions_rate", |
| 671 | Title: "Operations log lock acquisitions", |
| 672 | Units: "acquisitions/s", |
| 673 | Fam: "locks", |
| 674 | Ctx: "mongodb.lock_acquisitions_rate", |
| 675 | Priority: prioOpLogLockAcquisitionsRate, |
| 676 | Labels: []collectorapi.Label{{Key: "lock_type", Value: "oplog"}}, |
| 677 | Dims: collectorapi.Dims{ |
| 678 | {ID: "locks_oplog_acquire_shared", Name: "shared", Algo: collectorapi.Incremental}, |
| 679 | {ID: "locks_oplog_acquire_exclusive", Name: "exclusive", Algo: collectorapi.Incremental}, |
| 680 | {ID: "locks_oplog_acquire_intent_shared", Name: "intent_shared", Algo: collectorapi.Incremental}, |
| 681 | {ID: "locks_oplog_acquire_intent_exclusive", Name: "intent_exclusive", Algo: collectorapi.Incremental}, |
| 682 | }, |
| 683 | } |
| 684 | |
| 685 | chartCursorsOpenCount = collectorapi.Chart{ |
| 686 | ID: "cursors_open_count", |
| 687 | Title: "Open cursors", |
| 688 | Units: "cursors", |
| 689 | Fam: "cursors", |
| 690 | Ctx: "mongodb.cursors_open_count", |
| 691 | Priority: prioCursorsOpenCount, |
| 692 | Dims: collectorapi.Dims{ |
| 693 | {ID: "metrics_cursor_open_total", Name: "open"}, |
| 694 | }, |
| 695 | } |
| 696 | chartCursorsOpenNoTimeoutCount = collectorapi.Chart{ |
| 697 | ID: "cursors_open_no_timeout_count", |
| 698 | Title: "Open cursors with disabled timeout", |
| 699 | Units: "cursors", |
| 700 | Fam: "cursors", |
| 701 | Ctx: "mongodb.cursors_open_no_timeout_count", |
| 702 | Priority: prioCursorsOpenNoTimeoutCount, |
| 703 | Dims: collectorapi.Dims{ |
| 704 | {ID: "metrics_cursor_open_no_timeout", Name: "open_no_timeout"}, |
| 705 | }, |
| 706 | } |
| 707 | chartCursorsOpenedRate = collectorapi.Chart{ |
| 708 | ID: "cursors_opened_rate", |
| 709 | Title: "Opened cursors rate", |
| 710 | Units: "cursors/s", |
| 711 | Fam: "cursors", |
| 712 | Ctx: "mongodb.cursors_opened_rate", |
| 713 | Priority: prioCursorsOpenedRate, |
| 714 | Dims: collectorapi.Dims{ |
| 715 | {ID: "metrics_cursor_total_opened", Name: "opened"}, |
| 716 | }, |
| 717 | } |
| 718 | chartCursorsTimedOutRate = collectorapi.Chart{ |
| 719 | ID: "cursors_timed_out_rate", |
| 720 | Title: "Timed-out cursors", |
| 721 | Units: "cursors/s", |
| 722 | Fam: "cursors", |
| 723 | Ctx: "mongodb.cursors_timed_out_rate", |
| 724 | Priority: prioTimedOutCursorsRate, |
| 725 | Dims: collectorapi.Dims{ |
| 726 | {ID: "metrics_cursor_timed_out", Name: "timed_out"}, |
| 727 | }, |
| 728 | } |
| 729 | chartCursorsByLifespanCount = collectorapi.Chart{ |
| 730 | ID: "cursors_by_lifespan_count", |
| 731 | Title: "Cursors lifespan", |
| 732 | Units: "cursors", |
| 733 | Fam: "cursors", |
| 734 | Ctx: "mongodb.cursors_by_lifespan_count", |
| 735 | Priority: prioCursorsByLifespanCount, |
| 736 | Type: collectorapi.Stacked, |
| 737 | Dims: collectorapi.Dims{ |
| 738 | {ID: "metrics_cursor_lifespan_less_than_1_second", Name: "le_1s"}, |
| 739 | {ID: "metrics_cursor_lifespan_less_than_5_seconds", Name: "1s_5s"}, |
| 740 | {ID: "metrics_cursor_lifespan_less_than_15_seconds", Name: "5s_15s"}, |
| 741 | {ID: "metrics_cursor_lifespan_less_than_30_seconds", Name: "15s_30s"}, |
| 742 | {ID: "metrics_cursor_lifespan_less_than_1_minute", Name: "30s_1m"}, |
| 743 | {ID: "metrics_cursor_lifespan_less_than_10_minutes", Name: "1m_10m"}, |
| 744 | {ID: "metrics_cursor_lifespan_greater_than_or_equal_10_minutes", Name: "ge_10m"}, |
| 745 | }, |
| 746 | } |
| 747 | |
| 748 | chartWiredTigerConcurrentReadTransactionsUsage = collectorapi.Chart{ |
| 749 | ID: "wiredtiger_concurrent_read_transactions_usage", |
| 750 | Title: "Wired Tiger concurrent read transactions usage", |
| 751 | Units: "transactions", |
| 752 | Fam: "wiredtiger", |
| 753 | Ctx: "mongodb.wiredtiger_concurrent_read_transactions_usage", |
| 754 | Priority: prioWiredTigerConcurrentReadTransactionsUsage, |
| 755 | Type: collectorapi.Stacked, |
| 756 | Dims: collectorapi.Dims{ |
| 757 | {ID: "wiredtiger_concurrent_txn_read_available", Name: "available"}, |
| 758 | {ID: "wiredtiger_concurrent_txn_read_out", Name: "used"}, |
| 759 | }, |
| 760 | } |
| 761 | chartWiredTigerConcurrentWriteTransactionsUsage = collectorapi.Chart{ |
| 762 | ID: "wiredtiger_concurrent_write_transactions_usage", |
| 763 | Title: "Wired Tiger concurrent write transactions usage", |
| 764 | Units: "transactions", |
| 765 | Fam: "wiredtiger", |
| 766 | Ctx: "mongodb.wiredtiger_concurrent_write_transactions_usage", |
| 767 | Priority: prioWiredTigerConcurrentWriteTransactionsUsage, |
| 768 | Type: collectorapi.Stacked, |
| 769 | Dims: collectorapi.Dims{ |
| 770 | {ID: "wiredtiger_concurrent_txn_write_available", Name: "available"}, |
| 771 | {ID: "wiredtiger_concurrent_txn_write_out", Name: "used"}, |
| 772 | }, |
| 773 | } |
| 774 | chartWiredTigerCacheUsage = collectorapi.Chart{ |
| 775 | ID: "wiredtiger_cache_usage", |
| 776 | Title: "Wired Tiger cache usage", |
| 777 | Units: "bytes", |
| 778 | Fam: "wiredtiger", |
| 779 | Ctx: "mongodb.wiredtiger_cache_usage", |
| 780 | Priority: prioWiredTigerCacheUsage, |
| 781 | Type: collectorapi.Stacked, |
| 782 | Dims: collectorapi.Dims{ |
| 783 | {ID: "wiredtiger_cache_currently_in_cache_bytes", Name: "used"}, |
| 784 | }, |
| 785 | } |
| 786 | chartWiredTigerCacheDirtySpaceSize = collectorapi.Chart{ |
| 787 | ID: "wiredtiger_cache_dirty_space_size", |
| 788 | Title: "Wired Tiger cache dirty space size", |
| 789 | Units: "bytes", |
| 790 | Fam: "wiredtiger", |
| 791 | Ctx: "mongodb.wiredtiger_cache_dirty_space_size", |
| 792 | Priority: prioWiredTigerCacheDirtySpaceSize, |
| 793 | Dims: collectorapi.Dims{ |
| 794 | {ID: "wiredtiger_cache_tracked_dirty_in_the_cache_bytes", Name: "dirty"}, |
| 795 | }, |
| 796 | } |
| 797 | chartWiredTigerCacheIORate = collectorapi.Chart{ |
| 798 | ID: "wiredtiger_cache_io_rate", |
| 799 | Title: "Wired Tiger IO activity", |
| 800 | Units: "pages/s", |
| 801 | Fam: "wiredtiger", |
| 802 | Ctx: "mongodb.wiredtiger_cache_io_rate", |
| 803 | Priority: prioWiredTigerCacheIORate, |
| 804 | Dims: collectorapi.Dims{ |
| 805 | {ID: "wiredtiger_cache_read_into_cache_pages", Name: "read", Algo: collectorapi.Incremental}, |
| 806 | {ID: "wiredtiger_cache_written_from_cache_pages", Name: "written", Algo: collectorapi.Incremental}, |
| 807 | }, |
| 808 | } |
| 809 | chartWiredTigerCacheEvictionsRate = collectorapi.Chart{ |
| 810 | ID: "wiredtiger_cache_eviction_rate", |
| 811 | Title: "Wired Tiger cache evictions", |
| 812 | Units: "pages/s", |
| 813 | Fam: "wiredtiger", |
| 814 | Ctx: "mongodb.wiredtiger_cache_evictions_rate", |
| 815 | Type: collectorapi.Stacked, |
| 816 | Priority: prioWiredTigerCacheEvictionsRate, |
| 817 | Dims: collectorapi.Dims{ |
| 818 | {ID: "wiredtiger_cache_unmodified_evicted_pages", Name: "unmodified", Algo: collectorapi.Incremental}, |
| 819 | {ID: "wiredtiger_cache_modified_evicted_pages", Name: "modified", Algo: collectorapi.Incremental}, |
| 820 | }, |
| 821 | } |
| 822 | ) |
| 823 | |
| 824 | var ( |
| 825 | chartTmplDatabaseCollectionsCount = &collectorapi.Chart{ |
| 826 | ID: chartPxDatabase + "%s_collections_count", |
| 827 | Title: "Database collections", |
| 828 | Units: "collections", |
| 829 | Fam: "databases", |
| 830 | Ctx: "mongodb.database_collections_count", |
| 831 | Priority: prioDatabaseCollectionsCount, |
| 832 | Dims: collectorapi.Dims{ |
| 833 | {ID: "database_%s_collections", Name: "collections"}, |
| 834 | }, |
| 835 | } |
| 836 | chartTmplDatabaseIndexesCount = &collectorapi.Chart{ |
| 837 | ID: chartPxDatabase + "%s_indexes_count", |
| 838 | Title: "Database indexes", |
| 839 | Units: "indexes", |
| 840 | Fam: "databases", |
| 841 | Ctx: "mongodb.database_indexes_count", |
| 842 | Priority: prioDatabaseIndexesCount, |
| 843 | Dims: collectorapi.Dims{ |
| 844 | {ID: "database_%s_indexes", Name: "indexes"}, |
| 845 | }, |
| 846 | } |
| 847 | chartTmplDatabaseViewsCount = &collectorapi.Chart{ |
| 848 | ID: chartPxDatabase + "%s_views_count", |
| 849 | Title: "Database views", |
| 850 | Units: "views", |
| 851 | Fam: "databases", |
| 852 | Ctx: "mongodb.database_views_count", |
| 853 | Priority: prioDatabaseViewsCount, |
| 854 | Dims: collectorapi.Dims{ |
| 855 | {ID: "database_%s_views", Name: "views"}, |
| 856 | }, |
| 857 | } |
| 858 | chartTmplDatabaseDocumentsCount = &collectorapi.Chart{ |
| 859 | ID: chartPxDatabase + "%s_documents_count", |
| 860 | Title: "Database documents", |
| 861 | Units: "documents", |
| 862 | Fam: "databases", |
| 863 | Ctx: "mongodb.database_documents_count", |
| 864 | Priority: prioDatabaseDocumentsCount, |
| 865 | Dims: collectorapi.Dims{ |
| 866 | {ID: "database_%s_documents", Name: "documents"}, |
| 867 | }, |
| 868 | } |
| 869 | chartTmplDatabaseDataSize = &collectorapi.Chart{ |
| 870 | ID: chartPxDatabase + "%s_data_size", |
| 871 | Title: "Database data size", |
| 872 | Units: "bytes", |
| 873 | Fam: "databases", |
| 874 | Ctx: "mongodb.database_data_size", |
| 875 | Priority: prioDatabaseDataSize, |
| 876 | Dims: collectorapi.Dims{ |
| 877 | {ID: "database_%s_data_size", Name: "data_size"}, |
| 878 | }, |
| 879 | } |
| 880 | chartTmplDatabaseStorageSize = &collectorapi.Chart{ |
| 881 | ID: chartPxDatabase + "%s_storage_size", |
| 882 | Title: "Database storage size", |
| 883 | Units: "bytes", |
| 884 | Fam: "databases", |
| 885 | Ctx: "mongodb.database_storage_size", |
| 886 | Priority: prioDatabaseStorageSize, |
| 887 | Dims: collectorapi.Dims{ |
| 888 | {ID: "database_%s_storage_size", Name: "storage_size"}, |
| 889 | }, |
| 890 | } |
| 891 | chartTmplDatabaseIndexSize = &collectorapi.Chart{ |
| 892 | ID: chartPxDatabase + "%s_index_size", |
| 893 | Title: "Database index size", |
| 894 | Units: "bytes", |
| 895 | Fam: "databases", |
| 896 | Ctx: "mongodb.database_index_size", |
| 897 | Priority: prioDatabaseIndexSize, |
| 898 | Dims: collectorapi.Dims{ |
| 899 | {ID: "database_%s_index_size", Name: "index_size"}, |
| 900 | }, |
| 901 | } |
| 902 | ) |
| 903 | |
| 904 | var ( |
| 905 | chartTmplReplSetMemberState = &collectorapi.Chart{ |
| 906 | ID: chartPxReplSetMember + "%s_state", |
| 907 | Title: "Replica Set member state", |
| 908 | Units: "state", |
| 909 | Fam: "replica sets", |
| 910 | Ctx: "mongodb.repl_set_member_state", |
| 911 | Priority: prioReplSetMemberState, |
| 912 | Dims: collectorapi.Dims{ |
| 913 | {ID: "repl_set_member_%s_state_primary", Name: "primary"}, |
| 914 | {ID: "repl_set_member_%s_state_startup", Name: "startup"}, |
| 915 | {ID: "repl_set_member_%s_state_secondary", Name: "secondary"}, |
| 916 | {ID: "repl_set_member_%s_state_recovering", Name: "recovering"}, |
| 917 | {ID: "repl_set_member_%s_state_startup2", Name: "startup2"}, |
| 918 | {ID: "repl_set_member_%s_state_unknown", Name: "unknown"}, |
| 919 | {ID: "repl_set_member_%s_state_arbiter", Name: "arbiter"}, |
| 920 | {ID: "repl_set_member_%s_state_down", Name: "down"}, |
| 921 | {ID: "repl_set_member_%s_state_rollback", Name: "rollback"}, |
| 922 | {ID: "repl_set_member_%s_state_removed", Name: "removed"}, |
| 923 | }, |
| 924 | } |
| 925 | chartTmplReplSetMemberHealthStatus = &collectorapi.Chart{ |
| 926 | ID: chartPxReplSetMember + "%s_health_status", |
| 927 | Title: "Replica Set member health status", |
| 928 | Units: "status", |
| 929 | Fam: "replica sets", |
| 930 | Ctx: "mongodb.repl_set_member_health_status", |
| 931 | Priority: prioReplSetMemberHealthStatus, |
| 932 | Dims: collectorapi.Dims{ |
| 933 | {ID: "repl_set_member_%s_health_status_up", Name: "up"}, |
| 934 | {ID: "repl_set_member_%s_health_status_down", Name: "down"}, |
| 935 | }, |
| 936 | } |
| 937 | chartTmplReplSetMemberReplicationLagTime = &collectorapi.Chart{ |
| 938 | ID: chartPxReplSetMember + "%s_replication_lag_time", |
| 939 | Title: "Replica Set member replication lag", |
| 940 | Units: "milliseconds", |
| 941 | Fam: "replica sets", |
| 942 | Ctx: "mongodb.repl_set_member_replication_lag_time", |
| 943 | Priority: prioReplSetMemberReplicationLagTime, |
| 944 | Dims: collectorapi.Dims{ |
| 945 | {ID: "repl_set_member_%s_replication_lag", Name: "replication_lag"}, |
| 946 | }, |
| 947 | } |
| 948 | chartTmplReplSetMemberHeartbeatLatencyTime = &collectorapi.Chart{ |
| 949 | ID: chartPxReplSetMember + "%s_heartbeat_latency_time", |
| 950 | Title: "Replica Set member heartbeat latency", |
| 951 | Units: "milliseconds", |
| 952 | Fam: "replica sets", |
| 953 | Ctx: "mongodb.repl_set_member_heartbeat_latency_time", |
| 954 | Priority: prioReplSetMemberHeartbeatLatencyTime, |
| 955 | Dims: collectorapi.Dims{ |
| 956 | {ID: "repl_set_member_%s_heartbeat_latency", Name: "heartbeat_latency"}, |
| 957 | }, |
| 958 | } |
| 959 | chartTmplReplSetMemberPingRTTTime = &collectorapi.Chart{ |
| 960 | ID: chartPxReplSetMember + "%s_ping_rtt_time", |
| 961 | Title: "Replica Set member ping RTT", |
| 962 | Units: "milliseconds", |
| 963 | Fam: "replica sets", |
| 964 | Ctx: "mongodb.repl_set_member_ping_rtt_time", |
| 965 | Priority: prioReplSetMemberPingRTTTime, |
| 966 | Dims: collectorapi.Dims{ |
| 967 | {ID: "repl_set_member_%s_ping_rtt", Name: "ping_rtt"}, |
| 968 | }, |
| 969 | } |
| 970 | chartTmplReplSetMemberUptime = &collectorapi.Chart{ |
| 971 | ID: chartPxReplSetMember + "%s_uptime", |
| 972 | Title: "Replica Set member uptime", |
| 973 | Units: "seconds", |
| 974 | Fam: "replica sets", |
| 975 | Ctx: "mongodb.repl_set_member_uptime", |
| 976 | Priority: prioReplSetMemberUptime, |
| 977 | Dims: collectorapi.Dims{ |
| 978 | {ID: "repl_set_member_%s_uptime", Name: "uptime"}, |
| 979 | }, |
| 980 | } |
| 981 | ) |
| 982 | |
| 983 | var ( |
| 984 | chartShardingNodesCount = &collectorapi.Chart{ |
| 985 | ID: "sharding_nodes_count", |
| 986 | Title: "Sharding Nodes", |
| 987 | Units: "nodes", |
| 988 | Fam: "sharding", |
| 989 | Ctx: "mongodb.sharding_nodes_count", |
| 990 | Type: collectorapi.Stacked, |
| 991 | Priority: prioShardingNodesCount, |
| 992 | Dims: collectorapi.Dims{ |
| 993 | {ID: "shard_nodes_aware", Name: "shard_aware"}, |
| 994 | {ID: "shard_nodes_unaware", Name: "shard_unaware"}, |
| 995 | }, |
| 996 | } |
| 997 | chartShardingShardedDatabases = &collectorapi.Chart{ |
| 998 | ID: "sharding_sharded_databases_count", |
| 999 | Title: "Sharded databases", |
| 1000 | Units: "databases", |
| 1001 | Fam: "sharding", |
| 1002 | Ctx: "mongodb.sharding_sharded_databases_count", |
| 1003 | Type: collectorapi.Stacked, |
| 1004 | Priority: prioShardingShardedDatabasesCount, |
| 1005 | Dims: collectorapi.Dims{ |
| 1006 | {ID: "shard_databases_partitioned", Name: "partitioned"}, |
| 1007 | {ID: "shard_databases_unpartitioned", Name: "unpartitioned"}, |
| 1008 | }, |
| 1009 | } |
| 1010 | |
| 1011 | chartShardingShardedCollectionsCount = &collectorapi.Chart{ |
| 1012 | ID: "sharding_sharded_collections_count", |
| 1013 | Title: "Sharded collections", |
| 1014 | Units: "collections", |
| 1015 | Fam: "sharding", |
| 1016 | Ctx: "mongodb.sharding_sharded_collections_count", |
| 1017 | Type: collectorapi.Stacked, |
| 1018 | Priority: prioShardingShardedCollectionsCount, |
| 1019 | Dims: collectorapi.Dims{ |
| 1020 | {ID: "shard_collections_partitioned", Name: "partitioned"}, |
| 1021 | {ID: "shard_collections_unpartitioned", Name: "unpartitioned"}, |
| 1022 | }, |
| 1023 | } |
| 1024 | |
| 1025 | chartTmplShardChunks = &collectorapi.Chart{ |
| 1026 | ID: chartPxShard + "%s_chunks", |
| 1027 | Title: "Shard chunks", |
| 1028 | Units: "chunks", |
| 1029 | Fam: "sharding", |
| 1030 | Ctx: "mongodb.sharding_shard_chunks_count", |
| 1031 | Priority: prioShardChunks, |
| 1032 | Dims: collectorapi.Dims{ |
| 1033 | {ID: "shard_id_%s_chunks", Name: "chunks"}, |
| 1034 | }, |
| 1035 | } |
| 1036 | ) |