Mongodb监控

Mongodb监控主要利用的是其自带的rest服务,默认端口是27017+1000,后接serverStatus。

Mongodb需要开启rest服务才能进行监控。其中,2.2版本一下会自动启动rest服务,2.2-2.6之间需要通过如下命令启动rest服务: mongod –dbpath ************ --rest     而2.6以上需要改动mongod.conf文件,将OPTIONS加入 –rest –httpinterface

{ "host" : "aclome-PC", "version" : "2.0.6", "process" : "mongod", "uptime" : 4675828, "uptimeEstimate" : 4348964, "localTime" : { "$date" : 1467100514725 }, "globalLock" : { "totalTime" : 4675828116867, "lockTime" : 973633, "ratio" : 2.082268585724607e-007, "currentQueue" : { "total" : 0, "readers" : 0, "writers" : 0 }, "activeClients" : { "total" : 0, "readers" : 0, "writers" : 0 } }, "mem" : { "bits" : 64, "resident" : 5, "virtual" : 242, "supported" : true, "mapped" : 80, "mappedWithJournal" : 160 }, "connections" : { "current" : 0, "available" : 20000 }, "extra_info" : { "note" : "fields vary by platform", "page_faults" : 40688, "usagePageFileMB" : 21, "totalPageFileMB" : 7677, "availPageFileMB" : 2772, "ramMB" : 3839 }, "indexCounters" : { "note" : "not supported on this platform" }, "backgroundFlushing" : { "flushes" : 77900, "total_ms" : 638103, "average_ms" : 8.191309370988448, "last_ms" : 0, "last_finished" : { "$date" : 1467100477003 } }, "cursors" : { "totalOpen" : 0, "clientCursors_size" : 0, "timedOut" : 0 }, "network" : { "bytesIn" : 0, "bytesOut" : 0, "numRequests" : 0 }, "opcounters" : { "insert" : 0, "query" : 1, "update" : 0, "delete" : 0, "getmore" : 0, "command" : 0 }, "asserts" : { "regular" : 0, "warning" : 0, "msg" : 0, "user" : 0, "rollovers" : 0 }, "writeBacksQueued" : false, "dur" : { "commits" : 30, "journaledMB" : 0, "writeToDataFilesMB" : 0, "compression" : 0, "commitsInWriteLock" : 0, "earlyCommits" : 0, "timeMs" : { "dt" : 3088, "prepLogBuffer" : 0, "writeToJournal" : 0, "writeToDataFiles" : 0, "remapPrivateView" : 0 } } }
 
   其中不同的版本指标名称或许会存在细微差距,整个指标可分为如下部分:1.实例信息;2.全局锁信息;3.内存信息;4.连接信息;5.额外信息;6.索引计数器信息;7.backgroundFlushing;8.last_finished;9.cursors;10.网络信息;11.操作计数器信息(opcounters);12.断言信息(asserts);14.writeBacksQueued;15.持久性信息(dur)
1.实例信息

 "host" : "aclome-PC",   //主机名

"version" : "2.0.6",     //版本号

"process" : "mongod",    //进程名

"uptime" : 4675828,          //启动时间

"uptimeEstimate" : 4348964,        

"localTime" : { "$date" : 1467100514725 } //本地时间

2.全局所信息

"globalLock" : { "totalTime" : 4675828116867,   //创建全局锁现在的时间(毫秒)
                  "lockTime" : 973633,     //创建全局锁后锁定的时间(毫秒)
                   "ratio" : 2.082268585724607e-007, 
                   "currentQueue" : { "total" : 0,   //当前等待锁总数
                                      "readers" : 0,  //当前等待读锁总数
                                       "writers" : 0 }, //当前等待写锁总数
3. 内存信息
 "mem" : { "bits" : 64,   //操作系统位数 64 或32
            "resident" : 5,   //物理内存中数据大小(MB)
             "virtual" : 242,  //使用虚拟内存(页面文件)大小(MB)
             "supported" : true,  //是否支持系统扩展内存信息
             "mapped" : 80,   //映射文件大小
              "mappedWithJournal" : 160 }, //为journal提供的内存大小,一般是mapped的2倍
4.连接信息
"connections" : { "current" : 0, //当前连接数
                    "available" : 20000 }  //可用连接数
5.额外信息
"extra_info" : { 
"note" : "fields vary by platform",     //
"page_faults" : 40688,        //硬错误页
"usagePageFileMB" : 21,            //页面文件使用大小MB
"totalPageFileMB" : 7677,          //页面文件大小
"availPageFileMB" : 2772,         //可用页面文件大小
"ramMB" : 3839 }            //物理内存大小
6.索引计数器
 "indexCounters" : { "note" : "not supported on this platform" }      //windows下
 "indexCounters" :{                                 //linux下
        "accesses" : 101216836,  //访问次数
        "hits" : 101216836,                        //命中次数
        "misses" : 0,                                    //miss次数
        "resets" : 0,                                      //indexCounders重置次数
        "missRatio" : 0                               //miss率
}
7.backgroundFlushing
"backgroundFlushing" : {  //数据冲洗
"flushes" : 77900,   //次数
"total_ms" : 638103,   //总共耗时
"average_ms" : 8.191309370988448,  //平均耗时 
"last_ms" : 0,  //最后一次耗时
 "last_finished" : { "$date" : 1467100477003 } }  //最后一次完成时间
8.last_finished
"last_finished" : { "$date" : 1467100477003 } } //最后执行时间
9.cursors
"cursors" : { 
"totalOpen" : 0,   //维护游标数目
 "clientCursors_size" : 0,  //总共游标数目
 "timedOut" : 0 }  //超时个数
10.网络信息
"network" : {
 "bytesIn" : 0,    //输入字节数
 "bytesOut" : 0,    //输出字节数
 "numRequests" : 0 }  //请求次数
11.操作计数器信息(opcounters)
 "opcounters" : {
 "insert" : 0,    //插入次数
"query" : 1,     //查询次数
"update" : 0,    //更新次数
"delete" : 0,    //删除次数
 "getmore" : 0,    //getmore次数
"command" : 0 }    //其他命令次数
12.断言信息(asserts)
"asserts" : { 
"regular" : 0,     //正常断言数量
"warning" : 0,    //告警断言数量
"msg" : 0,     //消息断言数量
"user" : 0,     //用户断言数量
 "rollovers" : 0 }   //转滚断言数量
14.writeBacksQueued
"writeBacksQueued" : false  //true 有要被重新执行的操作  false代表无
15.持久性信息(dur)
"dur" : { 
"commits" : 30,   //上次提交间隔(journal group commit interval)之后,提交的写入操作
 "journaledMB" : 0, //上次分组提交间隔之后,写入操作的大小
 "writeToDataFilesMB" : 0, //上次分组提交间隔之后,从journal写入到数据文件的大小
"compression" : 0, //写入到journal的压缩率,journal的大小/未压缩的数据大小
"commitsInWriteLock" : 0, //提交发生的时候写锁个数,用来表示写入负载是否过重
"earlyCommits" : 0, //在提交间隔过来前,请求提交的次数,用来判断分组提交间隔时间是否合适
"timeMs" : { "dt" : 3088,        //获取这些数据花的时间
             "prepLogBuffer" : 0,    //准备写入到journal文件的数据的时间
              "writeToJournal" : 0, //写入Journal文件的时间
              "writeToDataFiles" : 0,  //写入数据文件的时间
              "remapPrivateView" : 0 } } //重新映射的时间
Java代码如下:

package test;

import java.net.URI;

import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.client.HttpClient;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.params.CoreConnectionPNames;

import org.apache.http.util.EntityUtils;

/**

* 获取mongodb监控数据

*

* @author lihainan

*

*/

public class MongodbMonitoring {

public static void main(String[] args) {

String infoUrl = "http://10.4.55.180:28017/serverStatus";

String urlResult = getStringResultByUrl(infoUrl);

System.out.println(urlResult);//返回结果是个JSON串,可以根据自己的需求进行解析

}

public static String getStringResultByUrl(String url) {

String result = null;

HttpGet request = null;

HttpClient client = null;

try {

client = new DefaultHttpClient();

client.getParams().setParameter(

CoreConnectionPNames.CONNECTION_TIMEOUT, 3000);// 连接时间

client.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,

3000);// 数据传输时间

request = new HttpGet(new URI(url));

request.setHeader("Connection", "close");

HttpResponse response = null;

response = client.execute(request);

response.setHeader("Connection", "close");

int statusCode = response.getStatusLine().getStatusCode();

if (statusCode >= 400) {

return null;

}

HttpEntity entity = response.getEntity();

result = EntityUtils.toString(entity);

} catch (Exception e) {

e.printStackTrace();

} finally {

if (request != null) {

// 释放连接

request.abort();

}

}

return result;

}

}



 
时间: 2024-11-10 13:32:53

Mongodb监控的相关文章

Mongodb监控命令

Mongodb监控命令 一.监控工具 1.mongostat工具 默认为显示每秒的统计信息 # mongostat -uroot -ppassword --authenticationDatabase admin -h192.168.x.xx  --rowcount 10 1 connected to: 192.168.x.xx insert  query update delete getmore command flushes mapped  vsize    res faults  loc

mongodb监控常用方法

列举mongodb监控的常用命令 1.监控统计 mongostat 可用于查看当前QPS/内存使用/连接数,以及多个shard的压力分布 命令参考 ./mongostat --port 27071 -u admin -p xxx --authenticationDatabase=admin --discover -n 30 3 参数说明 -discover 提供集群中所有节点的状态 -n 30 3 表示输出30次,每次休眠3秒钟 输出示例 insert query update delete g

PCB MongoDB 监控

一个数据库监控工具是必不可少的,当然MongoDB安装自带监控啦. 这里将监控工具mongostat.exe与mongotop.exe使用与参数进行讲解说明. 一.监控工具说明: 二.监控工具启用 1.进行MongoDB安装目录: cd D:\Program Files\MongoDB\Server\4.0\bin 2.启动  mongostat 1     1为监控时间间隔为1秒(默认也是1秒) mongostat 1 下图为监控间隔10秒 三.mongostat 监控参数说明: 监控增删改查

mongodb 监控项详解(mms)

mongodb mms监控项 Opcounters :     当前有执行命令的操作(command,query,update,delete,gemore,insert)次数 Connections :      当前与此服务器的活动连接的数量.每个连接分配一个堆栈;因此,非常多的连接会导致严重的RAM使用 page_faults :        页面错误的平均利率这一过程在选定的样本期间每秒 Memory :            驻留,虚拟,映射内存的大小 Network :      

Zabbix MongoDB监控

去年监控mongodb设置的模板,包括mongodb连接数,内存,复制延迟,是否Master的监控,下面是一些监控图形示例 我们还有一些触发器,比如mongodb实例是否可用,mongodb副本集的角色是否切换. 附件中是mongodb的模板文件,后台的脚本改日再行上传.

MongoDB 监控

在你已经安装部署并允许MongoDB服务后,你必须要了解MongoDB的运行情况,并查看MongoDB的性能.这样在大流量得情况下可以很好的应对并保证MongoDB正常运作. MongoDB中提供了mongostat 和 mongotop 两个命令来监控MongoDB的运行情况. mongostat 命令 mongostat是mongodb自带的状态检测工具,在命令行下使用.它会间隔固定时间获取mongodb的当前运行状态,并输出.如果你发现数据库突然变慢或者有其他问题的话,你第一手的操作就考虑

MongoDB监控三 MongoDB自带监控方法

REST接口 MongoDB提供一个简单的REST接口可用于配置监控和告警脚本和其他一些管理任务. 可以通过在命令行添加 --rest参数或在配置文件加上rest=true开启REST接口支持. 具体可以参见文档http://docs.mongodb.org/ecosystem/tools/http-interfaces/ HTTP接口 MongoDB提供一个简单的HTTP接口,如当前MongoDB实例运行的端口是28018,那么可以通过http://127.0.0.1:38018 访问 具体可

MongoDB负载信息一目了然 阿里云HDM重磅发布MongoDB监控和诊断功能

混合云数据库管理(HDM)的统一监控.告警.诊断功能新增了对MongoDB的支持. 通过直观的方式将MongoDB多个维度的负载信息统一整合,不仅可以清晰的查看实时负载信息,也可以方便的确认历史负载情况,同时也支持自定义性能监控大盘. 通过该功能,专业的DBA可以减少信息收集和处理的事件,提升效率,非专业人士也能快速检测问题. 典型使用场景 直观地确认数据库负载情况 数据库诊断和优化过程具有相当的复杂性.专业性,其中: 1.数据库负载相关信息的获取,需要依赖于大量的主机性能数据.引擎运行数据库(

mongodb监控脚本

脚本涵盖两种监控mongo的方法:使用自带的mongostat工具查看,各个监控项的位置可能要按实际的mongostat输出进行调整:进入admin库,查看具体状态信息,可能需要验证. 完整步骤: 1.创建用于监控的用户角色:mongo用户的权限按用户角色进行划分 > use admin  > db.getRoles() > db.createRole(     { role:"mongostatRole",      privileges:[{resource:{c