了解我们不熟悉的
MongoDB 系统的一种方法是从检查最繁忙的集合开始。MongoDB为此提供了顶级管理命令。
在
mongo shell 中,我们可以运行db.adminCommand(“top”)来获取所有集合在特定时间点的快照:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
... "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 客户端,以使所有新指标可用。例如:
Shell
|
1 |
pmm-admin add mongodb --username=mongodb_exporter --password=percona --host=127.0.0.1 --port=27017 --enable-all-collectors |
如果我们想覆盖上面提到的限制,使用这样的东西:
Shell
|
1 |
pmm-admin add mongodb --username=mongodb_exporter --password=percona --host=127.0.0.1 --port=27017 --enable-all-collectors -–max-collections-limit=500 |
我们也有能力只启用一些额外的收集器。例如,如果您想要除topmetrics之外的所有收集器,请指定:
Shell
|
1 |
pmm-admin add mongodb --username=mongodb_exporter --password=percona --host=127.0.0.1 --port=27017 --enable-all-collectors --disable-collectors=topmetrics |
我们还可以过滤我们有兴趣获取指标的数据库和集合。可选参数–stats-collections可以使用命名空间进行设置。
例如:
Shell
|
1 2 |
–stats-collections=test (get data
for all collections in test db) –stats-collections=test.testcol (get data only from testcol collection
of testdb) |
此外,请查看文档页面以获取更多信息。
创建仪表板
我们可以使用新可用的指标轻松创建仪表板。例如,要查看索引使用情况,我们可以使用以下
promSQL 表达式:
Shell
|
1 |
{__name__ =~ "mongodb_.*_accesses_ops"} |
这是仪表板的样子:
注意:如果上图太小,您可以在新的浏览器选项卡中打开它以更好地查看。
结论
我们可以使用这些新指标来创建仪表板,其中包含最多写入(或读取最多)的集合。我们还可以一目了然地看到工作负载的特征,以确定我们是在处理读取密集型、混合型还是写入密集型系统。
这些新收集器和指标的最重要用途之一是性能调整。通过了解更多关于您的热门或“最热门”集合的信息,您可能能够更好地调整查询和索引以提高整体性能。这些关于集合的新指标将非常有助于性能调优
请记住,这些功能目前是技术预览版,因此默认情况下处于禁用状态。
Percona Monitoring and Management 是同类最佳的开源数据库监控解决方案。它可以帮助您降低复杂性、优化性能并提高关键业务数据库环境的安全性,无论它们位于或部署在何处。




