一. 需求背景

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]LeetCode771. 宝石与石头 | Jewels and Stones

    You're given strings J representing the types of stones that are jewels, and S representing the ston ...

  2. [Swift]LeetCode787. K 站中转内最便宜的航班 | Cheapest Flights Within K Stops

    There are n cities connected by m flights. Each fight starts from city u and arrives at v with a pri ...

  3. [Swift]LeetCode1014. 最佳观光组合 | Best Sightseeing Pair

    Given an array A of positive integers, A[i] represents the value of the i-th sightseeing spot, and t ...

  4. 【译】编写支持SSR的通用组件指南

    原文来自:https://blog.lichter.io/posts/the-guide-to-write-universal-ssr-ready-vue-compon?utm_campaign=Vu ...

  5. Spring设计模式_工厂模式

    先说下工厂模式的特性 1.对于调用者来说,影藏了复杂的逻辑处理过程,调用者只关心执行结果. 2.工厂要对结果负责,保证生产出符合规范的产品. Git代码地址  https://github.com/w ...

  6. Typescript 查缺补漏

    Types Casting: let input = xxx as HTMLInputElement; let input = <HTMLElement>xxxx; Object Shap ...

  7. Zabbix通过IPMI监控HPE服务器硬件

    IPMI是智能型平台管理接口(Intelligent Platform Management Interface)的缩写,是管理基于 Intel结构的企业系统中所使用的外围设备采用的一种工业标准,该标 ...

  8. Java设计模式学习总结

    设计模式基础学习总结 这篇总结主要是基于我之前设计模式基础系列文章而形成的的.主要是把重要的知识点用自己的话说了一遍,可能会有一些错误,还望见谅和指点.谢谢 更多详细内容可以查看我的专栏文章:设计模式 ...

  9. 程序员过关斩将--面试官再问你Http请求过程,怼回去!

    菜菜哥,X总在产品部瞎指挥,作为程序媛的我都快撑不住了 不光你撑不住了,大家都要撑不住了,外行人指导内行人,呵呵 前天我偷偷的去面试了,结果挂了 出去转转其实是好事,面试官问你什么了? 他让我描述一个 ...

  10. 前端笔记之JavaScript(一)初识JavaScript

    一.JavaScript简介 1.1网页分层 web前端一共分三层: 结构层 HTML         : 负责搭建页面结构 样式层 CSS          : 负责页面的美观 行为层 JavaSc ...