文档章节

zabbix自动发现监控mongo数据库

实践哥
 实践哥
发布于 2016/11/04 22:23
字数 772
阅读 2270
收藏 73

监控mongo写个模板其实挺快的,如果公司每个mongo使用的端口都一致的话,就可直接建立一套模板,然后这个模板链接到各个服务器上即可。但如果公司使用mongo的端口如果不一致的话,那建议使用zabbix的自动发现的功能,自动发现mongo监听的端口,并对它进行相关数据的收集。

 

先看一下效果图,

此监控图是zabbix的筛选功能可能把相关的图整合到一个页面里面去。

 

具体的自动发现实现如下:

探索规则配置如上,机器上的zabbix agent配置如下:

UserParameter=mongo.discover,python /usr/local/zabbix/discover_mongo.py

 

其中/usr/local/zabbix/discover_mongo.py为自动发现的脚本,脚本内容如下:

#coding:utf-8
import simplejson as json
import commands

(status, output) = commands.getstatusoutput('''sudo netstat -tlnp|grep 'mongod'|awk '{print $4}'|awk -F':' '{print $(NF)}'|sort -u|grep -v "^28"''')
outputs = output.split('\n')
ports = []
for port in  outputs:
    ports += [{'{#MONGOPORT}': port}]

print json.dumps({'data':ports},sort_keys=True,indent=4)

使用系统命令netstat把监听的端口筛选出来,然后以json的格式进行输出。定义到此就可以自动发现zabbix监听的端口。

注意:netstat一般zabbix用户没有权限,需要visudo进行对应的设置,此脚本可能得针对自己的环境进行相对的调整。visudo添加配置如下:

zabbix ALL= NOPASSWD: /bin/netstat
Defaults:zabbix   !requiretty

 

探索完端口后,zabbix server就需要以端口为其中一个参数向zabbix agent取数据,其中项目原型配置如下:

如果返回的{#MONGOPORT}有多个的话,那监控项目就乘以几。

 

其中mongo.status的定义如下(此定义还是zabbix agent下):

UserParameter=mongo.status[*],sh /usr/local/zabbix/check_mongo.sh -p $1 -k $2 -K $3

使用一个脚本传入参数来获取mongo的一些数据收集,后续可直接扩展此脚本(-p代表端口),mongo的serverStatus有多个参数,采集的就用到opcounters等,-k和-K能具体获取其数值。其中脚本如下:

#!/bin/sh
while getopts "p:k:K:" opt
do
        case $opt in
                p ) mongo_port=$OPTARG;;
                k ) key1=$OPTARG;;
                K ) key2=$OPTARG;;
                ? )
                echo 'parameter is wrong!'
                exit 1;;
        esac
done

if [ ! "${mongo_port}" ] || [ ! "${key1}" ] || [ ! "${key2}" ];then
        echo "parameter is null"        
        exit 1
fi

echo "db.serverStatus().${key1}"|mongo --port=${mongo_port}|sed 's/,/\r\n/g'|grep "${key2}" |awk -F':|,|}' '{print $2}'

 

部署完一个模板,把模板关联到mongo的机器,就能收集相关的操作信息。在模板上再添加一个图形原型,如下:

模板应用完如果没问题就可以在zabbix的筛选中把mongo集群的数据汇在一个网页上进行查看。

 

最后附上本人的网络课堂地址,如有兴趣请点击: 实践哥

模板见:https://git.oschina.net/zhuangweihong/ops

© 著作权归作者所有

共有 人打赏支持
实践哥
粉丝 66
博文 51
码字总数 35897
作品 0
杭州
运维
私信 提问
加载中

评论(1)

游龙惜凤
游龙惜凤
我就随便看看
结合Zabbix与Ansible打造自动化数据库监控体系

本文根据dbaplus社群第162期线上分享整理而成。 随着业务的飞速发展,数据库服务器量级飞速增长,比如Oracle、MySQL、Redis、MongoDB的使用更加普及,对数据库运维人员的要求也越来越高,构建...

刘宇
10/10
0
0
zabbix自动发现监控mysql数据库

跟zabbix自动发现监控mongo数据库的思路差不多,如果公司的mysql都是使用3306端口或者同一端口的话,可直接创建模板,链接到各个服务器即可。如果公司的mysql的比较多或者端口不一致,还是得...

just_do_itit
2016/11/10
0
3
zabbix自动发现监控redis数据库

zabbix自动发现监控redis数据库与自动发现mongo,mysql的思路差不多。这次汇总完就把模板,脚本上传到git上。如果公司使用的redis都是6379端口的话,那么还是建议创建一套模板,然后链接到各...

just_do_itit
2016/11/12
0
0
zabbix监控Mongodb

监控原理 在MongoDB服务器上可以通过shell命令echo "db.serverStatus()" | mongo admin来查看MongoDB的状态 1.版本介绍 centos6.5 Mongodb3.07 2.操作步骤 客户端配置 (1) zabbix客户端配置文...

sxguop
2015/12/03
0
0
实现zabbix对tomcat的监控

what-zabbix 优点: 1>开源,无软件成本投入 2>Server 对设备性能要求低 3>支持设备多,自带多种监控模板 4>支持分布式集中管理,有自动发现功能,可以实现自动化监控 5>开放式接口,扩展性强,插件...

知微不知更
2017/04/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

微服务分布式事务实现

https://www.processon.com/view/link/5b2144d7e4b001a14d3d2d30

WALK_MAN
今天
2
0
《大漠烟尘》读书笔记及读后感文章3700字

《大漠烟尘》读书笔记及读后感文章3700字: 在这个浮躁的社会里,你有多久没有好好读完一本书了? 我们总觉得自己和别人不一样,所以当看到别人身上的问题时,很少有“反求诸己”,反思自己。...

原创小博客
今天
4
0
大数据教程(9.5)用MR实现sql中的jion逻辑

上一篇博客讲解了使用jar -jar的方式来运行提交MR程序,以及通过修改YarnRunner的源码来实现MR的windows开发环境提交到集群的方式。本篇博主将分享sql中常见的join操作。 一、需求 订单数据表...

em_aaron
今天
3
0
十万个为什么之什么是resultful规范

起源 越来越多的人开始意识到,网站即软件,而且是一种新型的软件。这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点...

尾生
今天
3
0
Terraform配置文件(Terraform configuration)

Terraform配置文件 翻译自Terraform Configuration Terraform用文本文件来描述设备、设置变量。这些文件被称为Terraform配置文件,以.tf结尾。这一部分将讲述Terraform配置文件的加载与格式。...

buddie
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部