设为首页 收藏本站
查看: 1056|回复: 0

Nagios监控mongodb分片集群服务实战

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-10-11 10:08:51 | 显示全部楼层 |阅读模式
1,监控插件下载

Mongodb插件下载地址为:git clone git://github.com/mzupan/nagios-plugin-mongodb.git,刚开始本人这里没有安装gitpub环境,找网友草根帮忙下载的,之后上传到了csdn资源页面,新的下载地址为:http://download.iyunv.com/detail/mchdba/8019077


2,添加新的mongodb监控命令

因为mongodb服务是和mysql从库公用一台物理机,之前已经做了基础nagios以及mysql服务监控,所以这里只需要在原来的基础上添加mongodb命令和服务即可。Nagios监控mysql请参考:http://blog.itpub.net/26230597/viewspace-760141/以及http://blog.itpub.net/26230597/viewspace-1217246/。所以这里需要添加的mongodb监控命令如下所示:

    [iyunv@wgq objects]# cd /usr/local/nagios/etc/objects  
    [iyunv@wgq objects]# vim commands.cfg  
    define command {  
        command_name check_mongodb  
        command_line $USER1$/nagios-plugin-mongodb/check_mongodb.py -H $HOSTADDRESS$ -A $ARG1$ -P $ARG2$ -W $ARG3$ -C $ARG4$  
    }  
      
    define command {  
        command_name check_mongodb_database  
        command_line $USER1$/nagios-plugin-mongodb/check_mongodb.py -H $HOSTADDRESS$ -A $ARG1$ -P $ARG2$ -W $ARG3$ -C $ARG4$ -d $ARG5$  
    }  
      
    define command {  
        command_name check_mongodb_collection  
        command_line $USER1$/nagios-plugin-mongodb/check_mongodb.py -H $HOSTADDRESS$ -A $ARG1$ -P $ARG2$ -W $ARG3$ -C $ARG4$ -d $ARG5$ -c $ARG6$  
    }  
      
    define command {  
        command_name check_mongodb_replicaset  
        command_line $USER1$/nagios-plugin-mongodb/check_mongodb.py -H $HOSTADDRESS$ -A $ARG1$ -P $ARG2$ -W $ARG3$ -C $ARG4$ -r $ARG5$  
    }  
      
    define command {  
        command_name check_mongodb_query  
        command_line $USER1$/nagios-plugin-mongodb/check_mongodb.py -H $HOSTADDRESS$ -A $ARG1$ -P $ARG2$ -W $ARG3$ -C $ARG4$ -q $ARG5$  
    }  



3,添加mongodb监控服务
mongodb的服务也需要单独重新添加,如下所示:

    #检测mongodb服务的连接时间,超过2秒就普通报警,5秒就严重报警  
    define service{  
            host_name dbm1slave1  
            service_description Mongo Connect Check  
            check_command check_mongodb!connect!30000!2!5  
            max_check_attempts 5  
            normal_check_interval 3  
            retry_check_interval 2  
            check_period 24x7  
            notification_interval 10  
            notification_period 24x7  
            notification_options w,u,c,r  
            contact_groups ops  
            }  
      
    #检查mongodb的连接数,超过150普通报警,200严重报警  
    define service{  
            host_name dbm1slave1  
            service_description Mongo Free Connections  
            check_command check_mongodb!connections!27017!70!80  
            max_check_attempts 5  
            normal_check_interval 3  
            retry_check_interval 2  
            check_period 24x7  
            notification_interval 10  
            notification_period 24x7  
            notification_options w,u,c,r  
            contact_groups ops  
            }  
              
              
    #检查mongodb复制完成的百分比率,确保primary和standby的time是一致的。  
    define service{  
            host_name dbm1slave1  
            service_description Mongo Replication Lag  
            check_command check_mongodb!replication_lag!27017!15!30  
            max_check_attempts 5  
            normal_check_interval 3  
            retry_check_interval 2  
            check_period 24x7  
            notification_interval 10  
            notification_period 24x7  
            notification_options w,u,c,r  
            contact_groups ops  
            }  
              
    #检查mongodb内存使用率,阀值与mongodb所在机器的总内存数相关  
    define service{  
            host_name dbm1slave1  
            service_description Mongo Memory Usage  
            check_command check_mongodb!memory!27017!20!28  
            max_check_attempts 5  
            normal_check_interval 3  
            retry_check_interval 2  
            check_period 24x7  
            notification_interval 10  
            notification_period 24x7  
            notification_options w,u,c,r  
            contact_groups ops  
            }  
              
    #检查mongodb Mapped的内存使用率,阀值与mongodb所在机器的总内存数相关  
    define service{  
            host_name dbm1slave1  
            service_description Mongo Mapped Memory Usage  
            check_command check_mongodb!memory_mapped!27017!20!28  
            max_check_attempts 5  
            normal_check_interval 3  
            retry_check_interval 2  
            check_period 24x7  
            notification_interval 10  
            notification_period 24x7  
            notification_options w,u,c,r  
            contact_groups ops  
            }  
              
    #检查Lock Time的百分率,如果lock time占据mongo运行时间的5%就普通报警,如果超过10%就严重报警  
    define service{  
            host_name dbm1slave1  
            service_description Mongo Lock Percentage  
            check_command check_mongodb!lock!27017!5!10  
            max_check_attempts 5  
            normal_check_interval 3  
            retry_check_interval 2  
            check_period 24x7  
            notification_interval 10  
            notification_period 24x7  
            notification_options w,u,c,r  
            contact_groups ops  
            }  
      
    # Check Average Flush Time,检查mongo服务器的平均flush时间,  
    define service{  
            host_name dbm1slave1  
            service_description Mongo Flush Average  
            check_command check_mongodb!flushing!27017!100!200  
            max_check_attempts 5  
            normal_check_interval 3  
            retry_check_interval 2  
            check_period 24x7  
            notification_interval 10  
            notification_period 24x7  
            notification_options w,u,c,r  
            contact_groups ops  
            }  
      
    # Check Last Flush Time,检查最新的flush时间,如果超过200ms就普通报警,超过400ms就严重报警  
    define service{  
            host_name dbm1slave1  
            service_description Mongo Last Flush Time  
            check_command check_mongodb!last_flush_time!27017!200!400  
            max_check_attempts 5  
            normal_check_interval 3  
            retry_check_interval 2  
            check_period 24x7  
            notification_interval 10  
            notification_period 24x7  
            notification_options w,u,c,r  
            contact_groups ops  
            }  
              
    # Check status of mongodb replicaset,检查mongo复制的状态  
    define service{  
            host_name dbm1slave1  
            service_description MongoDB state  
            check_command check_mongodb!replset_state!27017!0!0  
            max_check_attempts 5  
            normal_check_interval 3  
            retry_check_interval 2  
            check_period 24x7  
            notification_interval 10  
            notification_period 24x7  
            notification_options w,u,c,r  
            contact_groups ops  
            }  
      
    # Check status of index miss ratio,检查索引命中率,  
    define service{  
            host_name dbm1slave1  
            service_description MongoDB Index Miss Ratio  
            check_command check_mongodb!index_miss_ratio!27017!.005!.01  
            max_check_attempts 5  
            normal_check_interval 3  
            retry_check_interval 2  
            check_period 24x7  
            notification_interval 10  
            notification_period 24x7  
            notification_options w,u,c,r  
            contact_groups ops  
            }  
              
    # Check number of databases and number of collections  
    define service{  
            host_name dbm1slave1  
            service_description MongoDB Number of databases  
            check_command check_mongodb!databases!27017!300!500  
            max_check_attempts 5  
            normal_check_interval 3  
            retry_check_interval 2  
            check_period 24x7  
            notification_interval 10  
            notification_period 24x7  
            notification_options w,u,c,r  
            contact_groups ops  
            }  
    define service{  
            host_name dbm1slave1  
            service_description MongoDB Number of collections  
            check_command check_mongodb!collections!27017!300!500  
            max_check_attempts 5  
            normal_check_interval 3  
            retry_check_interval 2  
            check_period 24x7  
            notification_interval 10  
            notification_period 24x7  
            notification_options w,u,c,r  
            contact_groups ops  
            }         
              
    # Check size of a database,检查库的大小  
    define service{  
            host_name dbm1slave1  
            service_description MongoDB Database size your-database  
            check_command check_mongodb_database!database_size!27017!300!500!your-database  
            max_check_attempts 5  
            normal_check_interval 3  
            retry_check_interval 2  
            check_period 24x7  
            notification_interval 10  
            notification_period 24x7  
            notification_options w,u,c,r  
            contact_groups ops  
            }                  
              
    # Check index size of a database,检查库索引的大小  
    define service{  
            host_name dbm1slave1  
            service_description MongoDB Database index size your-database  
            check_command check_mongodb_database!database_indexes!27017!50!100!your-database  
            max_check_attempts 5  
            normal_check_interval 3  
            retry_check_interval 2  
            check_period 24x7  
            notification_interval 10  
            notification_period 24x7  
            notification_options w,u,c,r  
            contact_groups ops  
            }              
              
    # Check index size of a collection,检查集合collection的索引大小  
    define service{  
            host_name dbm1slave1  
            service_description MongoDB Database index size your-database  
            check_command check_mongodb_collection!collection_indexes!27017!50!100!your-database!your-collection  
            max_check_attempts 5  
            normal_check_interval 3  
            retry_check_interval 2  
            check_period 24x7  
            notification_interval 10  
            notification_period 24x7  
            notification_options w,u,c,r  
            contact_groups ops  
            }  
              
    # Check the primary server of replicaset,检查复制的primary服务  
    define service{  
            host_name dbm1slave1  
            service_description MongoDB Replicaset Master Monitor: your-replicaset  
            check_command check_mongodb_replicaset!replica_primary!27017!0!1!your-replicaset   
            #示例:check_command check_mongodb_replicaset!replica_primary!27017!0!1!shard2  
            max_check_attempts 5  
            normal_check_interval 3  
            retry_check_interval 2  
            check_period 24x7  
            notification_interval 10  
            notification_period 24x7  
            notification_options w,u,c,r  
            contact_groups ops  
            }  
      
              
    # Check the number of queries per second,检查每一秒的查询数量  
    define service{  
            host_name dbm1slave1  
            service_description MongoDB Updates per Second  
            check_command check_mongodb_query!queries_per_second!27017!200!150!update  
            max_check_attempts 5  
            normal_check_interval 3  
            retry_check_interval 2  
            check_period 24x7  
            notification_interval 10  
            notification_period 24x7  
            notification_options w,u,c,r  
            contact_groups ops  
            }  
              
    # Check Primary Connection,检查复制中与primary库的连接时间,超过2秒就普通报警,超过4秒就严重报警  
    define service{  
            host_name dbm1slave1  
            service_description Mongo Connect Check  
            check_command check_mongodb!connect_primary!27017!2!4  
            max_check_attempts 5  
            normal_check_interval 3  
            retry_check_interval 2  
            check_period 24x7  
            notification_interval 10  
            notification_period 24x7  
            notification_options w,u,c,r  
            contact_groups ops  
            }  
      
    # Check Collection State,检查collection状态,检查mongo服务组列表的每一个主机,可以检查重要collection的高可用性(锁、超时、服务配置的可用性),如果发现一个查询失败就会报警。  
    define service{  
            host_name dbm1slave1  
            service_description Mongo Collection State  
            check_command check_mongodb!collection_state!27017!your-database!your-collection  
            max_check_attempts 5  
            normal_check_interval 3  
            retry_check_interval 2  
            check_period 24x7  
            notification_interval 10  
            notification_period 24x7  
            notification_options w,u,c,r  
            contact_groups ops  
            }  
4,查看部分监控项效果配置完nagios端服务,重启下service nagios restart; 等上几分钟,nagios监控界面就会出现完整的mongo服务信息,如下所示:
26230597_14128704016o7R.jpg


5
,从ps中确定mongodb的架构
[iyunv@db-m1-slave-1 ~]# ps -eaf|grep mongo
mongodb   2457     1  0  2013 ?        2-03:39:08 ./mongod --configsvr --dbpath /home/data/mongodb/config --port 20000 --logpath /home/data/mongodb/config.log --logappend --fork
mongodb   2804     1  0  2013 ?        1-10:02:33 mongos --configdb 192.168.12.62:20000,192.168.12.63:20000,192.168.12.72:20000 --port 30000 --chunkSize 64 --logpath /home/data/mongodb/mongos.log --logappend --fork
mongodb   3072     1  0  2013 ?        1-10:17:20 mongod --shardsvr --replSet shard1 --port 27017 --dbpath /home/data/mongodb/shard11 --oplogSize 2048 --logpath /home/data/mongodb/shard11.log --logappend --fork
root     11179  9391  0 11:14 pts/1    00:00:00 grep mongo
mongodb  30414     1  0 Feb14 ?        1-06:20:50 mongod --shardsvr --replSet shard2 --port 27018 --dbpath /home/data/mongodb/shard21 --oplogSize 2048 --logpath /home/data/mongodb/shard21.log --logappend --fork
[iyunv@db-m1-slave-1 ~]#

看到有4个mongo进程,
a)         启动参数有“--configdb”的就是集群入口进程;
b)         Shard Server,启动参数带“--shardsvr --replSet”的是集群分片的一个片组启动进程,用户存储实际的数据块,也就是27017端口和27018端口的mongodb服务实例。至于如何判断27017端口中哪个是primary哪个是secondary需要去登录27107端口执行rs.status();去查看一下。
c)         Config Server:启动参数带“--configsvr”的进程,存储了整个Cluster Metadata,其中包括chunk信息,也就是20000端口的mongodb服务实例。
d)         Route Server:启动参数带“mongos --configdb”的进程,前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用,也就是30000端口的mongodb实例。


6,调试中出现过的错误

错误1:
[iyunv@wgq nagios ~]# tail -f /usr/local/nagios/var/nagios.log
[1412819956] Warning: Return code of 13 for check of service 'Mongo Memory Usage' on host 'dbm1slave1' was out of bounds.
[1412819956] SERVICE ALERT: dbm1slave1;Mongo Memory Usage;CRITICAL;SOFT;1;(Return code of 13 is out of bounds)
[1412819975] Warning: Return code of 13 for check of service 'Mongodb Connect Check' on host 'dbm1slave1' was out of bounds.
[1412819975] SERVICE ALERT: dbm1slave1;Mongodb Connect Check;CRITICAL;SOFT;1;(Return code of 13 is out of bounds)
[1412820058] Warning: Return code of 13 for check of service 'Mongo Free Connections' on host 'dbm1slave1' was out of bounds.

需要赋值nagios用户所有权限以及r执行权限
chmod 770 /usr/lib/nagios/plugins/check_mongodb.py
chown -R nagios.nagios /usr/lib/nagios/plugins/check_mongodb.py

错误2:
监控界面Status Information一栏出现 No module named pymongo报错提示信息:
出现这个提示是因为需要安装pymongo模块,执行easy_install pymongo命令安装即可,如下所示:
[iyunv@wgq objects]# easy_install pymongo
Searching for pymongo
Reading http://pypi.python.org/simple/pymongo/
Best match: pymongo 2.7.2
......
zip_safe flag not set; analyzing archive contents...
Adding pymongo 2.7.2 to easy-install.pth file

Installed /usr/lib/python2.6/site-packages/pymongo-2.7.2-py2.6-linux-x86_64.egg
Processing dependencies for pymongo
Finished processing dependencies for pymongo



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-25838-1-1.html 上篇帖子: centos6.5 nagios-4.0.8 系统自带sendmail邮件报警设置 下篇帖子: Nagios监控生产环境redis集群服务实战 监控
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表