1、配置zabbix自定义用户key
vim /usr/local/zabbix/etc/zabbix_agentd.conf
UserParameter=MongoDB.Status[*],/bin/echo "db.serverStatus().$1" | /usr/local/mongodb/bin/mongo admin | 
grep "\<$2\>"| awk -F : '{print $$2}'|awk -F , '{print $$1}'
db.serverStatus().$1的结果为1行时(兼容上面的)
MongoDB.Status[*],/bin/echo "db.serverStatus().$1" | /usr/local/mongodb/bin/mongo admin --port 10040 -u
 admin -p 'f8hIXm3g?' | grep "\<$2\>" | sed 's/,/\n/g' |grep "\<$2\>"| awk -F : '{print $$2}'|awk -F , '{print $$1}'

上面是通过db.serverStatus()来获取服务器状态
其中$1表示第一个参数
grep $2的时候要加上锚地符 "\<" 和 "\>",因为有的对象名可能部分相同
echo "db.serverStatus()" |/usr/local/mongodb/bin/mongo --port 10040 --quiet
{
    "host" : "TENCENT64.site", --server的hostname
    "version" : "2.0.5", --mongo版本
    "process" : "mongod", --进程名
    "uptime" : 1238418, --启动时间(单位:S)
    "uptimeEstimate" : 1230730, --基于MongoDB内部粗粒度定时器的运行时间
    "localTime" : ISODate("2012-09-14T09:09:52.657Z"), --server的本地时间
    "globalLock" : {
        "totalTime" : 1238418105923, --全局锁创建的时间(单位:ms 微秒)
        "lockTime" : 75055831911, --全局锁保持的时间(单位:ms 微秒)
        "ratio" : 0.06060621332329477, --lockTime和totalTime的比
        "currentQueue" : {
            "total" : 0, --等待全局锁的队列中操作数目
            "readers" : 0, --等待读锁的队列中操作数目
            "writers" : 0 --等待写锁的队列中操作数目
        },
        "activeClients" : {
            "total" : 1, --连接到server的当前活动client数目
            "readers" : 1, --执行读操作的当前活动client数目
            "writers" : 0 --执行写操作的当前活动client数目
        }
    },
    "mem" : {
        "bits" : 64, --64位机器
        "resident" : 18363, --占用物理内存量。
        "virtual" : 478810, --占用的虚拟内存量
        "supported" : true, --是否支持扩展内存
        "mapped" : 233311, --映射到内存的数据文件大小,很接近于你的所有数据库大小。
        "mappedWithJournal" : 466622,
        "note" : "virtual minus mapped is large. could indicate a memory leak"
    },
    "connections" : {
        "current" : 737, --当前活动连接量。连接到server的当前活跃连接数目
        "available" : 82 --剩余空闲连接量。剩余的可用连接数目
    },
    "extra_info" : {
        "note" : "fields vary by platform",
        "heap_usage_bytes" : 3838448, --此过程中所有的堆字节数目。仅适用于Linux
        "page_faults" : 31058356 --此过程中访问内存中页面失败的总次数。仅适用于Linux
    },
    "indexCounters" : {
        "btree" : {
            "accesses" : 68229146, --Btree索引的访问次数(索引被访问量)
            "hits" : 68229146, --内存中的Btree页的数目。(索引命中量)
            "misses" : 0, --内存中不存在的Btree也数目。(索引偏差量)(索引内存访问失败次数)
            "resets" : 0, --索引计数器被重置为0的次数
            "missRatio" : 0 --索引偏差率(未命中率)
        }
    },
    "backgroundFlushing" : {
        "flushes" : 20640, --数据库刷新写到磁盘的次数
        "total_ms" : 2453287, --数据库刷新数据到磁盘花费的微秒数
        "average_ms" : 118.8608042635659, --执行单次刷新花费的平均微秒数
        "last_ms" : 1, --最后一次执行完成刷新数据到磁盘花费的微秒数
        "last_finished" : ISODate("2012-09-14T09:09:35.656Z") --当最后一次刷新数据完成时的时间戳
    },
    "cursors" : {
        "totalOpen" : 0, --server为client保持的游标(cursor)总数
        "clientCursors_size" : 0, --
        "timedOut" : 24 --server启动以来游标(cursor)超时的总数
    },
    "network" : {
        "bytesIn" : NumberLong("1929833164782"), --发送到数据库的数据总量(bytes)
        "bytesOut" : 553137147925, --数据库发出的数据总量(bytes)
        "numRequests" : 2475184328 --发送到数据库的请求量
    },
    "opcounters" : {
        "insert" : 687531883, --server启动以来总的insert数据量
        "query" : 711010343, --server启动以来总的query数据量
        "update" : 0, --server启动以来总的update数据量
        "delete" : 0, --server启动以来总的delete数据量
        "getmore" : 6484, --server启动以来调用任何游标的getMore总次数
        "command" : 1287537 --server启动以来执行其他命令的总次数
    },
    "asserts" : {
        "regular" : 0, --server启动以来抛出正规断言(assert 类似于异常处理的形式)总数目
        "warning" : 1, --server启动以来抛出的告警总数目
        "msg" : 0, --消息断言数目。服务器内部定义的良好字符串错误
        "user" : 4, --用户断言数目。用户产生的错误,譬如:磁盘空间满;重复键。
        "rollovers" : 0 --server启动以来,assert counters have rolled over的次数
    },
    "writeBacksQueued" : false, --是否有从mongos执行的retry操作
    "dur" : {
        "commits" : 30, --上一间隔journal日志发生commit的次数
        "journaledMB" : 0, --上一间隔写到journal日志的数据量(单位:MB)
        "writeToDataFilesMB" : 0, --上一间隔journal日志写到数据文件的数据量(单位:MB)
        "compression" : 0, --
        "commitsInWriteLock" : 0, --写锁期间发生commits的次数
        "earlyCommits" : 0, --schedule时间前请求commit的次数
        "timeMs" : {
            "dt" : 3064,
            "prepLogBuffer" : 0, --准备写journal日志花费的时间
            "writeToJournal" : 0, --写journal日志花费的实际时间
            "writeToDataFiles" : 0, --journal日志后写数据文件花费的时间
            "remapPrivateView" : 0 --The amount of time spent remapping copy-on-write memory mapped views
        }
    },
    "ok" : 1 --serverStatus是否返回正确
}


./zabbix_get -s 127.0.0.1 -k MongoDB.Status[opcounters,query]

添加监控项
监控command,收集所有的命令数,包括插入,删除,查询,更新等所有命令,这里每过10秒取一次值
insert、query、update、delete、getmore、command等都用相同的设置

监控内存,virtual是虚拟内存,resident是无论内存

监控网络,bytesIN是进流量,bytesOut是出流量,numRequests是请求数

监控连接数,available是可用连接数、current是当前连接数

监控刷写数据到硬盘的次数

定义mapped的项目,单位是MB


5、监控locks项目,由于部分项目是多维数组,不能使用之前自定义的用户key获取,需要额外创建专门的key

[root@mongodb bin]#  echo "db.serverStatus().locks" | mongo admin
MongoDB shell version: 2.6.3
connecting to: admin
{
       "." : {
               "timeLockedMicros" : {
                       "R" : NumberLong(572504),
                       "W" : NumberLong(480751)
               },
               "timeAcquiringMicros" : {
                       "R" : NumberLong(480946),
                       "W" : NumberLong(70198)
               }
       },
       "admin" : {
               "timeLockedMicros" : {
                       "r" : NumberLong(142364),
                       "w" : NumberLong(0)
               },
               "timeAcquiringMicros" : {
                       "r" : NumberLong(15018),
                       "w" : NumberLong(0)
               }
       },
       "local" : {
               "timeLockedMicros" : {
                       "r" : NumberLong(271651),
                       "w" : NumberLong(271)
               },
               "timeAcquiringMicros" : {
                       "r" : NumberLong(120699),
                       "w" : NumberLong(5)
               }
       },
       "test" : {
               "timeLockedMicros" : {
                       "r" : NumberLong(93725),
                       "w" : NumberLong(114935)
               },
               "timeAcquiringMicros" : {
                       "r" : NumberLong(67411),
                       "w" : NumberLong(41)
               }
       }
}
bye
创建自定义key

UserParameter=MongoDB.Status.locks[*],/bin/echo "db.serverStatus().locks.$1.$2.$3" | 
/usr/local/mongodb/bin/mongo admin |/usr/bin/tail -n 2 | /usr/bin/head -n 1 | awk -F 
'(' '{print $$2}'|awk -F ')' '{print $$1}'




来源: http://www.zhengdazhi.com/archives/662

results matching ""

    No results matching ""