一. 需求背景

MongoDB数据库的强大的文档模型使其成为处理数据的最佳方式。文档适用于广泛的流行数据模型,支持各种各样的场景。文档模型可以包含键值、关系数据集和图形数据集,当然,还可以包含父子关系、列表/数组以及其他层次关系,它们比传统的关系型数据库技术(表格)具有更大的灵活性。由于文档模型与主流面向对象编程语言中的对象直接对应,因此开发人员可以根据现实世界中实体之间的自然关系存储和组织数据,从而将重点放在以最有意义的方式构建应用程序上,而不是围绕其数据库的局限性开展工作。因此,使用文档模型显著提高了开发人员的生产效率,使组织机构能够更快地进行创新。MongoDB CEO 兼总裁Dev Ittycheria称之为: 文档即未来。

但是MongoDB通用的监控工具有限,其中又有一部分还是要收费的,通过工具 Percona Monitoring and Management 进行监控,是个不错的选择。但在慢查询收集方面,需要开启Profiling,对性能方面会有一些侵害,另外,更细粒度的监控项维护起来也不容易。如果不想不开启Profiling,我们还可以通过收集分析mongodb的运行log来来进行性能监控,并且通过运行日志还可以获取更多的运行状态相关的信息。

今天介绍的就是一款专门用来读取、分析MongoDB运行日志的工具--Mtools。

二. Mtools 的介绍

Mtools的工具包和功能可以通过下面的List来描述。

工具包 工具 功能概览 实现功能 执行的命令(案例)
mtools Mlogfilter mlogfileter可以简单理解为日志的过滤器 列出日志文件中所有的slow log(以json格式输出)  mlogfilter mongod.log --slow 100 --json
通--from 和 --to 参数限定搜索范围 mlogfilter mongod.log --slow 100 --from 2018-12-10T09:32:26 --to 2018-12-10T09:58:26
上面命令限定范围 也通过 to 来指定时间段,例如监控10min内的数据 mlogfilter mongod.log  --from 2018-12-10T09:32:26 --to +10min
通过mlogfilter查询日志中某个表的slow log(超过100ms的) mlogfilter --namespace xxx.xx --slow 100 mongod.log
mloginfo mloginfo可以过滤总结出slow query的情况,以及为日志中各类最常常出现情况进行统计 通过mloginfo统计日志中connections的来源情况 mloginfo mongod.log --connections
通过mloginfo查看日志中所记录的复制集状态变更(如果有的话) mloginfo mongod.log --rsstate
通过mloginfo统计查看日志中慢查询的分类 mloginfo --queries mongod.log
通过mloginfo统计日志中各类信息的distinct mloginfo mongod.log --distinct
mplotqueries 用不同类型的图将日志文件可视化(需要安装matplotlib) 通过mplotqueries进行慢查询散点分布图绘制 mplotqueries mongod.log --output-file slow01-2.png
通过mplotqueries进行慢查询散点分布图绘制,且只返回前10个 mplotqueries mongod.log --output-file slow01-4.png --logscale --group-limit 10
仅看日志中某一个表的慢查询散点分布情况 mlogfilter mongod.log --namespace xx.xxx |mplotqueries --output-file slow01-5.png
通过mplotqueries来对日志中的慢查询进行操作类型分布 mplotqueries mongod.log --group operation --output-file slow01-6.png
查看每小时的insert情况 mlogfilter mongod.log --operation insert | mplotqueries --type histogram --bucketsize 3600 --output-file 01-11.png

注:mongod.log 是MonogoDB 运行时产生的日志文件名字,也可以是其它日志文件名。

三. Mtools安装的详细步骤

很多同学抱怨安装比较麻烦,错误很多,在这儿,把安装的详细步骤梳理如下。

Step 1  下载pip程序包

wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb"

Step 2 解析下载的文件

 Step 3 安装 python setup.py install

此时报错,提示错误信息如截图

Step 4  针对上述错误,需安装setuptools,python下的setuptools。此程序包带有一个easy_install的工具,在安装python的每三方模块、工具时很有用,。

下载

wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-12.0.3.tar.gz#md5=f07e4b0f4c1c9368fcd980d888b29a65

解压

Step 5 转到解析后的文档中,再次安装 python setup.py install

安装成功。

Step 6 安装 yum -y install python-pip

如果提示错误

No package python-pip available.

Error: Nothing to do

请看后面的附注

Step 7  安装  mtools

执行命令  pip install mtools

Step 8 安装效果验证

使用其中的mlogfileter命令,查看日志超过100ms的慢查询。

通过mloginfo统计日志中connections的来源情况

验证工具安装OK。

安装后,工具包所在的文档位于 /usr/lib/python2.7/site-packages/mtools 下 (自动生成)

四 附录

A:解决 No package python-pip available的问题

此错误的原因主要是没有安装epel。索引, 运行以下命令,安装epel

安装 epel-release后,再次安装 python-pip,不再报错。

 B:运行 mplotqueries 工具 需安装 python-matplotlib 包,和修改mplotqueries.py文件

否则报错,具体信息如下:

安装命令 yum install python-matplotlib

到此,还没结束,还会报错,我们还需要修改 /usr/lib/python2.7/site-packages/mtools/mplotqueries/mplotqueries.py 执行文件。

添加 以下指令

import matplotlib as mpl
mpl.use('Agg')

添加前

添加后

再次执行 mplotqueries 命令后,看出生成了我们想要的 01-2.png 统计文件

本文版权归作者所有,未经作者同意不得转载,谢谢配合!!!

推荐一款关于MongoDB日志分析的工具--Mtools的更多相关文章

  1. 推荐15款最好的 Twitter Bootstrap 开发工具

    Twitter Bootstrap 自从2011年最初发布到网上后,迅速成为 Web 领域最流行的响应式前端开发框架之一,是网页设计的优秀实践.Twitter Bootstrap 框架包含了众多的预定 ...

  2. 推荐10款非常优秀的 HTML5 开发工具

      HTML5 发展如火如荼,随着各大浏览器对 HTML5 技术支持的不断完善以及 HTML5 技术的不断成熟,未来 HTML5 必将改变我们创建 Web 应用程序的方式.今天这篇文章向大家推荐10款 ...

  3. 推荐五款优秀的PHP代码重构工具

    在软件工程学里,重构代码一词通常是指在不改变代码的外部行为情况下而修改源代码.软件重构需要借助工具完成,而重构工具能够修改代码同时修改所有引用该代码的地方.本文收集了五款出色的PHP代码重构工具,以帮 ...

  4. 推荐两款好用的反编译工具(Luyten,Jadx)

    使用JD-Gui打开单个.class文件,总是报错// INTERNAL ERROR 但当我用jd-gui反编译前面操作获得的jar文件的时,但有一部分类不能显示出来--constants类,仅仅显示 ...

  5. 推荐一款优秀的web自动化测工具

    在业务使用的自动化测试工具很多.有开源的,有商业化的,各有各得特色,各有各得优点!下面我就介绍几个我用过的一款非常优秀的国产自动化测试工具.在现有的自动化软件当中,都是以元素的name.id.xpat ...

  6. 推荐一款阿里开源的 Java 诊断工具,好用到爆!

    Arthas是什么鬼? Arthas是一款阿里巴巴开源的 Java 线上诊断工具,功能非常强大,可以解决很多线上不方便解决的问题. Arthas诊断使用的是命令行交互模式,支持JDK6+,Linux. ...

  7. 测试开发:推荐一款阿里最新 Python 自动化开源工具!

    大家好,我是麦小米,是狂师老师全栈测开训练营中的一名学员. 如果之前做过iOS自动化的同学相信都知道,一直以来,iOS自动化的实现&执行都必须依赖 Mac 系统,其主要原因是因为需要通过 xc ...

  8. 推荐10款最常用的Android开发工具

    我们使用各种语言进行开发时,总是会用到各种各样的开发工具.有些开发工具是开发人员的必备品,有些则是为了提高开发效率而用.Android开发同样也会用到多种开发工具,供开发人员设计.创建.测试和发布程序 ...

  9. 推荐10款免费的在线UI测试工具

    发布网站之前至关重要的一步是网站测试.网站测试要求我们全面地运行网站并通过所有基本测试,如响应式设计测试.安全测试.易用性测试.跨浏览器兼容性.网站速度测试等. 网站测试对SEO.搜索引擎排名.转换率 ...

随机推荐

  1. [Swift]LeetCode272. 最近的二分搜索树的值 II $ Closest Binary Search Tree Value II

    Given a non-empty binary search tree and a target value, find k values in the BST that are closest t ...

  2. 机器学习入门18 - 生产机器学习系统(Production ML Systems)

    除了实现机器学习算法之外,机器学习还包含许多其他内容.生产环境机器学习系统包含大量组件.无需自行构建所有内容,而是应该尽可能重复使用常规机器学习系统组件.通过了解机器学习系统的一些范例及其要求,可以明 ...

  3. 机器学习入门15 - 训练神经网络 (Training Neural Networks)

    原文链接:https://developers.google.com/machine-learning/crash-course/training-neural-networks/ 反向传播算法是最常 ...

  4. shell的exec命令

    工作中遇到运维人员挂supervisor的时候建议启动使用命令control.sh start, 并且在control.sh 里面启动命令: exec -c ./bin/xxx -f config/x ...

  5. SpringCloud(7)---网关概念、Zuul项目搭建

    SpringCloud(7)---网关概念.Zuul项目搭建 一.网关概念 1.什么是路由网关 网关是系统的唯一对外的入口,介于客户端和服务器端之间的中间层,处理非业务功能 提供路由请求.鉴权.监控. ...

  6. requirejs、vue、vuex、vue-route的结合使用,您认为可行吗?

    在五一节之前和一网友讨论前端技术时,对方提到vue.vue-route如果配合requirejs应用.当时的我没有想得很明白,也没能这位网友一个准确的回复,但我许诺于他五一研究后给他一个回复.本是一天 ...

  7. C++版 - 剑指offer 面试题39:判断平衡二叉树(LeetCode 110. Balanced Binary Tree) 题解

    剑指offer 面试题39:判断平衡二叉树 提交网址:  http://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222?tpId= ...

  8. RS232串口的Windows编程纪要

    再次是一篇入门文,各路神仙退散. 直接进入主题,又不是历史课,关于RS232那些前世今生的故事就不摆了. 硬件链接 首先以9针小口为例(大口应当只能去博物馆看了吧)看一下管脚排布,其实RS232本身没 ...

  9. PC逆向之代码还原技术,第六讲汇编中除法代码还原以及原理第二讲,被除数是正数 除数非2的幂

    目录 一丶简介 二丶代码还原讲解 1.被除数无符号 除数非2的幂 2.被除数无符号 除数为特例7 三丶代码还原总结 一丶简介 上一篇博客说的除2的幂. 如果被除数是有符号的,那么会进行调整,并使用位操 ...

  10. 痞子衡嵌入式:语音处理工具Jays-PySPEECH诞生记(5)- 语音识别实现(SpeechRecognition, PocketSphinx0.1.15)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是语音处理工具Jays-PySPEECH诞生之语音识别实现. 语音识别是Jays-PySPEECH的核心功能,Jays-PySPEECH借 ...