dba+开源工具:面向开发的MongoDB图形可视化监控

2020 年 5 月 22 日

dba+开源工具:面向开发的MongoDB图形可视化监控

本文由 dbaplus 社群授权转载。


简介


一款面向研发人员查看的 MongoDB 图形可视化监控工具,借鉴了 Percona PMM Grafana 以及官方自带的 mongostat 工具输出的监控指标项,去掉了一些不必要、看不懂的监控项。目前采集了数据库连接数、QPS/TPS、内存使用率统计,副本集 replset 状态信息和同步复制延迟时长。


采用远程连接方式进去获取数据,所以不需要在数据库服务器端部署相关 agent 或计划任务,可实现微信和邮件报警。


注:监控环境为 MongoDB 3.2 以上版本,2.X 版本未测试。



Mongo 状态监控,点击图表,可以查看历史曲线图:


1、连接数



2、QPS 图表



环境搭建


1、php-mysql 驱动安装


shell> yum install -y php-pear php-devel php gcc openssl openssl-devel cyrus-sasl cyrus-sasl-devel httpd mysql php-mysql


2、php-mongo 驱动安装


shell> pecl install mongo


把 extension=mongo.so 加入到/etc/php.ini 最后一行


重启 httpd 服务,service httpd restart


注:如果通过 pecl 安装报错,请参考以下链接,进行源码安装。PHP 5.4 版本对应的驱动版本是 mongodb-1.3.4.tgz


参考链接:https://www.runoob.com/mongodb/mongodb-install-php-driver.html


3、创建 MongoDB 超级用户权限(监控采集数据时使用)


首先我们在被监控的数据库端创建授权帐号,允许采集器服务器能连接到 MongoDB 数据库。由于需要执行命令 db.runCommand({serverStatus:1,repl:1}).repl 和 db.adminCommand( { replSetGetStatus: 1 } ).members,所以需要授予 root 角色,授权方式如下所示:


> use admin>db.createUser({user:"admin",pwd:"123456",roles:[{role:"root",db:"admin"}]})
复制代码


mongo_monitor 部署


https://github.com/hcymysql/mongo_monitor/archive/master.zip安装包解压缩到 /var/www/html/目录下:


cd /var/www/html/mongo_monitor/


chmod 755 ./mail/sendEmail


chmod 755 ./weixin/wechat.py


注:邮件和微信报警调用的第三方工具,所以这里要赋予可执行权限 755。


1、导入 Mongo Monitor 监控工具表结构(mongo_monitor 库)


cd /var/www/html/mongo_monitor/


mysql -uroot -p123456 < mongo_monitor_schema.sql
复制代码


2、录入被监控主机的信息


INSERT INTO `mongo_status_info`(ip,tag,USER,pwd,PORT,authdb,send_mail_to_list,send_weixin_to_list,threshold_alarm_connection,threshold_alarm_repl)VALUES('10.10.159.31','MongoDB测试机1','admin','hechunyang','27017','admin','hechunyang','hechunyang@126.com',1000,60);
复制代码


注,以下字段可以按照需求变更:


  • ip字段含义:输入被监控Mongo的IP地址

  • tag字段含义:输入被监控Mongo的业务名字

  • user字段含义:输入被监控Mongo的用户名(ROOT权限)

  • pwd字段含义:输入被监控Mongo的密码

  • port字段含义:输入被监控MySQL的端口号

  • authdb字段含义:输入被监控Mongo的数据库登录权限认证库名

  • monitor字段含义:0为关闭监控(也不采集数据,直接跳过);1为开启监控(采集数据)

  • send_mail字段含义:0为关闭邮件报警;1为开启邮件报警

  • send_mail_to_list字段含义:邮件人列表

  • send_weixin字段含义:0为关闭微信报警;1为开启微信报警

  • send_weixin_to_list字段含义:微信公众号

  • threshold_alarm_connection字段含义:设置连接数阀值(单位个)

  • threshold_alarm_repl字段含义:设置主从复制延迟阀值(单位秒)


3、修改 conn.php 配置文件


vim /var/www/html/mongo_monitor/conn.php


$con = mysqli_connect(“127.0.0.1”,“admin”,“hechunyang”,“mongo_monitor”,“3306”) or die(“数据库链接错误”.mysql_error());


改成你的 Mongo Monitor 监控工具表结构(mongo_monitor 库)连接信息。


4、修改邮件报警信息


cd /var/www/html/mongo_monitor/mail/


vim mail.php


system("./mail/sendEmail -f chunyang_he@139.com -t ‘{$this->send_mail_to_list}’ -s smtp.139.com:25 -u ‘{$this->alarm_subject}’ -o message-charset=utf8 -o message-content-type=html -m '报警信息:


{$this->alarm_info}’ -xu chunyang_he@139.com -xp ‘123456’ -o tls=no");


改成你的发件人地址、账号密码,里面的变量不用修改。


5、修改微信报警信息


cd /var/www/html/mongo_monitor/weixin/


vim wechat.py


微信企业号设置移步https://github.com/X-Mars/Zabbix-Alert-WeChat/blob/master/README.md看此教程配置。


6、定时任务每分钟抓取一次


crontab -l


*/1 * * * * cd /var/www/html/mongo_monitor; /usr/bin/php /var/www/html/mongo_monitor/check_mongo_status.php > /dev/null 2 >&1*/1 * * * * cd /var/www/html/mongo_monitor; /usr/bin/php /var/www/html/mongo_monitor/check_mongo_repl.php > /dev/null 2 >&1
复制代码


check_mongo_status.php(用来采集被监控端 Mongo 状态信息和触发报警)


check_mongo_repl.php(用来采集被监控端 Mongo 主从复制信息和触发报警)


7、更改页面自动刷新频率


vim mongo_replset_monitor.php


http-equiv="refresh" content="600"
复制代码


默认页面每 600 秒自动刷新一次。


8、页面访问


http://yourIP/mongo_monitor/mongo_replset_monitor.php


加一个超链接,可方便地接入你们的自动化运维平台里。


下载方式


此工具现通过 dbaplus 社群免费为大家提供下载使用。若使用过程中有任何问题或建议,可随时与我们联系,欢迎大家试用。


登录以下链接即可下载



https://github.com/hcymysql/mongo_monitor


更多开源工具 &脚本



详情及下载:http://dbaplus.cn/list-142-1.html


工具下载


https://github.com/hcymysql/mongo_monitor


作者介绍


贺春旸,凡普金科爱钱进 DBA 团队负责人,《MySQL 管理之道:性能调优、高可用与监控》第一、二版作者,曾任职于中国移动飞信、安卓机锋网。致力于 MariaDB、MongoDB 等开源技术的研究,主要负责数据库性能调优、监控和架构设计。


原文链接


https://mp.weixin.qq.com/s?__biz=MzI4NTA1MDEwNg==&mid=2650788585&idx=1&sn=228a243fce75f8ebef9660c14731eff9&chksm=f3f9677cc48eee6af9c1392b2d2b2d432aad93bac70bc57d1bb77310cf8c6225b6a5af0cbb1c&scene=27#wechat_redirect


2020 年 5 月 22 日 10:001560

评论

发布
暂无评论
发现更多内容

我哭了!Centos6停止更新只能切换7,哪些习惯也需要切换

小Q

Java Linux centos 学习 面试

刚拿到蚂蚁金服架构师offer!大佬教你如何成为offer收割机

比伯

Java 编程 架构 面试 计算机

助力孩子走上学霸之路,K12学习神器现已面世!

intel001

使用LiteOS Studio图形化查看LiteOS在STM32上运行的奥秘

华为云开发者社区

LiteOS 脚本 语言

我哭了!Centos6停止更新只能切换7,哪些习惯也需要切换

996小迁

Java 架构 面试 Centos6

Spark-submit执行流程,了解一下

华为云开发者社区

spark 技术 流程

了解OAuth2.0

环信

《迅雷链精品课》第十二课:PoW共识算法

迅雷链

区块链

构师训练营第八周学习笔记

李日盛

笔记

恕我直言!有了这份MySQL学习文档,你收藏夹里的其他MySQL学习资料都可以扔了

Java架构之路

Java 程序员 架构 面试 编程语言

港美股交易系统开发框架构造简述篇

软件开发大鱼V15724971504

国际配售 港股交易系统开发 证券交易系统 资管系统 港股打新系统

JS&Swift

ios swift

三分钟看懂新一代.Net Core3.1工作流引擎平台

Philips

敏捷开发 工作流

滴滴DoKit-功能介绍之文件同步助手

工具 文件 DoKit

训练营第八周作业

大脸猫

极客大学架构师训练营

LeetCode题解:515. 在每个树行中找最大值,DFS,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

话题讨论 | 程序员自己电脑中毒是甚么体验?

xcbeyond

话题讨论

华为云亮相QCon2020深圳站,带你体会大厂的云原生玩法与秘诀

华为云开发者社区

专家 华为云 深圳

DolphinDB与Elasticserach在金融数据集上的性能对比测试

DolphinDB

数据处理 金融 时序数据库 tsdb DolphinDB

最简单的Go Dockerfile编写姿势,没有之一!

Kevin Wan

go Docker Dockerfile

让垃圾分类开发“极快致简”的好物件,零基础的开发小白也能轻松驾驭它!

华为云开发者社区

数据 分类

装机必备:借用IDM实现百度云高速下载

懒得勤快

训练营第八周总结

大脸猫

极客大学架构师训练营

服务于阿里、滴滴、华为等一线互联网公司的分布式消息中间件RocketMQ核心笔记

Java架构追梦

Java 架构 面试 RocketMQ 消息中间件

SGY奇点交易所系统软件APP开发

开發I852946OIIO

系统开发

官方活动 | 盘点2020有奖征文

InfoQ写作平台

活动专区 盘点2020

github上标星70.5k,贼火的Java突击手册,全面详细对标阿里P7

Crud的程序员

Java 多线程 架构师 java面试 java基础

一周信创舆情观察(11.30~12.6)

统小信uos

什么是802.11ax(Wi-Fi 6)

网络技术平台

请问如何短时间突击 Java 通过面试?

Java架构师迁哥

动态高并发时为什么推荐ReentrantLock而不是Synchronized?

moon聊技术

JVM 并发 synchronized ReentrantLock 锁升级

dba+开源工具:面向开发的MongoDB图形可视化监控-InfoQ