推荐一款关于MongoDB日志分析的工具--Mtools

一. 需求背景

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

三. 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 统计文件

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

原文地址:https://www.cnblogs.com/xuliuzai/p/10316059.html

时间: 2024-12-21 05:55:13

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

推荐一款Java代码Bug分析插件 FindBugs

findBugs是一个能静态分析源代码中可能会出现Bug的Eclipse插件工具. 下载之后,把解冻后的文件拷贝到 $ECLIPSE_HOME/plugins/目录下,重新启动eclipse即完成安装. FindBugs的设置: 安装好之后,可以通过 Projects > Property > FindBugs标签对其进行设置.设置方法可以根据自己的需要进行调整. 另外在 问题(Proplems)列表窗口(Windows > 视图 > 问题)的Filter设置里,把FindBugs

[翻译]mongodb日志分析工具mtools之mplotqueries

mtools是一组非常好用的mongodb日志分析工具,里面最复杂的命令是mplotqueries,上网查了一下,还没有人翻译过.英文不好,费了好大的劲翻完,翻的不好,但没有办法,我英文水平就这么多~ 原文地址:https://github.com/rueckstiess/mtools/wiki/mplotqueries ----------------------------------------------------------------------------------------

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

推荐10款最常用的Android开发工具 我们使用各种语言进行开发时,总是会用到各种各样的开发工具.有些开发工具是开发人员的必备品,有些则是为了提高开发效率而用.Android开发同样也会用到多种开发工具,供开发人员设计.创建.测试和发布程序时使用.下面向大家推荐十款常用的Android开发工具. 1.Eclipse w/ADT 虽然Eclipse并非唯一可用于开发Android应用的Java开发环境,但它是目前最欢迎的工具,有很大程度上是因为它的成本很低(免费),但最主要的原因还是它与其他An

推荐几款画韦恩图的在线工具

(1)http://bioinformatics.psb.ugent.be/webtools/Venn/ 操作简单,不仅画出了韦恩图,还很贴心的给出了数据统计的结果并列出了各个部分对应的ID,且提供直接下载.缺点是颜色和大小不可调. (2)http://bioinfogp.cnb.csic.es/tools/venny/index.html 这款比较漂亮,操作也很简单,但是不能根据列表大小调整生成的圆圈大小. (3)http://www.cs.kent.ac.uk/people/staff/pj

推荐一款免费的Windows Server变更通知工具

问:您每次需要花多少时间和精力来查找Windows Server中的变更? 这个得看经验哦 任何充当关键业务角色的Windows Server都需要恰当的配置,然后持续被监控以确保它保持稳定和安全的,来抵抗潜在的攻击.NetWrix Windows Server变更通知工具使得IT管理员能够建立持续有效的Windows Server监控.这款由NetWrix提供的免费软件可以针对Windows Server上至关重要的变更提供日常报告. NetWrix Windows Server变更通知工具是

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

HTML5 发展如火如荼,随着各大浏览器对 HTML5 技术支持的不断完善以及 HTML5 技术的不断成熟,未来 HTML5 必将改变我们创建 Web 应用程序的方式.今天这篇文章向大家推荐10款优秀的HTML5开发工具,帮助你更高效的编写 HTML5 应用. Initializr Initializr 是制作 HTML5 网站最好的入门辅助开发工具,你可以使用提供的特色模板快速生成网站,也可以自定义,Initializr 会为你生成代码简洁的可定制的网页模板. → 访问 Initializr

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

在软件工程学里,重构代码一词通常是指在不改变代码的外部行为情况下而修改源代码.软件重构需要借助工具完成,而重构工具能够修改代码同时修改所有引用该代码的地方.本文收集了五款出色的PHP代码重构工具,以帮助你完善更加优秀的项目. 1. Rephactor Rephactor是一款命令行重构工具,这是一款自动化工具,允许开发者以一种简洁的方式在不同的代码库中修改源码. 主要功能: 保证重构的可逆性—— 一旦发现问题,代码是可逆的,可以回溯到前一个版本. 查找替换功能—— 普通查找替换,方法重命名,类重

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

Twitter Bootstrap 自从2011年最初发布到网上后,迅速成为 Web 领域最流行的响应式前端开发框架之一,是网页设计的优秀实践.Twitter Bootstrap 框架包含了众多的预定义风格的组件,插件和加载项. 在这篇文章中,我们想向大家介绍15款最好的 Twitter Bootstrap 开发工具以更好地满足要求以及帮助提高他们的 Web 开发的生产力. 您可能感兴趣的相关文章 10大流行 Metro UI 风格 Bootstrap 主题和模板 推荐12款优秀的 Twitte

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

在业务使用的自动化测试工具很多.有开源的,有商业化的,各有各得特色,各有各得优点!下面我就介绍几个我用过的一款非常优秀的国产自动化测试工具.在现有的自动化软件当中,都是以元素的name.id.xpath.class.tag.link.partial_link.partial_link中的一种作为对元素进行定位.现在现实的测试环境经常不是我们想象的那样平静.页面中出现id,name,tag 重复的很多.也许在我们写用例的不重复,经过一轮版本修改后很可能变得重复了.xpath是最不可能失效的,但是经