Martin.xu

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
为了能实时了解运行的状态,需要增加zabbix对mongodb的运行状态监控。
 
mongodb默认安装情况下可以运行
echo "db.serverStatus()" | mongo 来获取mongodb的运行状态
 
[root@localhost ~]# echo "db.serverStatus()" | mongo 127.0.0.1:30000
 
点击(此处)折叠或打开
MongoDB shell version: 2.x.x
    connecting to: 10.0.0.12:40000/test
    {
            "host" : "localhost.localdomain:30000",
            "version" : "2.x.x",
            "process" : "mongos",
            "uptime" : 1659778,
            "localTime" : ISODate("2014-06-04T06:45:05.691Z"),
            "mem" : {
                    "resident" : 14,
                    "virtual" : 280,
                    "supported" : true
            },
            "connections" : {
                    "current" : 107,
                    "available" : 8085
            },
            "extra_info" : {
                    "note" : "fields vary by platform",
                    "heap_usage_bytes" : 902192,
                    "page_faults" : 0
            },
            "opcounters" : {
                    "insert" : 5228846,
                    "query" : 833941,
                    "update" : 15,
                    "delete" : 13,
                    "getmore" : 93,
                    "command" : 35558
            },
            "ops" : {
                    "sharded" : {
                            "insert" : 0,
                            "query" : 0,
                            "update" : 0,
                            "delete" : 0,
                            "getmore" : 0,
                            "command" : 0
                    },
                    "notSharded" : {
                            "insert" : 5228846,
                            "query" : 833941,
                            "update" : 15,
                            "delete" : 13,
                            "getmore" : 93,
                            "command" : 35558
                    }
            },
            "shardCursorType" : {
                    "ParallelSort" : 833942
            },
            "asserts" : {
                    "regular" : 0,
                    "warning" : 0,
                    "msg" : 0,
                    "user" : 0,
                    "rollovers" : 0
            },
            "network" : {
                    "bytesIn" : 2218644824,
                    "bytesOut" : 540032120,
                    "numRequests" : 6101134
            },
            "ok" : 1
    }
    bye

因此可以考虑使用zabbix的UserParameter自定义监控,对MongoDB进行监控

添加MongoDB监控
 
1、zabbix客户端配置文件zabbix_agentd.conf文件,添加如下内容:
UserParameter=MongoDB.Status[*],/bin/echo "db.serverStatus().$1" | /usr/bin/mongo  127.0.0.1:30000 | grep "$2"|awk -F: '{print $$2}'|awk -F, '{print $$1}'

上面是通过db.serverStatus()来获取服务器状态

其中$1表示第一个参数
grep $2的时候要加上锚地符 "\<" 和 "\>",因为有的对象名可能部分相同
 
使用自定义的命令测试获取的结果
[root@mongodb bin]# echo "db.serverStatus().opcounters" | mongo admin 
MongoDB shell version: 2.6.3
connecting to: admin
{
       "insert" : 6,
       "query" : 138,
       "update" : 1,
       "delete" : 1,
       "getmore" : 0,
       "command" : 9884
}
bye

测试用户自定义key是否生效

./zabbix_get -s 127.0.0.1 -k MongoDB.Status[opcounters,query] 
 
2、重新启动zabbix客户端
systemctl restart zabbix-agent
 
3、添加MongoDB监控模板 
导入模板
选择configuration-template 右上角import,导入模板“zbx_mongodb-monitor_templates.xml”,稍后会放在文章的最下面附件中供大家下载

 

 
点击导入import选择模板的存放位置,点击下面的导入

 

导入成功后可以到configuration-templete里查看新导入的模板MongoDB Moniting

 

4.模板关联mongodb主机
在装有MongoDB的服务器上应用该模板:
configuration->host,选择一台装有MongoDB的服务器,在右边的“Linked templates”,添加MongoDB监控模板,然后保存

 

导入成功以后可以在monitoring-lastdata里查看最新数据。稍等几分钟在monitoring的graph里可以看到关联主机的出图

 

具体出图图例如下
 

posted on 2017-03-28 00:01  Martin.xu  阅读(1129)  评论(0编辑  收藏  举报