mongo监控工具研究
一、前言
今天,领导过来问,我们的阅卷系统最近2天在钉钉监控群上发的时间不太对劲,明明8点半发的数据统计,要8点40多分才发到群上。一开始问我这个监控是不是像定时任务那样挂在服务器上的(非常肯定滴说没有这玩意),还是程序跑的(至于跑在哪,我也不知道)。叫我查下是不是阿里云的服务器时间有问题,这个我真的百分百肯定阿里云服务器还是让人放心的,不会出现跟互联网时间相差N秒到几分钟不等的情况(只有天翼云才那么不靠谱,搞到还得定时2分钟跑一次时间同步)
后来叫我查下阅卷系统的mysql的阿里云监控,看看慢查询日志,当我想把这些sql发给开发的时候,开发一把拒绝了,就说他是知道哪些sql比较慢的,不用发他。慢是因为使用到的mongo有问题,但目前没有工具去做监控。然后就有我这个题目:mongo监控工具可视化的研究了。
二、工具研究历程
老实说,我对这个mongo一点都不熟,就用过Studio 3T去连mongo(好像只乌龟图,如下,反正这动物我从来没见过,动物世界也是),对mongo的认识就停留在:命令行上创建数据库、用户授权,还有数据库导入导出的迁移工作。。。
谷歌查阅了下相关工具的资料。直觉告诉我:prometheus+grafana肯定能做,果然是有的,不过不是很想从这里入手,因为看了下导入监控模板的界面,发现其实是没有太有价值的监控数据在里面的(当然自己写应该是可以的,反正以前研究过promQL的语法,好难写,放弃了),看着就比较虚(数据库查询就是希望找到哪些sql执行效率不高,需要改善嘛,比如建索引,分表分库之类),所以放到万不得已的候选方案中。
大半天下来,研究了3种工具
1、mms(全称:MongoDB Management Service)
对服务器有侵入性(要在服务器上装东西),这玩意我不好评估(究竟会不会搞坏服务器,会不会搞死服务?),所以特意打了个快照,而且还是在之前的测试性能的临时服务器测试的(这几天要备份释放啦,搞死罢就呗,而且跟正式版环境的部署一摸一样的),生产环境反正不敢动,内网服务器感觉又不好模拟。这环境正好当白老鼠!
老实说,部署文章大部分叫去官方链接注册:https://mms.mongodb.com/。然后我就真是去注册了,然后还真的是不知所云= =,就是下面的一个界面(知道的朋友,希望能好心滴发下中文解释的说明文章)
发现部署的文章都严重滞后的,什么2017年了呀~~~终于找到官方的部署文档:https://docs.opsmanager.mongodb.com/current/application/#monitoring(好像要翻墙才能看)
执行了几个安装步骤,知道要及时止损了
1、下载: wget https://downloads.mongodb.com/on-prem-mms/rpm/mongodb-mms-4.4.7.100.20210109T1656Z-1.x86_64.rpm 2、安装: rpm -ivh https://downloads.mongodb.com/on-prem-mms/rpm/mongodb-mms-4.4.7.100.20210109T1656Z-1.x86_64.rpm 会产生目录:/opt/mongodb/mms/ 文件:/opt/mongodb/mms/conf/conf-mms.properties 3、启动: service mongodb-mms start
报错起不来,说至少要mongo 4 的版本,线上部署的是mongo3.4.7的版本,暂时没有找到mms的安装包。看看安装完的目录:/opt/mongodb/mms/, 1.6G。再看看吓人的评论,感觉学习成本有点高,先放下。
2、Mongo Management Studio Professional
对服务器无侵入。简单查询,跟studio 3T 这只乌龟使用类似,直接登录连接,仅支持查询,没有一丁点监控数据看的。
连接进去想对界面了解清楚的,可以参考这个链接(个人感觉写的不错):
http://forum.foxera.com/mongodb/topic/1700/%E5%AE%A2%E6%88%B7%E7%AB%AF%E8%BD%AF%E4%BB%B6-mongodb-compass
测试可用性
(1)数据库能监控到:
(2)单一数据库里的文档记录能监控到:
(3)看着像心电图的动态图,靠开发哥哥去了解了~~~
左边OPERATIONS:mongostat动态图
右边HOTTEST COLLECTIONS:mongotop结果,显示目前用户最常使用的集合