summaryrefslogtreecommitdiffstats
path: root/src/go/collectors/go.d.plugin/modules/mongodb/charts.go
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/go/collectors/go.d.plugin/modules/mongodb/charts.go1036
1 files changed, 1036 insertions, 0 deletions
diff --git a/src/go/collectors/go.d.plugin/modules/mongodb/charts.go b/src/go/collectors/go.d.plugin/modules/mongodb/charts.go
new file mode 100644
index 000000000..f1b9c1a07
--- /dev/null
+++ b/src/go/collectors/go.d.plugin/modules/mongodb/charts.go
@@ -0,0 +1,1036 @@
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+package mongo
+
+import (
+ "github.com/netdata/netdata/go/go.d.plugin/agent/module"
+)
+
+const (
+ prioOperationsRate = module.Priority + iota
+ prioOperationsLatencyTime
+ prioOperationsByTypeRate
+ prioDocumentOperationsRate
+ prioScannedIndexesRate
+ prioScannedDocumentsRate
+
+ prioActiveClientsCount
+ prioQueuedOperationsCount
+
+ prioGlobalLockAcquisitionsRate
+ prioDatabaseLockAcquisitionsRate
+ prioCollectionLockAcquisitionsRate
+ prioMutexLockAcquisitionsRate
+ prioMetadataLockAcquisitionsRate
+ prioOpLogLockAcquisitionsRate
+
+ prioCursorsOpenCount
+ prioCursorsOpenNoTimeoutCount
+ prioCursorsOpenedRate
+ prioTimedOutCursorsRate
+ prioCursorsByLifespanCount
+
+ prioTransactionsCount
+ prioTransactionsRate
+ prioTransactionsNoShardsCommitsRate
+ prioTransactionsNoShardsCommitsDurationTime
+ prioTransactionsSingleShardCommitsRate
+ prioTransactionsSingleShardCommitsDurationTime
+ prioTransactionsSingleWriteShardCommitsRate
+ prioTransactionsSingleWriteShardCommitsDurationTime
+ prioTransactionsReadOnlyCommitsRate
+ prioTransactionsReadOnlyCommitsDurationTime
+ prioTransactionsTwoPhaseCommitCommitsRate
+ prioTransactionsTwoPhaseCommitCommitsDurationTime
+ prioTransactionsRecoverWithTokenCommitsRate
+ prioTransactionsRecoverWithTokenCommitsDurationTime
+
+ prioConnectionsUsage
+ prioConnectionsByStateCount
+ prioConnectionsRate
+
+ prioAssertsRate
+
+ prioNetworkTrafficRate
+ prioNetworkRequestsRate
+ prioNetworkSlowDNSResolutionsRate
+ prioNetworkSlowSSLHandshakesRate
+
+ prioMemoryResidentSize
+ prioMemoryVirtualSize
+ prioMemoryPageFaultsRate
+ prioMemoryTCMallocStats
+
+ prioWiredTigerConcurrentReadTransactionsUsage
+ prioWiredTigerConcurrentWriteTransactionsUsage
+ prioWiredTigerCacheUsage
+ prioWiredTigerCacheDirtySpaceSize
+ prioWiredTigerCacheIORate
+ prioWiredTigerCacheEvictionsRate
+
+ prioDatabaseCollectionsCount
+ prioDatabaseIndexesCount
+ prioDatabaseViewsCount
+ prioDatabaseDocumentsCount
+ prioDatabaseDataSize
+ prioDatabaseStorageSize
+ prioDatabaseIndexSize
+
+ prioReplSetMemberState
+ prioReplSetMemberHealthStatus
+ prioReplSetMemberReplicationLagTime
+ prioReplSetMemberHeartbeatLatencyTime
+ prioReplSetMemberPingRTTTime
+ prioReplSetMemberUptime
+
+ prioShardingNodesCount
+ prioShardingShardedDatabasesCount
+ prioShardingShardedCollectionsCount
+ prioShardChunks
+)
+
+const (
+ chartPxDatabase = "database_"
+ chartPxReplSetMember = "replica_set_member_"
+ chartPxShard = "sharding_shard_"
+)
+
+// these charts are expected to be available in many versions
+var chartsServerStatus = module.Charts{
+ chartOperationsByTypeRate.Copy(),
+ chartDocumentOperationsRate.Copy(),
+ chartScannedIndexesRate.Copy(),
+ chartScannedDocumentsRate.Copy(),
+
+ chartConnectionsUsage.Copy(),
+ chartConnectionsByStateCount.Copy(),
+ chartConnectionsRate.Copy(),
+
+ chartNetworkTrafficRate.Copy(),
+ chartNetworkRequestsRate.Copy(),
+
+ chartMemoryResidentSize.Copy(),
+ chartMemoryVirtualSize.Copy(),
+ chartMemoryPageFaultsRate.Copy(),
+
+ chartAssertsRate.Copy(),
+}
+
+var chartsTmplDatabase = module.Charts{
+ chartTmplDatabaseCollectionsCount.Copy(),
+ chartTmplDatabaseIndexesCount.Copy(),
+ chartTmplDatabaseViewsCount.Copy(),
+ chartTmplDatabaseDocumentsCount.Copy(),
+ chartTmplDatabaseDataSize.Copy(),
+ chartTmplDatabaseStorageSize.Copy(),
+ chartTmplDatabaseIndexSize.Copy(),
+}
+
+var chartsTmplReplSetMember = module.Charts{
+ chartTmplReplSetMemberState.Copy(),
+ chartTmplReplSetMemberHealthStatus.Copy(),
+ chartTmplReplSetMemberReplicationLagTime.Copy(),
+ chartTmplReplSetMemberHeartbeatLatencyTime.Copy(),
+ chartTmplReplSetMemberPingRTTTime.Copy(),
+ chartTmplReplSetMemberUptime.Copy(),
+}
+
+var chartsSharding = module.Charts{
+ chartShardingNodesCount.Copy(),
+ chartShardingShardedDatabases.Copy(),
+ chartShardingShardedCollectionsCount.Copy(),
+}
+
+var chartsTmplShardingShard = module.Charts{
+ chartTmplShardChunks.Copy(),
+}
+
+var (
+ chartOperationsRate = module.Chart{
+ ID: "operations_rate",
+ Title: "Operations rate",
+ Units: "operations/s",
+ Fam: "operations",
+ Ctx: "mongodb.operations_rate",
+ Priority: prioOperationsRate,
+ Dims: module.Dims{
+ {ID: "operations_latencies_reads_ops", Name: "reads", Algo: module.Incremental},
+ {ID: "operations_latencies_writes_ops", Name: "writes", Algo: module.Incremental},
+ {ID: "operations_latencies_commands_ops", Name: "commands", Algo: module.Incremental},
+ },
+ }
+ chartOperationsLatencyTime = module.Chart{
+ ID: "operations_latency_time",
+ Title: "Operations Latency",
+ Units: "milliseconds",
+ Fam: "operations",
+ Ctx: "mongodb.operations_latency_time",
+ Priority: prioOperationsLatencyTime,
+ Dims: module.Dims{
+ {ID: "operations_latencies_reads_latency", Name: "reads", Algo: module.Incremental, Div: 1000},
+ {ID: "operations_latencies_writes_latency", Name: "writes", Algo: module.Incremental, Div: 1000},
+ {ID: "operations_latencies_commands_latency", Name: "commands", Algo: module.Incremental, Div: 1000},
+ },
+ }
+ chartOperationsByTypeRate = module.Chart{
+ ID: "operations_by_type_rate",
+ Title: "Operations by type",
+ Units: "operations/s",
+ Fam: "operations",
+ Ctx: "mongodb.operations_by_type_rate",
+ Priority: prioOperationsByTypeRate,
+ Dims: module.Dims{
+ {ID: "operations_insert", Name: "insert", Algo: module.Incremental},
+ {ID: "operations_query", Name: "query", Algo: module.Incremental},
+ {ID: "operations_update", Name: "update", Algo: module.Incremental},
+ {ID: "operations_delete", Name: "delete", Algo: module.Incremental},
+ {ID: "operations_getmore", Name: "getmore", Algo: module.Incremental},
+ {ID: "operations_command", Name: "command", Algo: module.Incremental},
+ },
+ }
+ chartDocumentOperationsRate = module.Chart{
+ ID: "document_operations_rate",
+ Title: "Document operations",
+ Units: "operations/s",
+ Fam: "operations",
+ Ctx: "mongodb.document_operations_rate",
+ Type: module.Stacked,
+ Priority: prioDocumentOperationsRate,
+ Dims: module.Dims{
+ {ID: "metrics_document_inserted", Name: "inserted", Algo: module.Incremental},
+ {ID: "metrics_document_deleted", Name: "deleted", Algo: module.Incremental},
+ {ID: "metrics_document_returned", Name: "returned", Algo: module.Incremental},
+ {ID: "metrics_document_updated", Name: "updated", Algo: module.Incremental},
+ },
+ }
+ chartScannedIndexesRate = module.Chart{
+ ID: "scanned_indexes_rate",
+ Title: "Scanned indexes",
+ Units: "indexes/s",
+ Fam: "operations",
+ Ctx: "mongodb.scanned_indexes_rate",
+ Priority: prioScannedIndexesRate,
+ Dims: module.Dims{
+ {ID: "metrics_query_executor_scanned", Name: "scanned", Algo: module.Incremental},
+ },
+ }
+ chartScannedDocumentsRate = module.Chart{
+ ID: "scanned_documents_rate",
+ Title: "Scanned documents",
+ Units: "documents/s",
+ Fam: "operations",
+ Ctx: "mongodb.scanned_documents_rate",
+ Priority: prioScannedDocumentsRate,
+ Dims: module.Dims{
+ {ID: "metrics_query_executor_scanned_objects", Name: "scanned", Algo: module.Incremental},
+ },
+ }
+
+ chartGlobalLockActiveClientsCount = module.Chart{
+ ID: "active_clients_count",
+ Title: "Connected clients",
+ Units: "clients",
+ Fam: "clients",
+ Ctx: "mongodb.active_clients_count",
+ Priority: prioActiveClientsCount,
+ Dims: module.Dims{
+ {ID: "global_lock_active_clients_readers", Name: "readers"},
+ {ID: "global_lock_active_clients_writers", Name: "writers"},
+ },
+ }
+ chartGlobalLockCurrentQueueCount = module.Chart{
+ ID: "queued_operations",
+ Title: "Queued operations because of a lock",
+ Units: "operations",
+ Fam: "clients",
+ Ctx: "mongodb.queued_operations_count",
+ Priority: prioQueuedOperationsCount,
+ Dims: module.Dims{
+ {ID: "global_lock_current_queue_readers", Name: "readers"},
+ {ID: "global_lock_current_queue_writers", Name: "writers"},
+ },
+ }
+
+ chartConnectionsUsage = module.Chart{
+ ID: "connections_usage",
+ Title: "Connections usage",
+ Units: "connections",
+ Fam: "connections",
+ Ctx: "mongodb.connections_usage",
+ Type: module.Stacked,
+ Priority: prioConnectionsUsage,
+ Dims: module.Dims{
+ {ID: "connections_available", Name: "available"},
+ {ID: "connections_current", Name: "used"},
+ },
+ }
+ chartConnectionsByStateCount = module.Chart{
+ ID: "connections_by_state_count",
+ Title: "Connections By State",
+ Units: "connections",
+ Fam: "connections",
+ Ctx: "mongodb.connections_by_state_count",
+ Priority: prioConnectionsByStateCount,
+ Dims: module.Dims{
+ {ID: "connections_active", Name: "active"},
+ {ID: "connections_threaded", Name: "threaded"},
+ {ID: "connections_exhaust_is_master", Name: "exhaust_is_master"},
+ {ID: "connections_exhaust_hello", Name: "exhaust_hello"},
+ {ID: "connections_awaiting_topology_changes", Name: "awaiting_topology_changes"},
+ },
+ }
+ chartConnectionsRate = module.Chart{
+ ID: "connections_rate",
+ Title: "Connections Rate",
+ Units: "connections/s",
+ Fam: "connections",
+ Ctx: "mongodb.connections_rate",
+ Priority: prioConnectionsRate,
+ Dims: module.Dims{
+ {ID: "connections_total_created", Name: "created", Algo: module.Incremental},
+ },
+ }
+
+ chartNetworkTrafficRate = module.Chart{
+ ID: "network_traffic",
+ Title: "Network traffic",
+ Units: "bytes/s",
+ Fam: "network",
+ Ctx: "mongodb.network_traffic_rate",
+ Priority: prioNetworkTrafficRate,
+ Type: module.Area,
+ Dims: module.Dims{
+ {ID: "network_bytes_in", Name: "in", Algo: module.Incremental},
+ {ID: "network_bytes_out", Name: "out", Algo: module.Incremental},
+ },
+ }
+ chartNetworkRequestsRate = module.Chart{
+ ID: "network_requests_rate",
+ Title: "Network Requests",
+ Units: "requests/s",
+ Fam: "network",
+ Ctx: "mongodb.network_requests_rate",
+ Priority: prioNetworkRequestsRate,
+ Dims: module.Dims{
+ {ID: "network_requests", Name: "requests", Algo: module.Incremental},
+ },
+ }
+ chartNetworkSlowDNSResolutionsRate = module.Chart{
+ ID: "network_slow_dns_resolutions_rate",
+ Title: "Slow DNS resolution operations",
+ Units: "resolutions/s",
+ Fam: "network",
+ Ctx: "mongodb.network_slow_dns_resolutions_rate",
+ Priority: prioNetworkSlowDNSResolutionsRate,
+ Dims: module.Dims{
+ {ID: "network_slow_dns_operations", Name: "slow_dns", Algo: module.Incremental},
+ },
+ }
+ chartNetworkSlowSSLHandshakesRate = module.Chart{
+ ID: "network_slow_ssl_handshakes_rate",
+ Title: "Slow SSL handshake operations",
+ Units: "handshakes/s",
+ Fam: "network",
+ Ctx: "mongodb.network_slow_ssl_handshakes_rate",
+ Priority: prioNetworkSlowSSLHandshakesRate,
+ Dims: module.Dims{
+ {ID: "network_slow_ssl_operations", Name: "slow_ssl", Algo: module.Incremental},
+ },
+ }
+
+ chartMemoryResidentSize = module.Chart{
+ ID: "memory_resident_size",
+ Title: "Used resident memory",
+ Units: "bytes",
+ Fam: "memory",
+ Ctx: "mongodb.memory_resident_size",
+ Priority: prioMemoryResidentSize,
+ Dims: module.Dims{
+ {ID: "memory_resident", Name: "used"},
+ },
+ }
+ chartMemoryVirtualSize = module.Chart{
+ ID: "memory_virtual_size",
+ Title: "Used virtual memory",
+ Units: "bytes",
+ Fam: "memory",
+ Ctx: "mongodb.memory_virtual_size",
+ Priority: prioMemoryVirtualSize,
+ Dims: module.Dims{
+ {ID: "memory_virtual", Name: "used"},
+ },
+ }
+ chartMemoryPageFaultsRate = module.Chart{
+ ID: "memory_page_faults",
+ Title: "Memory page faults",
+ Units: "pgfaults/s",
+ Fam: "memory",
+ Ctx: "mongodb.memory_page_faults_rate",
+ Priority: prioMemoryPageFaultsRate,
+ Dims: module.Dims{
+ {ID: "extra_info_page_faults", Name: "pgfaults", Algo: module.Incremental},
+ },
+ }
+ chartMemoryTCMallocStatsChart = module.Chart{
+ ID: "memory_tcmalloc_stats",
+ Title: "TCMalloc statistics",
+ Units: "bytes",
+ Fam: "memory",
+ Ctx: "mongodb.memory_tcmalloc_stats",
+ Priority: prioMemoryTCMallocStats,
+ Dims: module.Dims{
+ {ID: "tcmalloc_generic_current_allocated_bytes", Name: "allocated"},
+ {ID: "tcmalloc_central_cache_free_bytes", Name: "central_cache_freelist"},
+ {ID: "tcmalloc_transfer_cache_free_bytes", Name: "transfer_cache_freelist"},
+ {ID: "tcmalloc_thread_cache_free_bytes", Name: "thread_cache_freelists"},
+ {ID: "tcmalloc_pageheap_free_bytes", Name: "pageheap_freelist"},
+ {ID: "tcmalloc_pageheap_unmapped_bytes", Name: "pageheap_unmapped"},
+ },
+ }
+
+ chartAssertsRate = module.Chart{
+ ID: "asserts_rate",
+ Title: "Raised assertions",
+ Units: "asserts/s",
+ Fam: "asserts",
+ Ctx: "mongodb.asserts_rate",
+ Type: module.Stacked,
+ Priority: prioAssertsRate,
+ Dims: module.Dims{
+ {ID: "asserts_regular", Name: "regular", Algo: module.Incremental},
+ {ID: "asserts_warning", Name: "warning", Algo: module.Incremental},
+ {ID: "asserts_msg", Name: "msg", Algo: module.Incremental},
+ {ID: "asserts_user", Name: "user", Algo: module.Incremental},
+ {ID: "asserts_tripwire", Name: "tripwire", Algo: module.Incremental},
+ {ID: "asserts_rollovers", Name: "rollovers", Algo: module.Incremental},
+ },
+ }
+
+ chartTransactionsCount = module.Chart{
+ ID: "transactions_count",
+ Title: "Current transactions",
+ Units: "transactions",
+ Fam: "transactions",
+ Ctx: "mongodb.transactions_count",
+ Priority: prioTransactionsCount,
+ Dims: module.Dims{
+ {ID: "txn_active", Name: "active"},
+ {ID: "txn_inactive", Name: "inactive"},
+ {ID: "txn_open", Name: "open"},
+ {ID: "txn_prepared", Name: "prepared"},
+ },
+ }
+ chartTransactionsRate = module.Chart{
+ ID: "transactions_rate",
+ Title: "Transactions rate",
+ Units: "transactions/s",
+ Fam: "transactions",
+ Ctx: "mongodb.transactions_rate",
+ Priority: prioTransactionsRate,
+ Dims: module.Dims{
+ {ID: "txn_total_started", Name: "started", Algo: module.Incremental},
+ {ID: "txn_total_aborted", Name: "aborted", Algo: module.Incremental},
+ {ID: "txn_total_committed", Name: "committed", Algo: module.Incremental},
+ {ID: "txn_total_prepared", Name: "prepared", Algo: module.Incremental},
+ },
+ }
+ chartTransactionsNoShardsCommitsRate = module.Chart{
+ ID: "transactions_no_shards_commits_rate",
+ Title: "Transactions commits",
+ Units: "commits/s",
+ Fam: "transactions",
+ Ctx: "mongodb.transactions_commits_rate",
+ Priority: prioTransactionsNoShardsCommitsRate,
+ Type: module.Stacked,
+ Labels: []module.Label{{Key: "commit_type", Value: "noShards"}},
+ Dims: module.Dims{
+ {ID: "txn_commit_types_no_shards_successful", Name: "success", Algo: module.Incremental},
+ {ID: "txn_commit_types_no_shards_unsuccessful", Name: "fail", Algo: module.Incremental},
+ },
+ }
+ chartTransactionsNoShardsCommitsDurationTime = module.Chart{
+ ID: "transactions_no_shards_commits_duration_time",
+ Title: "Transactions successful commits duration",
+ Units: "milliseconds",
+ Fam: "transactions",
+ Ctx: "mongodb.transactions_commits_duration_time",
+ Priority: prioTransactionsNoShardsCommitsDurationTime,
+ Labels: []module.Label{{Key: "commit_type", Value: "noShards"}},
+ Dims: module.Dims{
+ {ID: "txn_commit_types_no_shards_successful_duration_micros", Name: "commits", Algo: module.Incremental, Div: 1000},
+ },
+ }
+ chartTransactionsSingleShardCommitsRate = module.Chart{
+ ID: "transactions_single_shard_commits_rate",
+ Title: "Transactions commits",
+ Units: "commits/s",
+ Fam: "transactions",
+ Ctx: "mongodb.transactions_commits_rate",
+ Priority: prioTransactionsSingleShardCommitsRate,
+ Type: module.Stacked,
+ Labels: []module.Label{{Key: "commit_type", Value: "singleShard"}},
+ Dims: module.Dims{
+ {ID: "txn_commit_types_single_shard_successful", Name: "success", Algo: module.Incremental},
+ {ID: "txn_commit_types_single_shard_unsuccessful", Name: "fail", Algo: module.Incremental},
+ },
+ }
+ chartTransactionsSingleShardCommitsDurationTime = module.Chart{
+ ID: "transactions_single_shard_commits_duration_time",
+ Title: "Transactions successful commits duration",
+ Units: "milliseconds",
+ Fam: "transactions",
+ Ctx: "mongodb.transactions_commits_duration_time",
+ Priority: prioTransactionsSingleShardCommitsDurationTime,
+ Labels: []module.Label{{Key: "commit_type", Value: "singleShard"}},
+ Dims: module.Dims{
+ {ID: "txn_commit_types_single_shard_successful_duration_micros", Name: "commits", Algo: module.Incremental, Div: 1000},
+ },
+ }
+ chartTransactionsSingleWriteShardCommitsRate = module.Chart{
+ ID: "transactions_single_write_shard_commits_rate",
+ Title: "Transactions commits",
+ Units: "commits/s",
+ Fam: "transactions",
+ Ctx: "mongodb.transactions_commits_rate",
+ Priority: prioTransactionsSingleWriteShardCommitsRate,
+ Type: module.Stacked,
+ Labels: []module.Label{{Key: "commit_type", Value: "singleWriteShard"}},
+ Dims: module.Dims{
+ {ID: "txn_commit_types_single_write_shard_successful", Name: "success", Algo: module.Incremental},
+ {ID: "txn_commit_types_single_write_shard_unsuccessful", Name: "fail", Algo: module.Incremental},
+ },
+ }
+ chartTransactionsSingleWriteShardCommitsDurationTime = module.Chart{
+ ID: "transactions_single_write_shard_commits_duration_time",
+ Title: "Transactions successful commits duration",
+ Units: "milliseconds",
+ Fam: "transactions",
+ Ctx: "mongodb.transactions_commits_duration_time",
+ Priority: prioTransactionsSingleWriteShardCommitsDurationTime,
+ Labels: []module.Label{{Key: "commit_type", Value: "singleWriteShard"}},
+ Dims: module.Dims{
+ {ID: "txn_commit_types_single_write_shard_successful_duration_micros", Name: "commits", Algo: module.Incremental, Div: 1000},
+ },
+ }
+ chartTransactionsReadOnlyCommitsRate = module.Chart{
+ ID: "transactions_read_only_commits_rate",
+ Title: "Transactions commits",
+ Units: "commits/s",
+ Fam: "transactions",
+ Ctx: "mongodb.transactions_commits_rate",
+ Priority: prioTransactionsReadOnlyCommitsRate,
+ Type: module.Stacked,
+ Labels: []module.Label{{Key: "commit_type", Value: "readOnly"}},
+ Dims: module.Dims{
+ {ID: "txn_commit_types_read_only_successful", Name: "success", Algo: module.Incremental},
+ {ID: "txn_commit_types_read_only_unsuccessful", Name: "fail", Algo: module.Incremental},
+ },
+ }
+ chartTransactionsReadOnlyCommitsDurationTime = module.Chart{
+ ID: "transactions_read_only_commits_duration_time",
+ Title: "Transactions successful commits duration",
+ Units: "milliseconds",
+ Fam: "transactions",
+ Ctx: "mongodb.transactions_commits_duration_time",
+ Priority: prioTransactionsReadOnlyCommitsDurationTime,
+ Labels: []module.Label{{Key: "commit_type", Value: "readOnly"}},
+ Dims: module.Dims{
+ {ID: "txn_commit_types_read_only_successful_duration_micros", Name: "commits", Algo: module.Incremental, Div: 1000},
+ },
+ }
+ chartTransactionsTwoPhaseCommitCommitsRate = module.Chart{
+ ID: "transactions_two_phase_commit_commits_rate",
+ Title: "Transactions commits",
+ Units: "commits/s",
+ Fam: "transactions",
+ Ctx: "mongodb.transactions_commits_rate",
+ Priority: prioTransactionsTwoPhaseCommitCommitsRate,
+ Type: module.Stacked,
+ Labels: []module.Label{{Key: "commit_type", Value: "twoPhaseCommit"}},
+ Dims: module.Dims{
+ {ID: "txn_commit_types_two_phase_commit_successful", Name: "success", Algo: module.Incremental},
+ {ID: "txn_commit_types_two_phase_commit_unsuccessful", Name: "fail", Algo: module.Incremental},
+ },
+ }
+ chartTransactionsTwoPhaseCommitCommitsDurationTime = module.Chart{
+ ID: "transactions_two_phase_commit_commits_duration_time",
+ Title: "Transactions successful commits duration",
+ Units: "milliseconds",
+ Fam: "transactions",
+ Ctx: "mongodb.transactions_commits_duration_time",
+ Priority: prioTransactionsTwoPhaseCommitCommitsDurationTime,
+ Labels: []module.Label{{Key: "commit_type", Value: "twoPhaseCommit"}},
+ Dims: module.Dims{
+ {ID: "txn_commit_types_two_phase_commit_successful_duration_micros", Name: "commits", Algo: module.Incremental, Div: 1000},
+ },
+ }
+ chartTransactionsRecoverWithTokenCommitsRate = module.Chart{
+ ID: "transactions_recover_with_token_commits_rate",
+ Title: "Transactions commits",
+ Units: "commits/s",
+ Fam: "transactions",
+ Ctx: "mongodb.transactions_commits_rate",
+ Priority: prioTransactionsRecoverWithTokenCommitsRate,
+ Type: module.Stacked,
+ Labels: []module.Label{{Key: "commit_type", Value: "recoverWithToken"}},
+ Dims: module.Dims{
+ {ID: "txn_commit_types_recover_with_token_successful", Name: "success", Algo: module.Incremental},
+ {ID: "txn_commit_types_recover_with_token_unsuccessful", Name: "fail", Algo: module.Incremental},
+ },
+ }
+ chartTransactionsRecoverWithTokenCommitsDurationTime = module.Chart{
+ ID: "transactions_recover_with_token_commits_duration_time",
+ Title: "Transactions successful commits duration",
+ Units: "milliseconds",
+ Fam: "transactions",
+ Ctx: "mongodb.transactions_commits_duration_time",
+ Priority: prioTransactionsRecoverWithTokenCommitsDurationTime,
+ Labels: []module.Label{{Key: "commit_type", Value: "recoverWithToken"}},
+ Dims: module.Dims{
+ {ID: "txn_commit_types_recover_with_token_successful_duration_micros", Name: "commits", Algo: module.Incremental, Div: 1000},
+ },
+ }
+
+ chartGlobalLockAcquisitionsRate = module.Chart{
+ ID: "global_lock_acquisitions_rate",
+ Title: "Global lock acquisitions",
+ Units: "acquisitions/s",
+ Fam: "locks",
+ Ctx: "mongodb.lock_acquisitions_rate",
+ Priority: prioGlobalLockAcquisitionsRate,
+ Labels: []module.Label{{Key: "lock_type", Value: "global"}},
+ Dims: module.Dims{
+ {ID: "locks_global_acquire_shared", Name: "shared", Algo: module.Incremental},
+ {ID: "locks_global_acquire_exclusive", Name: "exclusive", Algo: module.Incremental},
+ {ID: "locks_global_acquire_intent_shared", Name: "intent_shared", Algo: module.Incremental},
+ {ID: "locks_global_acquire_intent_exclusive", Name: "intent_exclusive", Algo: module.Incremental},
+ },
+ }
+ chartDatabaseLockAcquisitionsRate = module.Chart{
+ ID: "database_lock_acquisitions_rate",
+ Title: "Database lock acquisitions",
+ Units: "acquisitions/s",
+ Fam: "locks",
+ Ctx: "mongodb.lock_acquisitions_rate",
+ Priority: prioDatabaseLockAcquisitionsRate,
+ Labels: []module.Label{{Key: "lock_type", Value: "database"}},
+ Dims: module.Dims{
+ {ID: "locks_database_acquire_shared", Name: "shared", Algo: module.Incremental},
+ {ID: "locks_database_acquire_exclusive", Name: "exclusive", Algo: module.Incremental},
+ {ID: "locks_database_acquire_intent_shared", Name: "intent_shared", Algo: module.Incremental},
+ {ID: "locks_database_acquire_intent_exclusive", Name: "intent_exclusive", Algo: module.Incremental},
+ },
+ }
+ chartCollectionLockAcquisitionsRate = module.Chart{
+ ID: "collection_lock_acquisitions_rate",
+ Title: "Collection lock acquisitions",
+ Units: "acquisitions/s",
+ Fam: "locks",
+ Ctx: "mongodb.lock_acquisitions_rate",
+ Priority: prioCollectionLockAcquisitionsRate,
+ Labels: []module.Label{{Key: "lock_type", Value: "collection"}},
+ Dims: module.Dims{
+ {ID: "locks_collection_acquire_shared", Name: "shared", Algo: module.Incremental},
+ {ID: "locks_collection_acquire_exclusive", Name: "exclusive", Algo: module.Incremental},
+ {ID: "locks_collection_acquire_intent_shared", Name: "intent_shared", Algo: module.Incremental},
+ {ID: "locks_collection_acquire_intent_exclusive", Name: "intent_exclusive", Algo: module.Incremental},
+ },
+ }
+ chartMutexLockAcquisitionsRate = module.Chart{
+ ID: "mutex_lock_acquisitions_rate",
+ Title: "Mutex lock acquisitions",
+ Units: "acquisitions/s",
+ Fam: "locks",
+ Ctx: "mongodb.lock_acquisitions_rate",
+ Priority: prioMutexLockAcquisitionsRate,
+ Labels: []module.Label{{Key: "lock_type", Value: "mutex"}},
+ Dims: module.Dims{
+ {ID: "locks_mutex_acquire_shared", Name: "shared", Algo: module.Incremental},
+ {ID: "locks_mutex_acquire_exclusive", Name: "exclusive", Algo: module.Incremental},
+ {ID: "locks_mutex_acquire_intent_shared", Name: "intent_shared", Algo: module.Incremental},
+ {ID: "locks_mutex_acquire_intent_exclusive", Name: "intent_exclusive", Algo: module.Incremental},
+ },
+ }
+ chartMetadataLockAcquisitionsRate = module.Chart{
+ ID: "metadata_lock_acquisitions_rate",
+ Title: "Metadata lock acquisitions",
+ Units: "acquisitions/s",
+ Fam: "locks",
+ Ctx: "mongodb.lock_acquisitions_rate",
+ Priority: prioMetadataLockAcquisitionsRate,
+ Labels: []module.Label{{Key: "lock_type", Value: "metadata"}},
+ Dims: module.Dims{
+ {ID: "locks_metadata_acquire_shared", Name: "shared", Algo: module.Incremental},
+ {ID: "locks_metadata_acquire_exclusive", Name: "exclusive", Algo: module.Incremental},
+ {ID: "locks_metadata_acquire_intent_shared", Name: "intent_shared", Algo: module.Incremental},
+ {ID: "locks_metadata_acquire_intent_exclusive", Name: "intent_exclusive", Algo: module.Incremental},
+ },
+ }
+ chartOpLogLockAcquisitionsRate = module.Chart{
+ ID: "oplog_lock_acquisitions_rate",
+ Title: "Operations log lock acquisitions",
+ Units: "acquisitions/s",
+ Fam: "locks",
+ Ctx: "mongodb.lock_acquisitions_rate",
+ Priority: prioOpLogLockAcquisitionsRate,
+ Labels: []module.Label{{Key: "lock_type", Value: "oplog"}},
+ Dims: module.Dims{
+ {ID: "locks_oplog_acquire_shared", Name: "shared", Algo: module.Incremental},
+ {ID: "locks_oplog_acquire_exclusive", Name: "exclusive", Algo: module.Incremental},
+ {ID: "locks_oplog_acquire_intent_shared", Name: "intent_shared", Algo: module.Incremental},
+ {ID: "locks_oplog_acquire_intent_exclusive", Name: "intent_exclusive", Algo: module.Incremental},
+ },
+ }
+
+ chartCursorsOpenCount = module.Chart{
+ ID: "cursors_open_count",
+ Title: "Open cursors",
+ Units: "cursors",
+ Fam: "cursors",
+ Ctx: "mongodb.cursors_open_count",
+ Priority: prioCursorsOpenCount,
+ Dims: module.Dims{
+ {ID: "metrics_cursor_open_total", Name: "open"},
+ },
+ }
+ chartCursorsOpenNoTimeoutCount = module.Chart{
+ ID: "cursors_open_no_timeout_count",
+ Title: "Open cursors with disabled timeout",
+ Units: "cursors",
+ Fam: "cursors",
+ Ctx: "mongodb.cursors_open_no_timeout_count",
+ Priority: prioCursorsOpenNoTimeoutCount,
+ Dims: module.Dims{
+ {ID: "metrics_cursor_open_no_timeout", Name: "open_no_timeout"},
+ },
+ }
+ chartCursorsOpenedRate = module.Chart{
+ ID: "cursors_opened_rate",
+ Title: "Opened cursors rate",
+ Units: "cursors/s",
+ Fam: "cursors",
+ Ctx: "mongodb.cursors_opened_rate",
+ Priority: prioCursorsOpenedRate,
+ Dims: module.Dims{
+ {ID: "metrics_cursor_total_opened", Name: "opened"},
+ },
+ }
+ chartCursorsTimedOutRate = module.Chart{
+ ID: "cursors_timed_out_rate",
+ Title: "Timed-out cursors",
+ Units: "cursors/s",
+ Fam: "cursors",
+ Ctx: "mongodb.cursors_timed_out_rate",
+ Priority: prioTimedOutCursorsRate,
+ Dims: module.Dims{
+ {ID: "metrics_cursor_timed_out", Name: "timed_out"},
+ },
+ }
+ chartCursorsByLifespanCount = module.Chart{
+ ID: "cursors_by_lifespan_count",
+ Title: "Cursors lifespan",
+ Units: "cursors",
+ Fam: "cursors",
+ Ctx: "mongodb.cursors_by_lifespan_count",
+ Priority: prioCursorsByLifespanCount,
+ Type: module.Stacked,
+ Dims: module.Dims{
+ {ID: "metrics_cursor_lifespan_less_than_1_second", Name: "le_1s"},
+ {ID: "metrics_cursor_lifespan_less_than_5_seconds", Name: "1s_5s"},
+ {ID: "metrics_cursor_lifespan_less_than_15_seconds", Name: "5s_15s"},
+ {ID: "metrics_cursor_lifespan_less_than_30_seconds", Name: "15s_30s"},
+ {ID: "metrics_cursor_lifespan_less_than_1_minute", Name: "30s_1m"},
+ {ID: "metrics_cursor_lifespan_less_than_10_minutes", Name: "1m_10m"},
+ {ID: "metrics_cursor_lifespan_greater_than_or_equal_10_minutes", Name: "ge_10m"},
+ },
+ }
+
+ chartWiredTigerConcurrentReadTransactionsUsage = module.Chart{
+ ID: "wiredtiger_concurrent_read_transactions_usage",
+ Title: "Wired Tiger concurrent read transactions usage",
+ Units: "transactions",
+ Fam: "wiredtiger",
+ Ctx: "mongodb.wiredtiger_concurrent_read_transactions_usage",
+ Priority: prioWiredTigerConcurrentReadTransactionsUsage,
+ Type: module.Stacked,
+ Dims: module.Dims{
+ {ID: "wiredtiger_concurrent_txn_read_available", Name: "available"},
+ {ID: "wiredtiger_concurrent_txn_read_out", Name: "used"},
+ },
+ }
+ chartWiredTigerConcurrentWriteTransactionsUsage = module.Chart{
+ ID: "wiredtiger_concurrent_write_transactions_usage",
+ Title: "Wired Tiger concurrent write transactions usage",
+ Units: "transactions",
+ Fam: "wiredtiger",
+ Ctx: "mongodb.wiredtiger_concurrent_write_transactions_usage",
+ Priority: prioWiredTigerConcurrentWriteTransactionsUsage,
+ Type: module.Stacked,
+ Dims: module.Dims{
+ {ID: "wiredtiger_concurrent_txn_write_available", Name: "available"},
+ {ID: "wiredtiger_concurrent_txn_write_out", Name: "used"},
+ },
+ }
+ chartWiredTigerCacheUsage = module.Chart{
+ ID: "wiredtiger_cache_usage",
+ Title: "Wired Tiger cache usage",
+ Units: "bytes",
+ Fam: "wiredtiger",
+ Ctx: "mongodb.wiredtiger_cache_usage",
+ Priority: prioWiredTigerCacheUsage,
+ Type: module.Stacked,
+ Dims: module.Dims{
+ {ID: "wiredtiger_cache_currently_in_cache_bytes", Name: "used"},
+ },
+ }
+ chartWiredTigerCacheDirtySpaceSize = module.Chart{
+ ID: "wiredtiger_cache_dirty_space_size",
+ Title: "Wired Tiger cache dirty space size",
+ Units: "bytes",
+ Fam: "wiredtiger",
+ Ctx: "mongodb.wiredtiger_cache_dirty_space_size",
+ Priority: prioWiredTigerCacheDirtySpaceSize,
+ Dims: module.Dims{
+ {ID: "wiredtiger_cache_tracked_dirty_in_the_cache_bytes", Name: "dirty"},
+ },
+ }
+ chartWiredTigerCacheIORate = module.Chart{
+ ID: "wiredtiger_cache_io_rate",
+ Title: "Wired Tiger IO activity",
+ Units: "pages/s",
+ Fam: "wiredtiger",
+ Ctx: "mongodb.wiredtiger_cache_io_rate",
+ Priority: prioWiredTigerCacheIORate,
+ Dims: module.Dims{
+ {ID: "wiredtiger_cache_read_into_cache_pages", Name: "read", Algo: module.Incremental},
+ {ID: "wiredtiger_cache_written_from_cache_pages", Name: "written", Algo: module.Incremental},
+ },
+ }
+ chartWiredTigerCacheEvictionsRate = module.Chart{
+ ID: "wiredtiger_cache_eviction_rate",
+ Title: "Wired Tiger cache evictions",
+ Units: "pages/s",
+ Fam: "wiredtiger",
+ Ctx: "mongodb.wiredtiger_cache_evictions_rate",
+ Type: module.Stacked,
+ Priority: prioWiredTigerCacheEvictionsRate,
+ Dims: module.Dims{
+ {ID: "wiredtiger_cache_unmodified_evicted_pages", Name: "unmodified", Algo: module.Incremental},
+ {ID: "wiredtiger_cache_modified_evicted_pages", Name: "modified", Algo: module.Incremental},
+ },
+ }
+)
+
+var (
+ chartTmplDatabaseCollectionsCount = &module.Chart{
+ ID: chartPxDatabase + "%s_collections_count",
+ Title: "Database collections",
+ Units: "collections",
+ Fam: "databases",
+ Ctx: "mongodb.database_collections_count",
+ Priority: prioDatabaseCollectionsCount,
+ Dims: module.Dims{
+ {ID: "database_%s_collections", Name: "collections"},
+ },
+ }
+ chartTmplDatabaseIndexesCount = &module.Chart{
+ ID: chartPxDatabase + "%s_indexes_count",
+ Title: "Database indexes",
+ Units: "indexes",
+ Fam: "databases",
+ Ctx: "mongodb.database_indexes_count",
+ Priority: prioDatabaseIndexesCount,
+ Dims: module.Dims{
+ {ID: "database_%s_indexes", Name: "indexes"},
+ },
+ }
+ chartTmplDatabaseViewsCount = &module.Chart{
+ ID: chartPxDatabase + "%s_views_count",
+ Title: "Database views",
+ Units: "views",
+ Fam: "databases",
+ Ctx: "mongodb.database_views_count",
+ Priority: prioDatabaseViewsCount,
+ Dims: module.Dims{
+ {ID: "database_%s_views", Name: "views"},
+ },
+ }
+ chartTmplDatabaseDocumentsCount = &module.Chart{
+ ID: chartPxDatabase + "%s_documents_count",
+ Title: "Database documents",
+ Units: "documents",
+ Fam: "databases",
+ Ctx: "mongodb.database_documents_count",
+ Priority: prioDatabaseDocumentsCount,
+ Dims: module.Dims{
+ {ID: "database_%s_documents", Name: "documents"},
+ },
+ }
+ chartTmplDatabaseDataSize = &module.Chart{
+ ID: chartPxDatabase + "%s_data_size",
+ Title: "Database data size",
+ Units: "bytes",
+ Fam: "databases",
+ Ctx: "mongodb.database_data_size",
+ Priority: prioDatabaseDataSize,
+ Dims: module.Dims{
+ {ID: "database_%s_data_size", Name: "data_size"},
+ },
+ }
+ chartTmplDatabaseStorageSize = &module.Chart{
+ ID: chartPxDatabase + "%s_storage_size",
+ Title: "Database storage size",
+ Units: "bytes",
+ Fam: "databases",
+ Ctx: "mongodb.database_storage_size",
+ Priority: prioDatabaseStorageSize,
+ Dims: module.Dims{
+ {ID: "database_%s_storage_size", Name: "storage_size"},
+ },
+ }
+ chartTmplDatabaseIndexSize = &module.Chart{
+ ID: chartPxDatabase + "%s_index_size",
+ Title: "Database index size",
+ Units: "bytes",
+ Fam: "databases",
+ Ctx: "mongodb.database_index_size",
+ Priority: prioDatabaseIndexSize,
+ Dims: module.Dims{
+ {ID: "database_%s_index_size", Name: "index_size"},
+ },
+ }
+)
+
+var (
+ chartTmplReplSetMemberState = &module.Chart{
+ ID: chartPxReplSetMember + "%s_state",
+ Title: "Replica Set member state",
+ Units: "state",
+ Fam: "replica sets",
+ Ctx: "mongodb.repl_set_member_state",
+ Priority: prioReplSetMemberState,
+ Dims: module.Dims{
+ {ID: "repl_set_member_%s_state_primary", Name: "primary"},
+ {ID: "repl_set_member_%s_state_startup", Name: "startup"},
+ {ID: "repl_set_member_%s_state_secondary", Name: "secondary"},
+ {ID: "repl_set_member_%s_state_recovering", Name: "recovering"},
+ {ID: "repl_set_member_%s_state_startup2", Name: "startup2"},
+ {ID: "repl_set_member_%s_state_unknown", Name: "unknown"},
+ {ID: "repl_set_member_%s_state_arbiter", Name: "arbiter"},
+ {ID: "repl_set_member_%s_state_down", Name: "down"},
+ {ID: "repl_set_member_%s_state_rollback", Name: "rollback"},
+ {ID: "repl_set_member_%s_state_removed", Name: "removed"},
+ },
+ }
+ chartTmplReplSetMemberHealthStatus = &module.Chart{
+ ID: chartPxReplSetMember + "%s_health_status",
+ Title: "Replica Set member health status",
+ Units: "status",
+ Fam: "replica sets",
+ Ctx: "mongodb.repl_set_member_health_status",
+ Priority: prioReplSetMemberHealthStatus,
+ Dims: module.Dims{
+ {ID: "repl_set_member_%s_health_status_up", Name: "up"},
+ {ID: "repl_set_member_%s_health_status_down", Name: "down"},
+ },
+ }
+ chartTmplReplSetMemberReplicationLagTime = &module.Chart{
+ ID: chartPxReplSetMember + "%s_replication_lag_time",
+ Title: "Replica Set member replication lag",
+ Units: "milliseconds",
+ Fam: "replica sets",
+ Ctx: "mongodb.repl_set_member_replication_lag_time",
+ Priority: prioReplSetMemberReplicationLagTime,
+ Dims: module.Dims{
+ {ID: "repl_set_member_%s_replication_lag", Name: "replication_lag"},
+ },
+ }
+ chartTmplReplSetMemberHeartbeatLatencyTime = &module.Chart{
+ ID: chartPxReplSetMember + "%s_heartbeat_latency_time",
+ Title: "Replica Set member heartbeat latency",
+ Units: "milliseconds",
+ Fam: "replica sets",
+ Ctx: "mongodb.repl_set_member_heartbeat_latency_time",
+ Priority: prioReplSetMemberHeartbeatLatencyTime,
+ Dims: module.Dims{
+ {ID: "repl_set_member_%s_heartbeat_latency", Name: "heartbeat_latency"},
+ },
+ }
+ chartTmplReplSetMemberPingRTTTime = &module.Chart{
+ ID: chartPxReplSetMember + "%s_ping_rtt_time",
+ Title: "Replica Set member ping RTT",
+ Units: "milliseconds",
+ Fam: "replica sets",
+ Ctx: "mongodb.repl_set_member_ping_rtt_time",
+ Priority: prioReplSetMemberPingRTTTime,
+ Dims: module.Dims{
+ {ID: "repl_set_member_%s_ping_rtt", Name: "ping_rtt"},
+ },
+ }
+ chartTmplReplSetMemberUptime = &module.Chart{
+ ID: chartPxReplSetMember + "%s_uptime",
+ Title: "Replica Set member uptime",
+ Units: "seconds",
+ Fam: "replica sets",
+ Ctx: "mongodb.repl_set_member_uptime",
+ Priority: prioReplSetMemberUptime,
+ Dims: module.Dims{
+ {ID: "repl_set_member_%s_uptime", Name: "uptime"},
+ },
+ }
+)
+
+var (
+ chartShardingNodesCount = &module.Chart{
+ ID: "sharding_nodes_count",
+ Title: "Sharding Nodes",
+ Units: "nodes",
+ Fam: "sharding",
+ Ctx: "mongodb.sharding_nodes_count",
+ Type: module.Stacked,
+ Priority: prioShardingNodesCount,
+ Dims: module.Dims{
+ {ID: "shard_nodes_aware", Name: "shard_aware"},
+ {ID: "shard_nodes_unaware", Name: "shard_unaware"},
+ },
+ }
+ chartShardingShardedDatabases = &module.Chart{
+ ID: "sharding_sharded_databases_count",
+ Title: "Sharded databases",
+ Units: "databases",
+ Fam: "sharding",
+ Ctx: "mongodb.sharding_sharded_databases_count",
+ Type: module.Stacked,
+ Priority: prioShardingShardedDatabasesCount,
+ Dims: module.Dims{
+ {ID: "shard_databases_partitioned", Name: "partitioned"},
+ {ID: "shard_databases_unpartitioned", Name: "unpartitioned"},
+ },
+ }
+
+ chartShardingShardedCollectionsCount = &module.Chart{
+ ID: "sharding_sharded_collections_count",
+ Title: "Sharded collections",
+ Units: "collections",
+ Fam: "sharding",
+ Ctx: "mongodb.sharding_sharded_collections_count",
+ Type: module.Stacked,
+ Priority: prioShardingShardedCollectionsCount,
+ Dims: module.Dims{
+ {ID: "shard_collections_partitioned", Name: "partitioned"},
+ {ID: "shard_collections_unpartitioned", Name: "unpartitioned"},
+ },
+ }
+
+ chartTmplShardChunks = &module.Chart{
+ ID: chartPxShard + "%s_chunks",
+ Title: "Shard chunks",
+ Units: "chunks",
+ Fam: "sharding",
+ Ctx: "mongodb.sharding_shard_chunks_count",
+ Priority: prioShardChunks,
+ Dims: module.Dims{
+ {ID: "shard_id_%s_chunks", Name: "chunks"},
+ },
+ }
+)