一、mms安装使用
mongo集群的监控更是不好找,官网的mongodb ops manager(就是MMS)是比较好的选择了,cloud manager其实就是在线的云上的mms,我们现在使用mms就是本地服务器的形式。随便安装一台节点,不用跟mongo集群是相同的节点,只要能访问mongo集群即可,但是要注意,MMS并不是支持所有的mongdb版本,其中3.3的版本就不支持,所以一定要看清楚MMS支持的版本。安装过程如下:- 安装MMS
- 在下载ops manager的tar包,然后加压到某一目录中,例如/home/bigdata/apps/mongoms/mongodb-mms-3.4.0.383-1.x86_64。
- 因为ops manager需要用到mongo数据库做存储,所以先得有mongodb数据库,而且最好不要跟生产库同一个,因为MMS会产生几十个数据库,会弄混生产库。所以得安装独立的mongodb数据库。
- 添加MMS元数据库用户,如果MMS元数据库开启了权限验证,需要为MMS的添加专门的数据库用户
db.createUser({user: "mongodbms",pwd: "123456",roles: [ "readWriteAnyDatabase", "dbAdminAnyDatabase", "clusterMonitor" ]})
并且在conf-mms.properties配置项mongo.mongoUri需要改成如下:
mongo.mongoUri=mongodb://mongodbms:123456@bigdata5:27017/?maxPoolSize=150
参考:
如果没有开启权限验证,则不需要做这一步。- 修改配置文件/home/bigdata/apps/mongoms/mongodb-mms-3.4.0.383-1.x86_64/conf/conf-mms.properties,修改内容如下:
#就是MMS需要使用到的mongdb的连接串mongo.mongoUri=mongodb://bigdata5:27017/?maxPoolSize=150mms.centralUrl=http://bigdata1:8080#有关邮件服务器的配置,填写成功,集群出问题就会发邮件给你mms.fromEmailAddr=******@sina.cnmms.replyToEmailAddr=******@sina.cnmms.adminFromEmailAddr=******@sina.cnmms.adminEmailAddr=******@sina.cnmms.bounceEmailAddr=******@sina.cnmms.userSvcClass=com.xgen.svc.mms.svc.user.UserSvcDbmms.emailDaoClass=com.xgen.svc.core.dao.email.JavaEmailDaomms.mail.transport=smtpmms.mail.hostname=smtp.sina.cnmms.mail.port=25mms.mail.username=******@sina.cnmms.mail.password=******mms.mail.tls=mongo.replicaSet=mongo.backupdb.mongoUri=mongo.backupdb.replicaSet=ping.queue.size=100ping.thread.count=100increment.queue.size=14000increment.thread.count=35increment.gle.freq=70increment.offer.time=120000aws.accesskey=aws.secretkey=reCaptcha.enabled=falsereCaptcha.public.key=reCaptcha.private.key=twilio.account.sid=twilio.auth.token=twilio.from.num=graphite.hostname=graphite.port=2003snmp.default.hosts=snmp.listen.port=11611snmp.default.heartbeat.interval=300
在启动MMS时,会有很多必须要填的初始化步骤,如果直接在配置文件写死了,在初始化步骤的时候,就可以不填了。参数说明:
- 启动MMS
/home/bigdata/apps/mongoms/mongodb-mms-3.4.0.383-1.x86_64/bin/mongodb-mms start
参考:
- MMS首次启动进入向导
- 打开 ,注册用户,此用户是MMS的本地用户,存储在MMS的元数据库中,当清空元数据库时,这个注册的用户也就被清空了。
- 设置mongodb下载使用本地模式
- 前面一步一步配置,不清楚的按照默认配置(配置之后也可以在web界面进行更改,右上角点击admin),在第5页Miscellaneous配置时,需要配置Versions Directory,就是mongodb集群的tar包的存放目录(只需要MMS服务器端配置即可),除了mongodb在线安装下载时要用到,当后面添加existing deployment时,也会要用到此目录和安装包,如果此处没有配置或者目录下面没有安装包,添加existing deployment时会报异常。
- 新建目录/home/mongodb/mongoms/mongodb-releases,mongodb用户要有完全访问权限,同时目录下要存放mongodb的tgz包,并且要解压到那个那个目录。如下:
- 然后进入web监控界面,选择你需要安装的mongodb版本, 如果你上传了多个包,同时选择了多个版本,则添加的时候默认会安装最新的版本 。如下:
参考:
- 前面一步一步配置,不清楚的按照默认配置(配置之后也可以在web界面进行更改,右上角点击admin),在第5页Miscellaneous配置时,需要配置Versions Directory,就是mongodb集群的tar包的存放目录(只需要MMS服务器端配置即可),除了mongodb在线安装下载时要用到,当后面添加existing deployment时,也会要用到此目录和安装包,如果此处没有配置或者目录下面没有安装包,添加existing deployment时会报异常。
- 安装MMS agent。MMS服务端安装好了之后,需要先安装agent来监控mongo集群。
- 安装MMS agent有多种方法,推荐通过使用add deployment时顺带安装MMS agent,因为/data目录问题,此文件夹是在线添加mongodb集群(左边的build new)要用到的目录(添加已有deployment时不需要新建此目录),就是用来存储mongodb配置文件,目录文件等等,配置项为Data Directory Prefix,如果通过add deployment时顺带安装MMS agent,可以很好的解决此问题,但是直接安装anget导致此问题,具体查看直接安装agent的步骤。
- 直接安装agent,在mongodb的每台节点安装agent,安装方法如下图:
此文件夹是在线添加mongodb集群(左边的build new)要用到的目录,就是用来存储mongodb配置文件,目录文件等等,而且此目录是配置在根目录,所以需要用软连接链接到别处,否则根目录存储空间会不够(此问题一定要重视)。
- 在每台mongodb集群的agent目录,启动agent
nohup ./mongodb-mms-automation-agent --config=local.config >> /var/log/mongodb-mms-automation/automation-agent.log 2>&1 &
- 添加已经存在的deployment
- 集群不能先开启权限验证(等集群添加成功之后再开启权限验证),否则添加时报错,因为直接连shard也会报权限不够。
- MMS的服务端需要配置Versions Directory目录(参考上面添加MMS 服务端步骤),并将mongodb的tar.gz包放到此目录下。
- 已有集群的bind_ip不能设置,因为集群个节点之间访问,有可能会有不同形式访问。
- 选择just monitor还是automation,如下:
- 选择just monitor,如果是添加已经存在的集群,最好选择此项,这样对集群影响较小,则对集群不会有什么改动,只是监控集群。
- 选择automatic(默认选择此项),则对集群改动很大,如果是在线去官网下载mongodb对应的版本,大概一个多小时,然后将mongodb运行程序放到/var/lib/mongodb-mms-automation,将你本身的启动的mongodb程序/home/bigdata/apps/mongodb/mongodb-linux-x86_64-rhel62-3.4.0改成/val/lib下的,将你之前的mongodb的配置文件复制到你配置的data目录下,例如:/home/bigdata/apps/mongodb/data/configserver1/automation-mongod.conf。就相当于什么都改了,就是你的数据目录不变,将你的配置文件放到数据目录下。本质和在线添加new Cluster是一样的,只是数据目录指定了,不会丢失数据。
- 添加new Cluster
- 添加new Cluster步骤很简单,只需要填写一些,只需要填写多少个shard,每个shard多少个备份即可,不过要注意,要填写DB Path Prefix,这个路径就是整个数据库存储数据的路径,绝对不能填写默认的/data,因为根目录下存储可能不够,需要存到够了的数据盘
- 在下载mongodb安装包的时候,有可能会报检测到了错误,这个可以不用管。
- 修改某一个set集的primary。 在MMS中,可以修改set集是否为primary,如下图:
Priority:优先级,这个member是否优先成为primary,可以将这里改成2,3等等。 Votes:这里应该是设置这个member是否能成为primary(或者是只这个member有没有投票权?)。
- 开启权限验证。
- 如果使用MMS管理mongo集群,千万不能自己去命令行用命令添加用户,一定要使用mms的权限界面来添加用户,因为自己通过命令添加,后面通过mms开启或者关闭权限验证会出问题。开启权限验证之后,如果想要进入某一个shard查看数据库,通过mms添加的用户可以直接验证通过,但是通过命令行自己添加的用户,在某个shard的进程里,不能验证通过。
- 在mongodb的web监控界面,启用权限验证,权限验证方式只要选username/password,后面的步骤默认即可,如下图:
- 完成之后,即可看到如下的用户情况,这样权限验证及开启成功。
- 碰到的问题
- 在web监控界面中有一个节点上的mongod进程总是报Down掉了,而且集群性能也非常不稳定,最后查看得知,那一台节点的/etc/hosts跟宁外几台没有配好(也有可能宁外几台的没配好它),所以总是报那台节点的进程挂掉。
- 初始只添加一个mongs实例,后面想增加一个mongs实例,总是增加不了,mms监控界面又看不了日志,这个时候去查看启动的那台节点的mongs日志,得知/tmp/mongxx.pid没有权限,是root用户的文件,删除此文件,重新在mms监控界面添加mongs即成功了,所以当有问题,多查看日志。
二、其他监控工具
- mongodb的客户端连接工具有很多,robomongo就还不错,可以去下载,现在正在用,免费的功能足够用。
- mongodb服务器监控工具不好找,很多都不合适,或者功能差版本老,所以找不到很好的官方的监控工具,可以使用命令:mongostat --host bigdata1 --port 28300,这里的port是mongos的端口,可以看到mongo的连接数,insert数量等等,但是如果你配置的是mongos副本及,这样监控大概只能监控某一个mongos实例了。如下图:
参考: