使用Zabbix Agent 2监控MongoDB
参考链接 :
使用Zabbix Agent 2监控MongoDB
https://mp.weixin.qq.com/s/41-CNF-_n8upXeUBOioMpw
从Zabbix5.0.10和5.2.6的版本开始,Zabbix官方开始支持对MongoDB数据库的监控,平时作者用MongoDB比较多,本文介绍如何使用zabbix-agent2来监控MongoDB数据库。
监控什么?
Zabbix官方分别提供了监控MongoDB集群和MongoDB节点的模板。获取MongoDB节点和集群状态和集合的存储信息的方式是一样的,只不过监控集群状态的模板多了获取连接池的状态和集群巨型块的数量,而节点模板会获取每个集合的使用情况、操作日志信息、ReplSet的状态。
获取Jumbo chunks的数量
当chunk超过默认大小并且不能被拆分将会被标记为jumbo chunk,jumbo chunk会不断增长,MongoDB集群有一个balancer会根据分片间的chunk数的差异来进行迁移,使数据均匀分布,jumbo chunk数量过多会导致分片间的负载不均衡,jumbo chunk数量过多的原因其实还是shard key规划不合理造成的。下面是zabbix获取jumbo chunk数量时调用的命令:
use config
db.chunks.find({"jumbo":true})
获取connpool.stats信息
下面是zabbix获取connpool时调用的命令:
db.runCommand({"connPoolStats" : 1})
关于此监控项依赖项的详细信息可查看官网有详细说明:
https://docs.mongodb.com/manual/reference/command/connPoolStats/#dbcmd.connPoolStats
获取MongoDB服务器状态
获取MongoDB服务状态调用的是下面的命令:
db.runCommand({serverStatus:1,recordStats:0})
关于此监控项依赖项的详细信息可查看官网有详细说明:https://docs.mongodb.com/manual/reference/command/serverStatus/#dbcmd.serverStatus
获取集合的信息
通过自动发现规则获取数据库和collections的名字, 并返回每个collections的信息,可以使用宏定义不需要获取的collections信息 下面是获取collections信息调用的命令。
db.runCommand( { collStats : "collections_name"})
关于此监控项依赖项的详细信息可查看
https://docs.mongodb.com/manual/reference/command/collStats/index.html
获取replSet状态
将会收集MongoDB的replSet的状态,当然没有配置replSet是不会获取到结果的 下面是获取replSet状态调用的命令。
db.adminCommand({replSetGetStatus:1})
关于此监控项的详细信息可查看:https://docs.mongodb.com/manual/reference/command/replSetGetStatus/
获取给定数据库的信息
通过自动发现规则获取数据库的名字, 并返回每个数据库的信息,可以使用宏定义不需要获取的数据库 下面是获取数据库存储信息调用的命令。
db.runCommand({dbStats:1})
关于此监控项的详细信息可查看:https://docs.mongodb.com/manual/reference/command/dbStats/
轮询oplog的数据获取replSet的状态
oplog是local库下的集合,replSet的信息会存储在这个集合中,执行下面的命令会获取oplog的状态、大小、存储的时间范围。
关于此监控项的输出信息可查看:https://docs.mongodb.com/manual/reference/method/db.getReplicationInfo/。
如何去监控?
首先需要在MongoDB中创建数据库和集群的只读用户。
use admin
db.auth("admin", "qwer@1234..asd")
db.createUser({
... "user": "zabbix",
... "pwd": "zabbix123",
... "roles": [
... { role: "readAnyDatabase", db: "admin" },
... { role: "clusterMonitor", db: "admin" },
... ]
... })
除了在url上直接定义连接信息外,还可以使用会话命名的方式,这对于监控多个实例是很方便的一种方式,也方便模板对监控项统一配置。
Plugins.Mongo.Sessions.Mongo1.Uri=tcp://127.0.0.1:27017
Plugins.Mongo.Sessions.Mongo1.User=<UsernameForMongo1>
Plugins.Mongo.Sessions.Mongo1.Password=<PasswordForMongo1>
Plugins.Mongo.Sessions.Mongo2.Uri=tcp://127.0.0.1:27018
Plugins.Mongo.Sessions.Mongo2.User=<UsernameForMongo2>
Plugins.Mongo.Sessions.Mongo2.Password=<PasswordForMongo2>
之后在url上可以只定义会话名即可对多实例进行监控。
mongodb.ping[Mongo1]
mongodb.ping[Mongo2]
模板使用了默认的连接参数,这里我改用命名会话进行连接。
之后直接在主机上链接模板即可实现对MongoDB的监控。
关于监控MongoDB模板的宏、发现规则,以及监控项触发器的说明可以参考官方说明https://www.zabbix.com/integrations/mongodb
参考链接 :
使用Zabbix Agent 2监控MongoDB
https://mp.weixin.qq.com/s/41-CNF-_n8upXeUBOioMpw
使用Zabbix Agent 2监控MongoDB相关推荐
- Zabbix监控MongoDB、Nignx、Redis、Php-fpm、SNMP(如打印机)
Zabbix:v3.4 MongoDB:v3.4 MongoDB模板,感谢大神 MongoDB for Zabbix:https://share.zabbix.com/databases/mongod ...
- 使用zabbix监控MongoDB
现在公司几个游戏项目主要使用MongoDB来存储游戏数据,所以对MongoDB的监控非常重要.关于MongoDB的其他监控方法详见以下几篇文章: MongoDB监控一 MongoDB监控二 mongo ...
- zabbix监控系统下——zabbix实现数据库监控、对JMX的支持、server和agent的关系、zabbix监控报警平台
目录 五.zabbix实现数据库监控 1.在agent端设置 2.在浏览器前端设置 六.zabbix对JMX(Java)应用的支持 七.server和agent的关系 1.agent端的信息采集变被动 ...
- Zabbix学习(五)之Zabbix Agent Active 主动模式监控
zabbix agent主动模式与被动模式的区别 zabbix agent的运行模式有以下两种: 1.被动模式:此模式为zabbix默认的工作模式,由zabbix server 向zabbix age ...
- Zabbix之agent部署监控Linux与Windows
Zabbix之agent部署监控Linux与Windows 文章目录 一.agent简介 二.监控服务配置流程与步骤 1. 监控配置流程 2. 监控配置步骤 三.部署agent监控Linux主机 1. ...
- zabbix系列(十二) 监控MongoDB业务数据
目录 一.简介 二.部署说明 2.1编写python程序进行获取mogno数据 2.2.上传python脚本至服务器,并测试通过 2.3.配置zabbix web页面,获取数据入库 2.4 .配置gr ...
- zabbix server、zabbix agent、zabbix proxy 配置文件详解
zabbix配置文件种类: ? 1 2 3 zabbix_server配置文件zabbix_server.conf zabbix_proxy配置文件zabbix_proxy.conf zabbix ...
- zabbix登山路——简单监控_各项参数解析
一.简单检查,通常用来检查远程未安装代理或者客户端的服务 使用simple checks,被监控客户端无需安装zabbix agent客户端,zabbix server直接使用simple check ...
- 使用Zabbix官方模板监控MySQL
关于Zabbix和MySQL安装就不在说明,请自行参考相关文档 复制官方MySQL监控的userparameter到安装目录,我这里是采用的3.4.1源码安装,安装目录在/usr/local/zabb ...
最新文章
- java语言编写简易表达式_将简单的表达语言放入Java
- Linux内存中的 buffer 和 cache 到底是个什么东东?
- 第九课 特殊权限set_uid、stick_bit,软链接,硬链接
- oracle 提取首字母,oracle 取字段文字拼音首字母
- 中青旅:在线旅游行业如何选型数据分析平台?
- 华为故事,李一男,任正非
- Opencv学习笔记之OpenCV介绍
- phpfind mysql怎么用_MySQL 的 find_in_set 函数使用方法
- python glob.glob() 函数
- Spring的AOP-底层原理
- Linux中main和初启函数,ARM启动代码中_main 与用户主程序main()的区别
- C++文件操作(打开、关闭、文件读取数据存入数组)
- java解析xml的4种经典方法
- Python笔记:Python中的main函数
- sql 时间转换格式 convert(varchar(10),字段名,转换格式)
- innerHTML 插入 script 脚本正确执行的处理方式
- (转)投资AI的核心标准是场景和数据
- Excel中Match()函数使用方法
- 记一次golang memory leak的解决过程
- 获取手机验证码按钮的效果实现
热门文章
- python仿真界面_基于Python语言的ABAQUS脚本仿真简介
- 海量图片去重算法-局部分块Hash算法
- AI安全隐患凸显,行业安全生态迫在眉睫
- 教程: UNet/UNet++多类别图像分割,含数据集制作
- 使用resnet, inception3进行fine-tune出现训练集准确率很高但验证集很低的问题
- python中素数的求法_Python 2种方法求某个范围内的所有素数(质数)
- 蓝牙 查询码 android,android bluetooth UUID蓝牙查询表
- ObjC学习11-复制对象与归档
- 给技术型创业者的几点建议
- LTE学习:关于CNTI