这是我参与2022首次更文挑战的第25天,活动详情查看2022首次更文挑战
在最近的工作中需要在docker中安装mongodb并且需要记录mongodb的日志,所以在网上搜索了一些资料,整理如下:
mongodb分为社区版和企业版,只有企业版才有审计功能。官方给的镜像是不支持审计的,需要自己手动修改镜像hub.docker.com/r/percona/p…
安装docker:
下载docker镜像:
docker pull mongo
ps:带审计功能的需要去下载其他镜像比如:hub.docker.com/r/percona/p… 并且手动修改
配置:
准备本地映射conf文件
├── conf
│ ├── mongo.conf
├── data
└── log
└── mongo.log
chmod 777 mongo.log
修改配置文件讲如下信息写入配置文件 vi mongo.log
port=27017
dbpath=/data/db/
logpath=/data/log/mongo.log
logappend=true
maxConns=10000
auth=true
oplogSize=2048
带审计功能的日志需要额外添加auditLog配置项,配置如下 vi mongo.log audit
storage:
dbPath: /data/db/
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: /data/log/mongo.log
net:
port: 27017
auditLog:
destination: file
format: JSON
path: /data/log/audit.json
filter: '{ atype:{ $in: ["authCheck","createCollection","createDatabase"] },"param.ns":{$nin:[ "admin.system.version"]},"param.command":{$nin:[ "isMaster","ismaster","saslStart","saslContinue","listCollections","listDatabases","listIndexes","collStats","find","getlasterror","buildinfo","getLastError","aggregate"] } }'
setParameter: { auditAuthorizationSuccess: true }
启动实例:
docker run -itd --name mongdb_test --privileged -p 27777:27017 -v /root/mongodb/data/:/data/db -v /root/mongodb/log/:/data/log -v /root/mongodb/conf/:/data/configdb -v /root/mongodb/conf/mongo.conf:/data/configdb/mongod.conf mongo --config /data/configdb/mongod.conf --bind_ip_all
-v 指定配置文件启动
--bind_ip_all 允许所以IP访问
--restart=always Docker服务重启容器也启动
--privileged 拥有真正的root权限
检查:
docker ps
测试:
进入docker容器或者外部直接连接
docker exec -it mongodb bash
mongo
> use admin #切换数据库,如果没有的话就是创建库
> db.createUser({user:'super',pwd:'super', roles:[{role:'root', db:'admin'}]}) #创建用户
> db.auth("super","super") #切换用户
> db.test.find().pretty() #查找所有用户
学习资料:
www.cnblogs.com/xuchen0117/…
blog.csdn.net/weixin_4239…
www.percona.com/blog/2017/0…
www.cnblogs.com/moumouLiu/p…
https://severalnines.com/database-blog/audit-logging-mongodb
hub.docker.com/r/percona/p…