推荐一款关于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 |
注: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的更多相关文章
- 推荐15款最好的 Twitter Bootstrap 开发工具
Twitter Bootstrap 自从2011年最初发布到网上后,迅速成为 Web 领域最流行的响应式前端开发框架之一,是网页设计的优秀实践.Twitter Bootstrap 框架包含了众多的预定 ...
- 推荐10款非常优秀的 HTML5 开发工具
HTML5 发展如火如荼,随着各大浏览器对 HTML5 技术支持的不断完善以及 HTML5 技术的不断成熟,未来 HTML5 必将改变我们创建 Web 应用程序的方式.今天这篇文章向大家推荐10款 ...
- 推荐五款优秀的PHP代码重构工具
在软件工程学里,重构代码一词通常是指在不改变代码的外部行为情况下而修改源代码.软件重构需要借助工具完成,而重构工具能够修改代码同时修改所有引用该代码的地方.本文收集了五款出色的PHP代码重构工具,以帮 ...
- 推荐两款好用的反编译工具(Luyten,Jadx)
使用JD-Gui打开单个.class文件,总是报错// INTERNAL ERROR 但当我用jd-gui反编译前面操作获得的jar文件的时,但有一部分类不能显示出来--constants类,仅仅显示 ...
- 推荐一款优秀的web自动化测工具
在业务使用的自动化测试工具很多.有开源的,有商业化的,各有各得特色,各有各得优点!下面我就介绍几个我用过的一款非常优秀的国产自动化测试工具.在现有的自动化软件当中,都是以元素的name.id.xpat ...
- 推荐一款阿里开源的 Java 诊断工具,好用到爆!
Arthas是什么鬼? Arthas是一款阿里巴巴开源的 Java 线上诊断工具,功能非常强大,可以解决很多线上不方便解决的问题. Arthas诊断使用的是命令行交互模式,支持JDK6+,Linux. ...
- 测试开发:推荐一款阿里最新 Python 自动化开源工具!
大家好,我是麦小米,是狂师老师全栈测开训练营中的一名学员. 如果之前做过iOS自动化的同学相信都知道,一直以来,iOS自动化的实现&执行都必须依赖 Mac 系统,其主要原因是因为需要通过 xc ...
- 推荐10款最常用的Android开发工具
我们使用各种语言进行开发时,总是会用到各种各样的开发工具.有些开发工具是开发人员的必备品,有些则是为了提高开发效率而用.Android开发同样也会用到多种开发工具,供开发人员设计.创建.测试和发布程序 ...
- 推荐10款免费的在线UI测试工具
发布网站之前至关重要的一步是网站测试.网站测试要求我们全面地运行网站并通过所有基本测试,如响应式设计测试.安全测试.易用性测试.跨浏览器兼容性.网站速度测试等. 网站测试对SEO.搜索引擎排名.转换率 ...
随机推荐
- [Swift]LeetCode795. 区间子数组个数 | Number of Subarrays with Bounded Maximum
We are given an array A of positive integers, and two positive integers L and R (L <= R). Return ...
- [Swift]LeetCode799. 香槟塔 | Champagne Tower
We stack glasses in a pyramid, where the first row has 1 glass, the second row has 2 glasses, and so ...
- Redis 设计与实现 (四)--事件、客户端
事件 一.文件事件 文件事件处理器使用I/O多路复用程序来同时监听多个套接字, 监听套接字,分配对应的处理事件. 四个组成部分:套接字 .I/O多路复用 . 文件事件分派器 . 事件处理器 连接应答处 ...
- python 模拟豆瓣登录(豆瓣6.0)
最近在学习python爬虫,看到网上有很多关于模拟豆瓣登录的例子,随意找了一个试了下,发现不能运行,对比了一下代码和豆瓣网站,发现原来是豆瓣网站做了修改,增加了反爬措施. 首先看下要模拟登录的网站: ...
- ORA-01034: ORACLE not available问题
通过DBCA新建一个数据库后,执行以下命令报错:SQL> shutdown immediate;ERROR:ORA-01034: ORACLE not availableORA-27101: s ...
- redis 系列20 服务器上
一.客户端与服务端交互 本篇简单介绍下服务器,服务器运行涉及的内部原理知识很多,主要了解Redis服务器内部要做哪些事情,需要开发人员去干预的比较少.Redis服务器负责与多个客户端建立网络连接,处理 ...
- redis 系列7 数据结构之跳跃表
一.概述 跳跃表(skiplist)是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的.在大部分情况下,跳跃表的效率可以和平衡树(关系型数据库的索引就是平衡树 ...
- 使用MQ来保证分布式事务的最终一致性
前言 之前我们讨论了如何拆分一个订单下单的一个服务(https://www.cnblogs.com/linkstar/p/9610268.html) 从单体到微服务的拆分,当时我们只是对原来的整个服务 ...
- import 和 export
1.export 命令 export 命令用于规定模块的对外接口. 一个模块就是一个独立的文件.该文件内部所有的变量,外部无法获取.要想外部能够读取模块内部的某个变量,就必须使用 export 关键字 ...
- Docker快速搭建LNMP环境
一.使用Dockerfile制作镜像 前面的博客中已经介绍了如何基于容器制作镜像,此方法的原理是使用一个正在运行的容器,根据生产所需进行配置更改等操作后,使其满足生产环境,再将这个容器打包制作为镜像, ...