充分利用MongoDB的监控功能

Posted MongoDB数据库

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了充分利用MongoDB的监控功能相关的知识,希望对你有一定的参考价值。

#监控


在完成应用系统开发并上线运行后,你就可以让全世界分享自己的工作成果了。在召开系统发布会之前,应密切关注数据库的运行性能。数据库监控是生产准备环节的必要组成部分,但在预备发布阶段很容易被忽视。


不用担心,MongoDB已经替你考虑到了这一点。我们将告诉你如何监控数据库,无论数据库是安装在本地,还是通过MongoDB Atlas放在云端托管。现在,让我们先看看你能获得哪些免费服务。



 Atlas上的免费服务 


每个MongoDB Atlas集群都提供监控功能。如果你没有使用Atlas,可以从这里

https://www.mongodb.com/cloud/atlas

获得一个免费的M0级复制集,自行了解我们将要讨论的仪表盘功能。以下是一张指标仪表盘的快照,来自于免费的M0级复制集。


充分利用MongoDB的监控功能


在这里我们看到的是来自复制集三个节点的曲线图。在这个实例中,所有活动都发生在第一个主节点。上图中的指标是一些控件,我们可以按照可调整的粒度查看特定时间段的指标。在曲线图上移动指针,你就会得到相应时间点的精确数据。


曲线图第一行显示的是在每个节点上执行的操作总数,通过选择“显示每张图表的操作计数器”复选框,可以将这张图表分解成不同的操作计数器。下面一行显示的是随时间推移的连接数量信息。


向下滚动,我们会看到更多图表。现在,我们看到的是部署尺寸(只能看到较小的集群和复制集上的数据)和网络连接数。


充分利用MongoDB的监控功能


你还可以凭兴趣切换行或节点,无论它们是在可视范围之内,还是之外。这就是你的关键指标集,如果你对Atlas集群进行扩展,Atlas会自动为你采集更多的数据,稍后我们还会对此进行介绍。



 本地MongoDB的免费服务 


当然,你也可以在本地开发并使用MongoDB这一随处运行的数据库。好消息是,我们为你提供了一个免费的监控解决方案,更好的消息是,你已经拥有了它,因为它已植入到了你的MongoDB服务器中。只要在本地服务器上运行db.enableFreeMonitoring(),你就可以将指标发送给我们的免费监控服务。通过这项服务,你可以在一个配有丰富图表的环境中查看过去24小时的活动。该命令本身会返给你一个网址,通过该网址可以查看指标数据:


充分利用MongoDB的监控功能


如果忘记了这个网址,你可以使用mongo shell登录本地数据库,然后就可以看到网址了。如果你想确保这些指标的私密性,请安全保存好这个网址。


以下是一张本地MongoDB的截图,它展示的是我输入纽约市出租车数据集后出现的结果。你可以看到CPU利用率、指令运行时间和磁盘利用率等数据。


充分利用MongoDB的监控功能


在此可以看出,我们主要执行的是写操作,而且是用一个650MB的数据集以恒定的速度逐渐填满了一个驱动器。这些写操作的执行时间也很稳定。向下滚动屏幕,就可以看到更多的指标:


充分利用MongoDB的监控功能


现在可以看到,我们每秒在系统中插入了大约30,000个文档;另外还能看到存储利用率数据,无论是驻留存储,还是虚拟存储;同时,还有一个相关的网络流量突发情况(本实例中,只能在本地访问MongoDB,因此,该突发情况一定出现在本地接口)。继续向下滚动屏幕,就可以看到一些关于操作、复制和查询效率的指标:


efficiency


充分利用MongoDB的监控功能


目前没有正在进行的复制活动,而且我们也没有执行数据库的查询操作,因此,后面的两项指标为0。如果是更为典型的工作负载,这里就会出现大量关于性能的洞察数据。继续滚动屏幕,最后我们看到的是系统队列和CPU统计数据:


充分利用MongoDB的监控功能


请注意我们移动光标的方式:将光标移动到曲线图相应的时间位置,我们就可获得任意特定时间点的细分数据。


好,关于本地MongoDB,我们介绍的信息已经足够多了。与Atlas不同,免费监控服务只能保存24小时的数据库监控数据,因此最好将其用于检查数据库的即时性能状况。


通过db.disableFreeMonitoring()可以很方便地关闭这项服务。



 命令行方式的监控操作 


如果你习惯以MongoDB命令行的方式来工作,我们还提供了另一套监控工具。Mongostat和mongotop命令能够生成一系列性能数据,并在终端上显示出来。MongoDB还提供了一些函数,通过它们也可以获取指标数据,例如:db.ServerStatus()、db.stats()和replSetGetStatus等管理命令。


尽管有这些功能,你仍然需要亲力亲为,利用这些功能对数据进行采集和管理。你还可以通过第三方工具监控历史数据,以实现数据的可视化。另外,不要忘记使用日志;MongoDB服务器的日志中饱含大量的系统性能信息,能够帮助你精确定位并查询导致缓慢的问题根源。



 Atlas上的额外收费服务 


在结束讨论之前,我们必须提一提剩下的内容,那就是MongoDB Atlas可以提供的监控服务。Atlas的免费监控服务是必要监控指标的最小集。如果你进到付费集群,指标的数量就会增加。例如,在M10集群,你可以看到下图中的所有指标:


充分利用MongoDB的监控功能


不仅是数据库指标,还包括一系列支撑硬件和操作系统的指标,都可以为你提供完整的Atlas集群工作状态图。这张图是基于历史日志数据构建起来的。


如果你希望获得更多的即时信息,可以在Atlas集群视图上通过实时标签获取你的集群行为即时信息。这些信息包括CPU和磁盘使用率,同时还包括:最活跃的采集活动、队列执行时间和正在运行的操作数量。你可以把它想象成监测数据库“心跳”的听诊器。



随着集群规模的增加,我们会提供深入的历史指标分析和实时快照功能,这些功能都是作为部署内容的一部分自动提供的。


因此,我们有免费的MongoDB Atlas监控服务,包括免费服务和免费工具,还有收费的MongoDB Atlas监控工具,它具备实时查看功能。现在,你准备选择哪种服务呢?我们建议你选择在配置最低的情况下能够提供最丰富信息的服务。


更多学习资源,请访问MongoDB官方网站www.mongodb.com/zh


MongoDB数据库


扫描关注,获取更多精彩内容



以上是关于充分利用MongoDB的监控功能的主要内容,如果未能解决你的问题,请参考以下文章

Mongodb监控

MongoDB负载信息一目了然 阿里云HDM重磅发布MongoDB监控和诊断功能

011.MongoDB性能监控

MySQL-MongoDB开源监控利器PMM增加slack报警功能

Mongodb常用的性能监控命令

mongodb通过profile来监控数据