github.com/netdata/go.d.plugin@v0.58.1/modules/mongodb/charts.go (about)

     1  // SPDX-License-Identifier: GPL-3.0-or-later
     2  
     3  package mongo
     4  
     5  import (
     6  	"github.com/netdata/go.d.plugin/agent/module"
     7  )
     8  
     9  const (
    10  	prioOperationsRate = module.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 = module.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 = module.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 = module.Charts{
   130  	chartTmplReplSetMemberState.Copy(),
   131  	chartTmplReplSetMemberHealthStatus.Copy(),
   132  	chartTmplReplSetMemberReplicationLagTime.Copy(),
   133  	chartTmplReplSetMemberHeartbeatLatencyTime.Copy(),
   134  	chartTmplReplSetMemberPingRTTTime.Copy(),
   135  	chartTmplReplSetMemberUptime.Copy(),
   136  }
   137  
   138  var chartsSharding = module.Charts{
   139  	chartShardingNodesCount.Copy(),
   140  	chartShardingShardedDatabases.Copy(),
   141  	chartShardingShardedCollectionsCount.Copy(),
   142  }
   143  
   144  var chartsTmplShardingShard = module.Charts{
   145  	chartTmplShardChunks.Copy(),
   146  }
   147  
   148  var (
   149  	chartOperationsRate = module.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: module.Dims{
   157  			{ID: "operations_latencies_reads_ops", Name: "reads", Algo: module.Incremental},
   158  			{ID: "operations_latencies_writes_ops", Name: "writes", Algo: module.Incremental},
   159  			{ID: "operations_latencies_commands_ops", Name: "commands", Algo: module.Incremental},
   160  		},
   161  	}
   162  	chartOperationsLatencyTime = module.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: module.Dims{
   170  			{ID: "operations_latencies_reads_latency", Name: "reads", Algo: module.Incremental, Div: 1000},
   171  			{ID: "operations_latencies_writes_latency", Name: "writes", Algo: module.Incremental, Div: 1000},
   172  			{ID: "operations_latencies_commands_latency", Name: "commands", Algo: module.Incremental, Div: 1000},
   173  		},
   174  	}
   175  	chartOperationsByTypeRate = module.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: module.Dims{
   183  			{ID: "operations_insert", Name: "insert", Algo: module.Incremental},
   184  			{ID: "operations_query", Name: "query", Algo: module.Incremental},
   185  			{ID: "operations_update", Name: "update", Algo: module.Incremental},
   186  			{ID: "operations_delete", Name: "delete", Algo: module.Incremental},
   187  			{ID: "operations_getmore", Name: "getmore", Algo: module.Incremental},
   188  			{ID: "operations_command", Name: "command", Algo: module.Incremental},
   189  		},
   190  	}
   191  	chartDocumentOperationsRate = module.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:     module.Stacked,
   198  		Priority: prioDocumentOperationsRate,
   199  		Dims: module.Dims{
   200  			{ID: "metrics_document_inserted", Name: "inserted", Algo: module.Incremental},
   201  			{ID: "metrics_document_deleted", Name: "deleted", Algo: module.Incremental},
   202  			{ID: "metrics_document_returned", Name: "returned", Algo: module.Incremental},
   203  			{ID: "metrics_document_updated", Name: "updated", Algo: module.Incremental},
   204  		},
   205  	}
   206  	chartScannedIndexesRate = module.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: module.Dims{
   214  			{ID: "metrics_query_executor_scanned", Name: "scanned", Algo: module.Incremental},
   215  		},
   216  	}
   217  	chartScannedDocumentsRate = module.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: module.Dims{
   225  			{ID: "metrics_query_executor_scanned_objects", Name: "scanned", Algo: module.Incremental},
   226  		},
   227  	}
   228  
   229  	chartGlobalLockActiveClientsCount = module.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: module.Dims{
   237  			{ID: "global_lock_active_clients_readers", Name: "readers"},
   238  			{ID: "global_lock_active_clients_writers", Name: "writers"},
   239  		},
   240  	}
   241  	chartGlobalLockCurrentQueueCount = module.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: module.Dims{
   249  			{ID: "global_lock_current_queue_readers", Name: "readers"},
   250  			{ID: "global_lock_current_queue_writers", Name: "writers"},
   251  		},
   252  	}
   253  
   254  	chartConnectionsUsage = module.Chart{
   255  		ID:       "connections_usage",
   256  		Title:    "Connections usage",
   257  		Units:    "connections",
   258  		Fam:      "connections",
   259  		Ctx:      "mongodb.connections_usage",
   260  		Type:     module.Stacked,
   261  		Priority: prioConnectionsUsage,
   262  		Dims: module.Dims{
   263  			{ID: "connections_available", Name: "available"},
   264  			{ID: "connections_current", Name: "used"},
   265  		},
   266  	}
   267  	chartConnectionsByStateCount = module.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: module.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 = module.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: module.Dims{
   290  			{ID: "connections_total_created", Name: "created", Algo: module.Incremental},
   291  		},
   292  	}
   293  
   294  	chartNetworkTrafficRate = module.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:     module.Area,
   302  		Dims: module.Dims{
   303  			{ID: "network_bytes_in", Name: "in", Algo: module.Incremental},
   304  			{ID: "network_bytes_out", Name: "out", Algo: module.Incremental},
   305  		},
   306  	}
   307  	chartNetworkRequestsRate = module.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: module.Dims{
   315  			{ID: "network_requests", Name: "requests", Algo: module.Incremental},
   316  		},
   317  	}
   318  	chartNetworkSlowDNSResolutionsRate = module.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: module.Dims{
   326  			{ID: "network_slow_dns_operations", Name: "slow_dns", Algo: module.Incremental},
   327  		},
   328  	}
   329  	chartNetworkSlowSSLHandshakesRate = module.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: module.Dims{
   337  			{ID: "network_slow_ssl_operations", Name: "slow_ssl", Algo: module.Incremental},
   338  		},
   339  	}
   340  
   341  	chartMemoryResidentSize = module.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: module.Dims{
   349  			{ID: "memory_resident", Name: "used"},
   350  		},
   351  	}
   352  	chartMemoryVirtualSize = module.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: module.Dims{
   360  			{ID: "memory_virtual", Name: "used"},
   361  		},
   362  	}
   363  	chartMemoryPageFaultsRate = module.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: module.Dims{
   371  			{ID: "extra_info_page_faults", Name: "pgfaults", Algo: module.Incremental},
   372  		},
   373  	}
   374  	chartMemoryTCMallocStatsChart = module.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: module.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 = module.Chart{
   392  		ID:       "asserts_rate",
   393  		Title:    "Raised assertions",
   394  		Units:    "asserts/s",
   395  		Fam:      "asserts",
   396  		Ctx:      "mongodb.asserts_rate",
   397  		Type:     module.Stacked,
   398  		Priority: prioAssertsRate,
   399  		Dims: module.Dims{
   400  			{ID: "asserts_regular", Name: "regular", Algo: module.Incremental},
   401  			{ID: "asserts_warning", Name: "warning", Algo: module.Incremental},
   402  			{ID: "asserts_msg", Name: "msg", Algo: module.Incremental},
   403  			{ID: "asserts_user", Name: "user", Algo: module.Incremental},
   404  			{ID: "asserts_tripwire", Name: "tripwire", Algo: module.Incremental},
   405  			{ID: "asserts_rollovers", Name: "rollovers", Algo: module.Incremental},
   406  		},
   407  	}
   408  
   409  	chartTransactionsCount = module.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: module.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 = module.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: module.Dims{
   431  			{ID: "txn_total_started", Name: "started", Algo: module.Incremental},
   432  			{ID: "txn_total_aborted", Name: "aborted", Algo: module.Incremental},
   433  			{ID: "txn_total_committed", Name: "committed", Algo: module.Incremental},
   434  			{ID: "txn_total_prepared", Name: "prepared", Algo: module.Incremental},
   435  		},
   436  	}
   437  	chartTransactionsNoShardsCommitsRate = module.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:     module.Stacked,
   445  		Labels:   []module.Label{{Key: "commit_type", Value: "noShards"}},
   446  		Dims: module.Dims{
   447  			{ID: "txn_commit_types_no_shards_successful", Name: "success", Algo: module.Incremental},
   448  			{ID: "txn_commit_types_no_shards_unsuccessful", Name: "fail", Algo: module.Incremental},
   449  		},
   450  	}
   451  	chartTransactionsNoShardsCommitsDurationTime = module.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:   []module.Label{{Key: "commit_type", Value: "noShards"}},
   459  		Dims: module.Dims{
   460  			{ID: "txn_commit_types_no_shards_successful_duration_micros", Name: "commits", Algo: module.Incremental, Div: 1000},
   461  		},
   462  	}
   463  	chartTransactionsSingleShardCommitsRate = module.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:     module.Stacked,
   471  		Labels:   []module.Label{{Key: "commit_type", Value: "singleShard"}},
   472  		Dims: module.Dims{
   473  			{ID: "txn_commit_types_single_shard_successful", Name: "success", Algo: module.Incremental},
   474  			{ID: "txn_commit_types_single_shard_unsuccessful", Name: "fail", Algo: module.Incremental},
   475  		},
   476  	}
   477  	chartTransactionsSingleShardCommitsDurationTime = module.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:   []module.Label{{Key: "commit_type", Value: "singleShard"}},
   485  		Dims: module.Dims{
   486  			{ID: "txn_commit_types_single_shard_successful_duration_micros", Name: "commits", Algo: module.Incremental, Div: 1000},
   487  		},
   488  	}
   489  	chartTransactionsSingleWriteShardCommitsRate = module.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:     module.Stacked,
   497  		Labels:   []module.Label{{Key: "commit_type", Value: "singleWriteShard"}},
   498  		Dims: module.Dims{
   499  			{ID: "txn_commit_types_single_write_shard_successful", Name: "success", Algo: module.Incremental},
   500  			{ID: "txn_commit_types_single_write_shard_unsuccessful", Name: "fail", Algo: module.Incremental},
   501  		},
   502  	}
   503  	chartTransactionsSingleWriteShardCommitsDurationTime = module.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:   []module.Label{{Key: "commit_type", Value: "singleWriteShard"}},
   511  		Dims: module.Dims{
   512  			{ID: "txn_commit_types_single_write_shard_successful_duration_micros", Name: "commits", Algo: module.Incremental, Div: 1000},
   513  		},
   514  	}
   515  	chartTransactionsReadOnlyCommitsRate = module.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:     module.Stacked,
   523  		Labels:   []module.Label{{Key: "commit_type", Value: "readOnly"}},
   524  		Dims: module.Dims{
   525  			{ID: "txn_commit_types_read_only_successful", Name: "success", Algo: module.Incremental},
   526  			{ID: "txn_commit_types_read_only_unsuccessful", Name: "fail", Algo: module.Incremental},
   527  		},
   528  	}
   529  	chartTransactionsReadOnlyCommitsDurationTime = module.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:   []module.Label{{Key: "commit_type", Value: "readOnly"}},
   537  		Dims: module.Dims{
   538  			{ID: "txn_commit_types_read_only_successful_duration_micros", Name: "commits", Algo: module.Incremental, Div: 1000},
   539  		},
   540  	}
   541  	chartTransactionsTwoPhaseCommitCommitsRate = module.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:     module.Stacked,
   549  		Labels:   []module.Label{{Key: "commit_type", Value: "twoPhaseCommit"}},
   550  		Dims: module.Dims{
   551  			{ID: "txn_commit_types_two_phase_commit_successful", Name: "success", Algo: module.Incremental},
   552  			{ID: "txn_commit_types_two_phase_commit_unsuccessful", Name: "fail", Algo: module.Incremental},
   553  		},
   554  	}
   555  	chartTransactionsTwoPhaseCommitCommitsDurationTime = module.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:   []module.Label{{Key: "commit_type", Value: "twoPhaseCommit"}},
   563  		Dims: module.Dims{
   564  			{ID: "txn_commit_types_two_phase_commit_successful_duration_micros", Name: "commits", Algo: module.Incremental, Div: 1000},
   565  		},
   566  	}
   567  	chartTransactionsRecoverWithTokenCommitsRate = module.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:     module.Stacked,
   575  		Labels:   []module.Label{{Key: "commit_type", Value: "recoverWithToken"}},
   576  		Dims: module.Dims{
   577  			{ID: "txn_commit_types_recover_with_token_successful", Name: "success", Algo: module.Incremental},
   578  			{ID: "txn_commit_types_recover_with_token_unsuccessful", Name: "fail", Algo: module.Incremental},
   579  		},
   580  	}
   581  	chartTransactionsRecoverWithTokenCommitsDurationTime = module.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:   []module.Label{{Key: "commit_type", Value: "recoverWithToken"}},
   589  		Dims: module.Dims{
   590  			{ID: "txn_commit_types_recover_with_token_successful_duration_micros", Name: "commits", Algo: module.Incremental, Div: 1000},
   591  		},
   592  	}
   593  
   594  	chartGlobalLockAcquisitionsRate = module.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:   []module.Label{{Key: "lock_type", Value: "global"}},
   602  		Dims: module.Dims{
   603  			{ID: "locks_global_acquire_shared", Name: "shared", Algo: module.Incremental},
   604  			{ID: "locks_global_acquire_exclusive", Name: "exclusive", Algo: module.Incremental},
   605  			{ID: "locks_global_acquire_intent_shared", Name: "intent_shared", Algo: module.Incremental},
   606  			{ID: "locks_global_acquire_intent_exclusive", Name: "intent_exclusive", Algo: module.Incremental},
   607  		},
   608  	}
   609  	chartDatabaseLockAcquisitionsRate = module.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:   []module.Label{{Key: "lock_type", Value: "database"}},
   617  		Dims: module.Dims{
   618  			{ID: "locks_database_acquire_shared", Name: "shared", Algo: module.Incremental},
   619  			{ID: "locks_database_acquire_exclusive", Name: "exclusive", Algo: module.Incremental},
   620  			{ID: "locks_database_acquire_intent_shared", Name: "intent_shared", Algo: module.Incremental},
   621  			{ID: "locks_database_acquire_intent_exclusive", Name: "intent_exclusive", Algo: module.Incremental},
   622  		},
   623  	}
   624  	chartCollectionLockAcquisitionsRate = module.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:   []module.Label{{Key: "lock_type", Value: "collection"}},
   632  		Dims: module.Dims{
   633  			{ID: "locks_collection_acquire_shared", Name: "shared", Algo: module.Incremental},
   634  			{ID: "locks_collection_acquire_exclusive", Name: "exclusive", Algo: module.Incremental},
   635  			{ID: "locks_collection_acquire_intent_shared", Name: "intent_shared", Algo: module.Incremental},
   636  			{ID: "locks_collection_acquire_intent_exclusive", Name: "intent_exclusive", Algo: module.Incremental},
   637  		},
   638  	}
   639  	chartMutexLockAcquisitionsRate = module.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:   []module.Label{{Key: "lock_type", Value: "mutex"}},
   647  		Dims: module.Dims{
   648  			{ID: "locks_mutex_acquire_shared", Name: "shared", Algo: module.Incremental},
   649  			{ID: "locks_mutex_acquire_exclusive", Name: "exclusive", Algo: module.Incremental},
   650  			{ID: "locks_mutex_acquire_intent_shared", Name: "intent_shared", Algo: module.Incremental},
   651  			{ID: "locks_mutex_acquire_intent_exclusive", Name: "intent_exclusive", Algo: module.Incremental},
   652  		},
   653  	}
   654  	chartMetadataLockAcquisitionsRate = module.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:   []module.Label{{Key: "lock_type", Value: "metadata"}},
   662  		Dims: module.Dims{
   663  			{ID: "locks_metadata_acquire_shared", Name: "shared", Algo: module.Incremental},
   664  			{ID: "locks_metadata_acquire_exclusive", Name: "exclusive", Algo: module.Incremental},
   665  			{ID: "locks_metadata_acquire_intent_shared", Name: "intent_shared", Algo: module.Incremental},
   666  			{ID: "locks_metadata_acquire_intent_exclusive", Name: "intent_exclusive", Algo: module.Incremental},
   667  		},
   668  	}
   669  	chartOpLogLockAcquisitionsRate = module.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:   []module.Label{{Key: "lock_type", Value: "oplog"}},
   677  		Dims: module.Dims{
   678  			{ID: "locks_oplog_acquire_shared", Name: "shared", Algo: module.Incremental},
   679  			{ID: "locks_oplog_acquire_exclusive", Name: "exclusive", Algo: module.Incremental},
   680  			{ID: "locks_oplog_acquire_intent_shared", Name: "intent_shared", Algo: module.Incremental},
   681  			{ID: "locks_oplog_acquire_intent_exclusive", Name: "intent_exclusive", Algo: module.Incremental},
   682  		},
   683  	}
   684  
   685  	chartCursorsOpenCount = module.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: module.Dims{
   693  			{ID: "metrics_cursor_open_total", Name: "open"},
   694  		},
   695  	}
   696  	chartCursorsOpenNoTimeoutCount = module.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: module.Dims{
   704  			{ID: "metrics_cursor_open_no_timeout", Name: "open_no_timeout"},
   705  		},
   706  	}
   707  	chartCursorsOpenedRate = module.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: module.Dims{
   715  			{ID: "metrics_cursor_total_opened", Name: "opened"},
   716  		},
   717  	}
   718  	chartCursorsTimedOutRate = module.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: module.Dims{
   726  			{ID: "metrics_cursor_timed_out", Name: "timed_out"},
   727  		},
   728  	}
   729  	chartCursorsByLifespanCount = module.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:     module.Stacked,
   737  		Dims: module.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 = module.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:     module.Stacked,
   756  		Dims: module.Dims{
   757  			{ID: "wiredtiger_concurrent_txn_read_available", Name: "available"},
   758  			{ID: "wiredtiger_concurrent_txn_read_out", Name: "used"},
   759  		},
   760  	}
   761  	chartWiredTigerConcurrentWriteTransactionsUsage = module.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:     module.Stacked,
   769  		Dims: module.Dims{
   770  			{ID: "wiredtiger_concurrent_txn_write_available", Name: "available"},
   771  			{ID: "wiredtiger_concurrent_txn_write_out", Name: "used"},
   772  		},
   773  	}
   774  	chartWiredTigerCacheUsage = module.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:     module.Stacked,
   782  		Dims: module.Dims{
   783  			{ID: "wiredtiger_cache_currently_in_cache_bytes", Name: "used"},
   784  		},
   785  	}
   786  	chartWiredTigerCacheDirtySpaceSize = module.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: module.Dims{
   794  			{ID: "wiredtiger_cache_tracked_dirty_in_the_cache_bytes", Name: "dirty"},
   795  		},
   796  	}
   797  	chartWiredTigerCacheIORate = module.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: module.Dims{
   805  			{ID: "wiredtiger_cache_read_into_cache_pages", Name: "read", Algo: module.Incremental},
   806  			{ID: "wiredtiger_cache_written_from_cache_pages", Name: "written", Algo: module.Incremental},
   807  		},
   808  	}
   809  	chartWiredTigerCacheEvictionsRate = module.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:     module.Stacked,
   816  		Priority: prioWiredTigerCacheEvictionsRate,
   817  		Dims: module.Dims{
   818  			{ID: "wiredtiger_cache_unmodified_evicted_pages", Name: "unmodified", Algo: module.Incremental},
   819  			{ID: "wiredtiger_cache_modified_evicted_pages", Name: "modified", Algo: module.Incremental},
   820  		},
   821  	}
   822  )
   823  
   824  var (
   825  	chartTmplDatabaseCollectionsCount = &module.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: module.Dims{
   833  			{ID: "database_%s_collections", Name: "collections"},
   834  		},
   835  	}
   836  	chartTmplDatabaseIndexesCount = &module.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: module.Dims{
   844  			{ID: "database_%s_indexes", Name: "indexes"},
   845  		},
   846  	}
   847  	chartTmplDatabaseViewsCount = &module.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: module.Dims{
   855  			{ID: "database_%s_views", Name: "views"},
   856  		},
   857  	}
   858  	chartTmplDatabaseDocumentsCount = &module.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: module.Dims{
   866  			{ID: "database_%s_documents", Name: "documents"},
   867  		},
   868  	}
   869  	chartTmplDatabaseDataSize = &module.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: module.Dims{
   877  			{ID: "database_%s_data_size", Name: "data_size"},
   878  		},
   879  	}
   880  	chartTmplDatabaseStorageSize = &module.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: module.Dims{
   888  			{ID: "database_%s_storage_size", Name: "storage_size"},
   889  		},
   890  	}
   891  	chartTmplDatabaseIndexSize = &module.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: module.Dims{
   899  			{ID: "database_%s_index_size", Name: "index_size"},
   900  		},
   901  	}
   902  )
   903  
   904  var (
   905  	chartTmplReplSetMemberState = &module.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: module.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 = &module.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: module.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 = &module.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: module.Dims{
   945  			{ID: "repl_set_member_%s_replication_lag", Name: "replication_lag"},
   946  		},
   947  	}
   948  	chartTmplReplSetMemberHeartbeatLatencyTime = &module.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: module.Dims{
   956  			{ID: "repl_set_member_%s_heartbeat_latency", Name: "heartbeat_latency"},
   957  		},
   958  	}
   959  	chartTmplReplSetMemberPingRTTTime = &module.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: module.Dims{
   967  			{ID: "repl_set_member_%s_ping_rtt", Name: "ping_rtt"},
   968  		},
   969  	}
   970  	chartTmplReplSetMemberUptime = &module.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: module.Dims{
   978  			{ID: "repl_set_member_%s_uptime", Name: "uptime"},
   979  		},
   980  	}
   981  )
   982  
   983  var (
   984  	chartShardingNodesCount = &module.Chart{
   985  		ID:       "sharding_nodes_count",
   986  		Title:    "Sharding Nodes",
   987  		Units:    "nodes",
   988  		Fam:      "sharding",
   989  		Ctx:      "mongodb.sharding_nodes_count",
   990  		Type:     module.Stacked,
   991  		Priority: prioShardingNodesCount,
   992  		Dims: module.Dims{
   993  			{ID: "shard_nodes_aware", Name: "shard_aware"},
   994  			{ID: "shard_nodes_unaware", Name: "shard_unaware"},
   995  		},
   996  	}
   997  	chartShardingShardedDatabases = &module.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:     module.Stacked,
  1004  		Priority: prioShardingShardedDatabasesCount,
  1005  		Dims: module.Dims{
  1006  			{ID: "shard_databases_partitioned", Name: "partitioned"},
  1007  			{ID: "shard_databases_unpartitioned", Name: "unpartitioned"},
  1008  		},
  1009  	}
  1010  
  1011  	chartShardingShardedCollectionsCount = &module.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:     module.Stacked,
  1018  		Priority: prioShardingShardedCollectionsCount,
  1019  		Dims: module.Dims{
  1020  			{ID: "shard_collections_partitioned", Name: "partitioned"},
  1021  			{ID: "shard_collections_unpartitioned", Name: "unpartitioned"},
  1022  		},
  1023  	}
  1024  
  1025  	chartTmplShardChunks = &module.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: module.Dims{
  1033  			{ID: "shard_id_%s_chunks", Name: "chunks"},
  1034  		},
  1035  	}
  1036  )