0 总体介绍
MongoDB Ops Manager(MMS)是一个官方提供的自动化监控和备份MongoDB基础设施服务。其中监控服务是免费的,备份服务是收费的。
- 监控:Monitoring Agent提供关键数据库和硬件指标的实时报告,可视化和警报
- 备份:Backup Agent提供MongoDB副本集和分片集群的计划快照和恢复时间点
1 准备工作
1.1 系统镜像准备
系统镜像准备,选择centos6.10
版本的系统镜像,centos7.x
的系统镜像使用systemctl
命令有问题,问题解决参见https://hub.docker.com/r/centos/systemd。
docker pull centos:6.10
docker tag docker.io/centos:6.10 192.168.137.129/public/centos:6.10
1.2 MongoDB Ops Manager安装包准备
MongoDB Ops Manager安装包准备,https://www.mongodb.com/download-center/ops-manager,Versions选择4.0.11(stable)
,Platforms选择Red Hat + CentOS 6,7
,Packages选择RPM
。并将安装包放到192.168.137.129:/var/ftp/pub/mms4.0.12/
。
在192.168.137.129
启动容器docker run -it --rm 192.168.137.129/public/centos:6.10 bash
,将MongoDB Ops Manager安装包mongodb-mms-4.0.11.50485.20190502T1847Z-1.x86_64.rpm
拷贝至容器内,执行sudo rpm -ivh mongodb-mms-4.0.11.50485.20190502T1847Z-1.x86_64.rpm
,将容器内的/opt/mongodb/mms/agent
目录拷贝出来,放置到192.168.137.129
主机的/var/ftp/pub/mms4.0.12/
目录,并在该目录执行createrepo ./
。
1.3 repo文件准备
编辑repo文件,centos6.10.repo
和mms4.0.12.repo
。在192.168.137.129
主机执行命令。
cat << EOF > /data/images/mongodb-monitor/manager/centos6.10.repo
[centos6.10]
name=centos6.10
baseurl=ftp://192.168.137.129/pub/centos6.10/
enabled=1
gpgcheck=0
EOF
cat << EOF > /data/images/mongodb-monitor/manager/mms4.0.12.repo
[mms4.0.12]
name=mms4.0.12
baseurl=ftp://192.168.137.129/pub/mms4.0.12/
enabled=1
gpgcheck=0
EOF
1.4 gen.key文件准备
gen.key是一个24字节的二进制文件,用于加密和解密Ops Manager的后备数据库和用户凭据。在192.168.137.129
主机执行命令。
openssl rand 24 > /data/images/mongodb-monitor/manager/gen.key
chmod 600 /data/images/mongodb-monitor/manager/gen.key
1.5 conf-mms.properties配置文件准备
从1.2步容器/opt/mongodb/mms/conf/
目录中拷贝conf-mms.properties
到192.168.137.129
主机的/data/images/mongodb-monitor/manager/
目录。编辑配置文件
mms.ignoreInitialUiSetup=true
mongo.mongoUri=mongodb://root:MMS_MONGO_PASSWD@MMS_MONGO_URI
mms.centralUrl=http://SERVER_IP:BASE_PORT
mms.fromEmailAddr=JiangJamesL@mail.com
mms.replyToEmailAddr=JiangJamesL@mail.com
mms.adminEmailAddr=JiangJamesL@mail.com
mms.mail.transport=smtp
mms.mail.hostname=stmp.mail.com
mms.mail.port=25
## default: 90s
#mms.monitoring.agent.session.timeoutMillis=90000
## 1: 55s 2: 27s 3: 18s 4: 14s default: 4
#mms.monitoring.agent.standbyCollectionFactor=4
#mms.https.ClientCertificateMode=none
#mms.emailDaoClass=com.xgen.svc.core.dao.email.JavaEmailDao
automation.versions.source=local
automation.versions.directory=/opt/mongodb/mms/mongodb-releases/
mongo.ssl=false
2 MongoDB Ops Manager镜像制作
2.1 编写docker-entrypoint.sh
在192.168.137.129
主机/data/images/mongodb-monitor/manager/
目录下编写docker-entrypoint.sh。
#!/bin/bash
serverip=$(ip addr|grep inet|grep 192.168.|grep -v inet6|awk '{print $2}'|cut -d/ -f1)
if [ "${serverip}" == "" ]; then
echo "network error !!!"
exit 1
else
SERVER_IP=${serverip}
fi
if [ "${MMS_BASE_PORT}" == "" -o "${MMS_MONGO_PASSWD}" == "" -o "${MMS_MONGO_URI}" == "" ]; then
echo "MMS_BASE_PORT && MMS_MONGO_PASSWD && MMS_MONGO_URI must be set !!!"
exit 1
fi
sed -i "/^BASE_PORT/cBASE_PORT=${MMS_BASE_PORT}" /opt/mongodb/mms/conf/mms.conf
sed -i "s/MMS_MONGO_PASSWD/${MMS_MONGO_PASSWD}/g" /opt/mongodb/mms/conf/conf-mms.properties
sed -i "s/MMS_MONGO_URI/${MMS_MONGO_URI}/g" /opt/mongodb/mms/conf/conf-mms.properties
sed -i "s/BASE_PORT/${MMS_BASE_PORT}/g" /opt/mongodb/mms/conf/conf-mms.properties
sed -i "s/SERVER_IP/${SERVER_IP}/g" /opt/mongodb/mms/conf/conf-mms.properties
service mongodb-mms start
tail -f /var/log/lastlog
2.2 编写Dockerfile
在192.168.137.129
主机/data/images/mongodb-monitor/manager/
目录下编写Dockerfile。
FROM 192.168.137.129/public/centos:6.10
MAINTAINER JiangJamesL "JiangJamesL@mail.comn"
LABEL version="4.0.11" description="mongodb-mms-manager-4.0.11"
RUN rm -f /etc/yum.repos.d/CentOS-*.repo
COPY mms4.0.12.repo centos6.10.repo /etc/yum.repos.d/
RUN echo root:1w8*Caesy6^9gg5y | chpasswd && \
yum install -y initscripts mongodb-mms
COPY gen.key conf-mms.properties /opt/mongodb/mms/conf/
RUN cp -p /opt/mongodb/mms/conf/gen.key /etc/mongodb-mms/ && \
chown mongodb-mms:mongodb-mms /etc/mongodb-mms/gen.key
COPY docker-entrypoint.sh /
CMD ["/docker-entrypoint.sh"]
2.3 MongoDB Ops Manager镜像制作
在192.168.137.129
主机/data/images/mongodb-monitor/manager/
目录下执行命令。
docker build -t 192.168.137.129/common/mongodb-mms-manager:4.0.11-1.0.0 .
docker push 192.168.137.129/common/mongodb-mms-manager:4.0.11-1.0.0
2.4 镜像测试
在192.168.137.129
主机执行命令,等待容器启动后,使用浏览器访问http://192.168.137.129:12345
查看MongoDB Ops Manager管理界面。
docker run -d --net=host -e MMS_BASE_PORT=12345 -e MMS_MONGO_PASSWD=4yKEYS4wdVya -e MMS_MONGO_URI=192.168.137.129:27007,192.168.137.130:27007,192.168.137.131:27007 192.168.137.129/common/mongodb-mms-manager:4.0.11-1.0.0
注:
- MMS_BASE_PORT:设置MongoDB Ops Manager管理界面访问端口。
- MMS_MONGO_PASSWD:MongoDB Ops Manager需要使用的Mongodb集群root密码,如果需要使用加密串,可自行在
docker-entrypoint.sh
编写加密解密脚本。- MMS_MONGO_URI:MongoDB Ops Manager需要使用的Mongodb集群连接串。
3 MongoDB Ops Agent镜像制作
3.1 编写docker-entrypoint.sh
在192.168.137.129
主机/data/images/mongodb-monitor/agent/
目录下编写docker-entrypoint.sh。
#!/bin/bash
sed -i "/^mmsGroupId/cmmsGroupId=${MMS_GROUP_ID}" /etc/mongodb-mms/automation-agent.config
sed -i "/^mmsApiKey/cmmsApiKey=${MMS_API_KEY}" /etc/mongodb-mms/automation-agent.config
sed -i "/^mmsBaseUrl/cmmsBaseUrl=${MMS_BASE_URL}" /etc/mongodb-mms/automation-agent.config
service mongodb-mms-automation-agent start
tail -f /var/log/lastlog
3.2 编写Dockerfile
在192.168.137.129
主机/data/images/mongodb-monitor/agent/
目录下编写Dockerfile。
FROM 192.168.137.129/public/centos:6.10
MAINTAINER JiangJamesL "JiangJamesL@mail.comn"
LABEL version="5.4.18" description="mongodb-mms-automation-agent-manager-5.4.18"
RUN rm -f /etc/yum.repos.d/CentOS-*.repo
COPY mms4.0.12.repo.repo centos6.10.repo /etc/yum.repos.d/
RUN echo root:1w8*Caesy6^9gg5y | chpasswd && \
yum install -y initscripts mongodb-mms-automation-agent-manager
COPY docker-entrypoint.sh /
CMD ["/docker-entrypoint.sh"]
3.3 MongoDB Ops Agent镜像制作
在192.168.137.129
主机/data/images/mongodb-monitor/manager/
目录下执行命令。
docker build -t 192.168.137.129/common/mongodb-mms-agent:5.4.18-1.0.0 .
docker push 192.168.137.129/common/mongodb-mms-agent:5.4.18-1.0.0
3.4 镜像测试
在192.168.137.129
主机执行命令,等待容器启动后,在MongoDB Ops Manager管理界面填写被监控的Mongodb集群信息。
docker run -d --net=host -e MMS_API_KEY=5cdd5bcead965c0091a2b3178409e0ef704c1a49741441f333a087d5 -e MMS_BASE_URL=http://192.168.137.129:12345 -e MMS_GROUP_ID=5cdd5b84ad965c0091a2b2a3 192.168.137.129/common/mongodb-mms-agent:5.4.18-1.0.0
注:
- MMS_API_KEY:MongoDB Ops Manager管理界面添加agent时,界面上使用
+Generate Key
计算。- MMS_BASE_URL:MongoDB Ops Manager URL。
- MMS_GROUP_ID:MongoDB Ops Manager管理界面添加agent时,界面上自动生成。