使用Mtools分析MongoDB日志文件

https://github.com/rueckstiess/mtools/issues

一 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 install python-matplotlib

1
  pip  install  mtools

或者直接下载安装

 

1
2
3
wget https: //pypi .python.org /packages/25/fe/c9375c462c9f0592407695bb5ce784866ce7b5336b8d66141e1f3250cf1f/mtools-1 .2.2. tar .gz
tar  zxvf  mtools -1.2.2. tar .gz
python setup.py  install

2.mlogfilter

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

1
mlogfilter mongod.log --slow --json | mongoimport -d  test  -c mycoll


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


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


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

1
mlogfilter mongod.log --namespace admin.\$cmd --slow 1000



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

1
mlogfilter  /opt/logs/mongodb/ *.log --slow  1000  --namespace order.bill   --operation query



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

1
mlogfilter  /opt/logs/mongodb/ *.log --slow  1000  --namespace order.bill   --operation query  --thread conn1317475



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

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


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




根据关键字过滤日志

1
mlogfilter mongod.log --word assert warning error



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


返回所有9月份的日志

1
mlogfilter mongod.log --from Sep


返回5分钟之前的日志

1
mlogfilter mongod.log --from  "now -5min"


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

1
mlogfilter mongod.log --from today --to +2hours


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

1
mlogfilter mongod.log --from today 9:30


3.mloginfo

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


显示日志的查询统计信息

1
mloginfo mongod.log --queries


对结果进行排序

1
2
mloginfo mongod.log --queries -- sort  count
mloginfo mongod.log --queries -- sort  sum



显示重启信息

1
mloginfo mongod.log --restarts


分类显示日志消息

1
mloginfo mongod.log --distinct



显示连接信息

1
mloginfo mongod.log --connections


显示复制集信息

1
mloginfo mongod.log --rsstate




4.mplotqueries

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



-- group GROUP

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


GROUP可以的值有

namespace  

filename

operation

thread

log2code

pattern


1
mplotqueries mongod.log --group operation

创建一个散点分布图

Example plot: operation groups



1
2
mlogfilter mongod.log --operation update --namespace  test . users  |
   mplotqueries -- type  histogram --group  "_id: ObjectId\('([^']+)'\)"


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


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




Example plot: regex groups




1
mplotqueries mongod.log -- type  range --group log2code --group-limit 10



Example plot: group limits




--type scatter(default)













  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值