MongoDB实战(8)性能监控
admin
2023-04-13 19:01:43
0

一、mongosniff


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

./mongosniff --source NET lo

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

[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

那么你可以看到如下输出

[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
下面是执行结果(部分):

./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

MongoDB实战(8)性能监控

MongoDB实战(8)性能监控

MongoDB实战(8)性能监控

2、db.stats

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

> 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 的监控都是非常方便的。




相关内容

热门资讯

徐巧芯剖析赖清德:最怕自己丢掉... 海峡导报综合报道 大罢免投票一周年纪念活动26日举行,台北市长蒋万安出席并怒轰,民进党一年过后仍没有...
中国红十字会总会紧急向广东调拨... 记者从中国红十字会总会了解到,针对台风“红霞”给广东造成的灾情,中国红十字会总会启动四级应急响应,紧...
这些少年,正被“毒蛋”围猎 李梦抽了几口电子烟,吐出了白色的烟雾,有一股浓烈的水果香味。随后,她看着自己握电子烟的手,跟身边人说...
蒋万安号召“倒阁”,卢秀燕认为... 海峡导报综合报道 台北市长蒋万安27日抛出震撼议题,表示多名民代向他提议推动“倒阁”,要求台行政机构...
特朗普将在白宫会见两位重要客人 俄乌战争仍未结束,美伊冲突又有升级风险。在此背景下,美国总统特朗普将在白宫接见乌克兰和以色列领导人。...
新租客打扫卧室柜子上掉落4万元... 近日,莲前西路某小区内,张倩签下一套房子的租赁合同。当天上午,她带着12岁的大女儿周馨怡和11岁的小...
六部门通告:禁止涉军队退役报废... 关于禁止涉军队退役报废装备销售活动的通告近年来,部分经营者在线上线下公开销售涉及我军退役报废装备(指...
九寨沟景区发生泥石流,部分道路... 7月26日,九寨沟风景名胜区管理局发布泥石流灾害通报:2026年7月26日15时50分,九寨沟景区局...
空调26度不凉是什么原因 从空调内部元器件来说,不凉的原因有可能是温度传感器出现故障了,也有可能是空调压缩机或者铜管出现问题,...
鲸鸿动能携手香港国际机场、鸿蒙...   2026 年 7 月 25 日,十余位鸿蒙车主组成的车队从珠海出发,经港珠澳大桥通关抵达香港国际...