一 Mtools介绍

mtools是一组用来解析和过滤MongoDB日志文件的脚本。mtools包括以下几个工具:

mlogfilter 可以根据时间切割日志文件,过滤慢查询等

mloginfo 返回日志文件信息,比如开始和结束时间等

mplotqueries 对日志文件进行视图展现

mlogvis 创建一个自定义html文件交互式展现

mlaunch 快速搭建本地测试环境,包括复制集合分片系统


mtools是用python写的,需要python2.6或者python2.7,目前不兼容python3

二 Mtools使用


1.安装mtools

可以使用pip直接安装mtools


yum install python-devel

pip install numpy

pip installpython-matplotlib

pipinstallmtools

或者直接下载安装

wgethttps://pypi.python.org/packages/25/fe/c9375c462c9f0592407695bb5ce784866ce7b5336b8d66141e1f3250cf1f/mtools-1.2.2.tar.gztarzxvfmtools-1.2.2.tar.gzpythonsetup.pyinstall

2.mlogfilter

mlogfilter用于解析日志,如果有多个日志文件,mlogfilter按照时间戳合并

mlogfiltermongod.log--slow--json|mongoimport-dtest-cmycoll


分析慢查询并以json格式导出并导入到test库的mycoll集合中


mlogfilter/opt/logs/mongodb/*.log--slow--json


查看某个库的某个集合的慢查询, --slow可以指定慢查询时间为多少毫秒

mlogfiltermongod.log--namespaceadmin.\$cmd--slow1000



查看某一个操作类型的慢查询,一次只能指定一个操作类型,可以是query,insert,update,delete,command,getmore

mlogfilter/opt/logs/mongodb/*.log--slow1000--namespaceorder.bill--operationquery



根据某一个线程的查看慢查询

mlogfilter/opt/logs/mongodb/*.log--slow1000--namespaceorder.bill--operationquery--threadconn1317475



--parttern P 根据匹配条件查询日志

mlogfiltermongod.log--pattern'{"_id":1,"host":1,"ns":1}


这里需要注意的是,字段名称必须用双引号包围




根据关键字过滤日志

mlogfiltermongod.log--wordassertwarningerror



根据时间范围进行日志搜索


返回所有9月份的日志

mlogfiltermongod.log--fromSep


返回5分钟之前的日志

mlogfiltermongod.log--from"now-5min"


返回当天00:00:00 到当天02:00:00 的日志

mlogfiltermongod.log--fromtoday--to+2hours


返回当天从9:30开始的日志

mlogfiltermongod.log--fromtoday9:30


3.mloginfo

mloginfo可以包括日志文件的相关信息


显示日志的查询统计信息

mloginfomongod.log--queries


对结果进行排序

mloginfomongod.log--queries--sortcountmloginfomongod.log--queries--sortsum



显示重启信息

mloginfomongod.log--restarts


分类显示日志消息

mloginfomongod.log--distinct



显示连接信息

mloginfomongod.log--connections


显示复制集信息

mloginfomongod.log--rsstate




4.mplotqueries

mplotqueries是一个可以可视化MongoDB日志文件中的操作的工具。



-- group GROUP

group参数指定数据根据什么分组然后每组一个种颜色绘制成各种图表,默认是散点分布图


GROUP可以的值有

namespace

filename

operation

thread

log2code

pattern


mplotqueriesmongod.log--groupoperation

创建一个散点分布图




mlogfiltermongod.log--operationupdate--namespacetest.users|mplotqueries--typehistogram--group"_id:ObjectId\('([^']+)'\)"


mlogfilter先过滤所有test.users的update操作,然后根据_id分组绘制直方图


如果groups的数量太大,可以使用 --group-limit 限制前几个分组








mplotqueriesmongod.log--typerange--grouplog2code--group-limit10







--type scatter(default)































参考文档:

https://github.com/rueckstiess/mtools