java mongodb 监控_MongoDB监控之一:运行状态、性能监控,分析

为什么要监控?

监控及时获得应用的运行状态信息,在问题出现时及时发现。

监控什么?

CPU、内存、磁盘I/O、应用程序(MongoDB)、进程监控(ps -aux)、错误日志监控

1.4.1 MongoDB集群监控方式

db.serverStatus()

db.serverStatus() 包含的监控信息是从上次开机到现在为止的累计数据,因此不能简单使用。

java mongodb 监控_MongoDB监控之一:运行状态、性能监控,分析_第1张图片

非常核心的有:

connections:关于连接数的信息;

locks:关于mongoDB使用的锁情况;

network:网络使用情况统计;

opcounters:CRUD的执行次数统计;

repl:复制集配置信息;

wiredTiger:包含大量wiredTiger执行情况的信息:

block-manager:WT数据块的读写情况;

session:session使用数量;

concurrentTransactions:Ticket使用情况;

mem:内存使用情况;

metrics:一系列性能指标统计信息;

查看实例运行状态(内存使用、锁、用户连接等信息)

通过比对前后快照进行性能分析

"connections"# 当前连接到本机处于活动状态的连接数"activeClients"# 连接到当前实例处于活动状态的客户端数量"locks"# 锁相关参数"opcounters"# 启动之后的参数"opcountersRepl"# 复制想关"storageEngine"# 查看数据库的存储引擎"mem" # 内存相关

状态:

db.stats()

显示信息说明:

# 统计数据库信息

db.stats()

{"db" : "test", # 系统自带测试数据库"collections" : 0, # 集合数量"views" : 0, #"objects" : 0, # 文档对象的个数, 所有集合的记录数之和"avgObjSize" : 0, # 平均每个对象的大小, 通过 dataSize /Objects 得到"dataSize" : 0, # 当前库所有集合的数据大小"storageSize" : 0, # 磁盘存储大小"numExtents" : 0, # 所有集合的扩展数据量统计数"indexes" : 0, # 已建立索引数量"indexSize" : 0, # 索引大小"fileSize" : 0, #"fsUsedSize" : 0, #"fsTotalSize" : 0, #总大小"ok" : 1}

1.4.2 mongostat

mongostat是mongdb自带的状态检测工具,在命令行下使用。它会间隔固定时间获取mongodb的当前运行状态,并输出。如果你发现数据库突然变慢或者有其他问题的话,你第一手的操作就考虑采用mongostat来查看mongo的状态。

主要功能:

实时数据库状态,读写、加锁、索引命中、缺页中断、读写等待队列等情况。

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

常用命令格式:

mongostat --host 192.168.1.100:27017 -uroot -p123456 --authenticationDatabase admin

参数说明:

host:指定IP地址和端口,也可以只写IP,然后使用--port参数指定端口号

-u: 如果开启了认证,则需要在其后填写用户名

-p: 不用多少,肯定是密码

--authenticationDatabase:若开启了认证,则需要在此参数后填写认证库(注意是认证上述账号的数据库)

输出各字段解释说明:

insert/s : 官方解释是每秒插入数据库的对象数量,如果是slave,则数值前有*,则表示复制集操作

query/s : 每秒的查询操作次数

update/s : 每秒的更新操作次数

delete/s : 每秒的删除操作次数

getmore/s: 每秒查询cursor(游标)时的getmore操作数

command: 每秒执行的命令数,在主从系统中会显示两个值(例如 3|0),分表代表 本地|复制 命令

注: 一秒内执行的命令数比如批量插入,只认为是一条命令(所以意义应该不大)

dirty:

你可能感兴趣的:(java,mongodb,监控)