首页 技术 正文
技术 2022年11月21日
0 收藏 441 点赞 2,900 浏览 3082 个字

一. 需求背景

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”

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

Step 2 解析下载的文件

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

 Step 3 安装 python setup.py install

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

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

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

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

解压

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

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

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

安装成功。

Step 6 安装 yum -y install python-pip

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

如果提示错误

No package python-pip available.

Error: Nothing to do

请看后面的附注

Step 7  安装  mtools

执行命令  pip install mtools

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

Step 8 安装效果验证

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

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

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

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

验证工具安装OK。

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

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

四 附录

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

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

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

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

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

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

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

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

安装命令 yum install python-matplotlib

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

添加 以下指令

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

添加前

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

添加后

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

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

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

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

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,999
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,511
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,357
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,140
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,770
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,848