原文地址:Monitoring MongoDB Collection Stats with Percona Monitoring and Management
原文作者:Ivan Groenewold
了解我们不熟悉的 MongoDB 系统的一种方法是从检查最繁忙的集合开始。MongoDB为此提供了顶级管理命令。
在 mongo shell 中,我们可以运行db.adminCommand(“top”)来获取所有集合在特定时间点的快照:
...
"test.testcol" : {
"total" : {
"time" : 17432,
"count" : 58
},
"readLock" : {
"time" : 358,
"count" : 57
},
"writeLock" : {
"time" : 17074,
"count" : 1
},
"queries" : {
"time" : 100,
"count" : 1
},
"getmore" : {
"time" : 0,
"count" : 0
},
"insert" : {
"time" : 17074,
"count" : 1
},
"update" : {
"time" : 0,
"count" : 0
},
"remove" : {
"time" : 0,
"count" : 0
},
"commands" : {
"time" : 0,
"count" : 0
}
}
...
在上面的摘录中,我们可以看到有关testcol集合的一些详细信息。对于每种操作类型,我们都有服务器花费的时间量(以微秒为单位),以及发出的操作数的计数器。总部分只是针对集合的所有操作类型的总和。
在这种情况下,我执行了一个插入,然后执行了一个查找命令来检查结果,因此计数器对于每个操作都是一个。
因此,通过将上述值的样本存储在一组指标中,我们可以轻松查看 MongoDB 实例的趋势和历史使用情况。
Percona 监控和管理 (PMM) 中的主要指标
PMM 2.26 包括对mongodb_exporter的更新,因此我们现在能够使用 MongoDB top 命令的输出获取指标。
例如:

如您所见,指标名称与我们看到的 top 命令的输出相关。在此版本中,dbname和集合名称是指标名称的一部分(将来可能会根据社区反馈进行更改)。
收集和索引统计
除此之外,PMM 2.26 还包括收集数据库、集合和索引统计信息的能力。使用这些指标,我们可以随着时间的推移监控收集计数、数据增长和索引使用情况。
例如,我们可以收集有关数据库的以下信息:

以下是test.testcol集合的colstats指标:

注意:默认情况下,如果您的收藏数量超过 200 个,PMM 将不会收集此信息(此数字可能会发生变化)。原因是为了避免指标收集中的过多开销,这可能会对性能产生不利影响。您可以使用–max-collections-limit选项覆盖此行为。
启用其他收集器
默认情况下,PMM 客户端仅在启用了诊断数据和副本集状态收集器的情况下启动。我们可以使用–enable-all-collectors参数运行 PMM 客户端,以使所有新指标可用。例如:
pmm-admin add mongodb --username=mongodb_exporter --password=percona --host=127.0.0.1 --port=27017 --enable-all-collectors
如果我们想覆盖上面提到的限制,使用这样的东西:
pmm-admin add mongodb --username=mongodb_exporter --password=percona --host=127.0.0.1 --port=27017 --enable-all-collectors -–max-collections-limit=500
我们也有能力只启用一些额外的收集器。例如,如果您想要除topmetrics之外的所有收集器,请指定:
pmm-admin add mongodb --username=mongodb_exporter --password=percona --host=127.0.0.1 --port=27017 --enable-all-collectors --disable-collectors=topmetrics
我们还可以过滤我们有兴趣获取指标的数据库和集合。可选参数–stats-collections可以使用命名空间进行设置。
例如:
–stats-collections=test (get data for all collections in test db)
–stats-collections=test.testcol (get data only from testcol collection of testdb)
此外,请查看文档页面以获取更多信息。
创建仪表板
我们可以使用新可用的指标轻松创建仪表板。例如,要查看索引使用情况,我们可以使用以下 promSQL 表达式:
{__name__ =~ "mongodb_.*_accesses_ops"}
这是仪表板的样子:

注意:如果上图太小,您可以在新的浏览器选项卡中打开它以更好地查看。
结论
我们可以使用这些新指标来创建仪表板,其中包含最多写入(或读取最多)的集合。我们还可以一目了然地看到工作负载的特征,以确定我们是在处理读取密集型、混合型还是写入密集型系统。
这些新收集器和指标的最重要用途之一是性能调整。通过了解更多关于您的热门或“最热门”集合的信息,您可能能够更好地调整查询和索引以提高整体性能。这些关于集合的新指标将非常有助于性能调优
请记住,这些功能目前是技术预览版,因此默认情况下处于禁用状态。
Percona Monitoring and Management 是同类最佳的开源数据库监控解决方案。它可以帮助您降低复杂性、优化性能并提高关键业务数据库环境的安全性,无论它们位于或部署在何处。




