MongoDB实战(8)性能监控

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:

一、mongosniff


此工具可以从底层监控到底有哪些命令发送给了 MongoDB 去执行,从中就可以进行分析:
以 root 身份执行:

1
. /mongosniff  -- source  NET lo

然后其会监控位到本地以 localhost 监听默认 27017 端口的 MongoDB 的所有包请求,如执
行”show dbs” 操作:

1
2
3
4
5
6
7
8
9
10
[root@localhost bin] # ./mongo
MongoDB shell version: 1.8.1
connecting to:  test
> show dbs
admin 0.0625GB
foo
0.0625GB
local  (empty)
test
0.0625GB

那么你可以看到如下输出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@localhost bin] # ./mongosniff --source NET lo
sniffing... 27017
127.0.0.1:38500 -->> 127.0.0.1:27017 admin.$cmd 60 bytes  id :537ebe0f 1400815119
query: { whatsmyuri: 1 } ntoreturn: 1 ntoskip: 0
127.0.0.1:27017 <<-- 127.0.0.1:38500 78 bytes  id :531c3855 1394358357 - 1400815119
reply n:1 cursorId: 0
{ you:  "127.0.0.1:38500" , ok: 1.0 }
127.0.0.1:38500 -->> 127.0.0.1:27017 admin.$cmd 80 bytes  id :537ebe10 1400815120
query: { replSetGetStatus: 1, forShell: 1 } ntoreturn: 1 ntoskip: 0
127.0.0.1:27017 <<-- 127.0.0.1:38500 92 bytes  id :531c3856 1394358358 - 1400815120
reply n:1 cursorId: 0
{ errmsg:  "not running with --replSet" , ok: 0.0 }
127.0.0.1:38500 -->> 127.0.0.1:27017 admin.$cmd 67 bytes  id :537ebe11 1400815121
query: { listDatabases: 1.0 } ntoreturn: -1 ntoskip: 0
127.0.0.1:27017 <<-- 127.0.0.1:38500 293 bytes  id :531c3857 1394358359 - 1400815121
reply n:1 cursorId: 0
{ databases: [ { name:  "foo" , sizeOnDisk: 67108864.0, empty:  false  }, { name:  "test" ,
sizeOnDisk: 67108864.0, empty:  false  }, { name:  "admin" , sizeOnDisk: 67108864.0, empty:  false  },
{ name:  "local" , sizeOnDisk: 1.0, empty:  true  } ], totalSize: 201326592.0, ok: 1.0 }
127.0.0.1:38500 -->> 127.0.0.1:27017 admin.$cmd 80 bytes  id :537ebe12 1400815122
query: { replSetGetStatus: 1, forShell: 1 } ntoreturn: 1 ntoskip: 0
127.0.0.1:27017 <<-- 127.0.0.1:38500 92 bytes  id :531c3858 1394358360 - 1400815122
reply n:1 cursorId: 0
{ errmsg:  "not running with --replSet" , ok: 0.0 }

如果将这些输出到一个日志文件中,那么就可以保留下所有数据库操作的历史记录,
对于后期的性能分析和安全审计等工作将是一个巨大的贡献。


二、mongostat

此工具可以快速的查看某组运行中的 MongoDB 实例的统计信息,用法如下:
[root@localhost bin]# ./mongostat
下面是执行结果(部分):

1
2
3
4
5
6
7
8
. /mongostat
connected to: 127.0.0.1
insert  query update delete getmore  command  flushes mapped  vsize    res faults  locked db idx miss %     qr|qw   ar|aw  netIn netOut  conn        time
     *0     *0     *0     *0       0     1|0       0   160m   507m    50m      0   test :0.0%          0       0|0     0|0    62b     2k     1   20:21:26
     *0     *0     *0     *0       0     1|0       0   160m   507m    50m      0   test :0.0%          0       0|0     0|0    62b     2k     1   20:21:27
     *0     *0     *0     *0       0     1|0       0   160m   507m    50m      0   test :0.0%          0       0|0     0|0    62b     2k     1   20:21:28
     *0      2     *0     *0       0     1|0       1   160m   507m    50m      0   test :0.0%          0       0|0     0|0    62b     2k     1   20:21:29
     *0     *0     *0     *0       0     1|0       0   160m   507m    50m      0   test :0.0%          0       0|0     0|0    62b     2k     1   20:21:30

字段说明:
insert: 每秒插入量
query: 每秒查询量
update: 每秒更新量
delete: 每秒删除量
locked: 锁定量
qr | qw: 客户端查询排队长度(读|写)
ar | aw: 活跃客户端量(读|写)
conn: 连接数
time: 当前时间


它每秒钟刷新一次状态值,提供良好的可读性,通过这些参数可以观察到一个整体的性能情况。


三、DB信息


1、db.serverStatus

204023692.png

203450948.png

203537733.png

2、db.stats

db.stats 查看数据库状态信息。使用样例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
> db.stats()
{
     "db"  "test" ,
     "collections"  : 9,  #collection数量
     "objects"  : 52,     #对象数量
     "avgObjSize"  : 60.46153846153846,  #对象平均大小
     "dataSize"  : 3144,  #数据大小
     "storageSize"  : 249856, #数据大小含预分配空间
     "numExtents"  : 9, #事件数量
     "indexes"  : 9, #索引数量
     "indexSize"  : 73584, #索引大小
     "fileSize"  : 201326592, #文件大小
     "nsSizeMB"  : 16,
     "dataFileVersion"  : {
         "major"  : 4,
         "minor"  : 5
     },
     "ok"  : 1
}


MongoDB 从一面世就得到众多开源爱好者和团队的重视,在常用的监控框架如 cacti、
Nagios、Zabbix 等基础上进行扩展,进行 MongoDB 的监控都是非常方便的。





















本文转自shayang8851CTO博客,原文链接:http://blog.51cto.com/janephp/1328031,如需转载请自行联系原作者

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
4月前
|
NoSQL Java 测试技术
|
4月前
|
NoSQL Java 测试技术
spring boot MongoDB实战(二)
spring boot MongoDB实战
148 1
|
4月前
|
NoSQL Java MongoDB
Spring Boot中MongoDB的使用和实战
Spring Boot中MongoDB的使用和实战
181 0
|
17天前
|
存储 NoSQL JavaScript
MongoDB存储过程实战:聚合框架、脚本、最佳实践,一文全掌握!
【8月更文挑战第24天】MongoDB是一款备受欢迎的文档型NoSQL数据库,以灵活的数据模型和强大功能著称。尽管其存储过程支持不如传统关系型数据库,本文深入探讨了MongoDB在此方面的最佳实践。包括利用聚合框架处理复杂业务逻辑、封装业务逻辑提高复用性、运用JavaScript脚本实现类似存储过程的功能以及考虑集成其他工具提升数据处理能力。通过示例代码展示如何创建订单处理集合并定义验证规则,虽未直接实现存储过程,但有效地演示了如何借助JavaScript脚本处理业务逻辑,为开发者提供更多实用指导。
28 2
|
1月前
|
NoSQL Java 测试技术
5-MongoDB实战演练
本文档详细介绍了如何使用MongoDB实现头条文章的评论系统。主要功能包括基本的增删改查API、根据文章ID查询评论、以及评论的点赞功能。文章分析了表结构设计,明确了各字段的意义,并给出了具体的字段类型。技术选型方面,文档推荐使用mongodb-driver作为Java连接MongoDB的驱动包,同时介绍了Spring Data MongoDB这一更高层次的持久层框架。此外,文档还提供了搭建文章微服务模块的具体步骤,包括项目工程的搭建、实体类的编写、索引的添加方式等,并展示了如何使用MongoTemplate实现评论点赞功能。
|
3月前
|
存储 NoSQL MongoDB
MongoDB实战面试指南:常见问题一网打尽
MongoDB实战面试指南:常见问题一网打尽
|
4月前
|
存储 NoSQL 关系型数据库
MongoDB非关系型数据库实战
【5月更文挑战第6天】MongoDB,流行的NoSQL数据库,以其灵活的数据模型和高性能备受青睐。本文介绍了MongoDB的基础,包括文档型数据库特性、安装配置、数据操作。通过电商订单管理的实战案例,展示了MongoDB在处理复杂数据结构和大规模数据时的优势,适用于电商、游戏、视频直播等场景。MongoDB的索引、全文搜索和地理空间功能进一步增强了其实用性。注意性能优化和扩展性以确保系统稳定性和可靠性。
|
4月前
|
NoSQL Java MongoDB
Spring Boot 整合 MongoDB 实战
本文介绍了如何使用Spring Boot整合MongoDB,实现数据持久化。步骤包括:环境准备(安装Java、MongoDB及创建Spring Boot项目)、在pom.xml中添加MongoDB依赖、配置MongoDB连接信息、创建映射MongoDB集合的实体类、定义MongoDB Repository接口、编写业务逻辑和服务层以及控制器层。通过测试确保整合成功。此实战教程帮助读者理解Spring Boot与MongoDB整合的基础,适用于快速构建Java应用。
593 11
|
4月前
|
NoSQL Java 测试技术
5-MongoDB实战演练
MongoDB实战演练
|
4月前
|
NoSQL Java MongoDB
spring boot MongoDB实战(一)
spring boot MongoDB实战
108 1
下一篇
DDNS