zoukankan      html  css  js  c++  java
  • 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;
        }
    }
     
    
    
    
    
     
  • 相关阅读:
    POJ1741
    聪聪可可
    [USACO07NOV]Cow Relays
    Android 程序的反破解技术
    在Android上实现SSL握手(客户端需要密钥和证书),实现服务器和客户端之间Socket交互
    vmware中的bridge、nat、host-only的区别
    史上最易懂的Android jni开发资料--NDK环境搭建
    使用javah生成.h文件, 出现无法访问android.app,Activity的错误的解决
    Android apk反编译基础(apktoos)图文教程
    Smali文件语法解析
  • 原文地址:https://www.cnblogs.com/andyspan/p/5624724.html
Copyright © 2011-2022 走看看