阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

教你如何利用zabbix自动发现监控mongo数据库

29次阅读
没有评论

共计 1663 个字符,预计需要花费 5 分钟才能阅读完成。

导读 监控 mongo 写个模板其实挺快的,如果公司每个 mongo 使用的端口都一致的话,就可直接建立一套模板,然后这个模板链接到各个服务器上即可。

但如果公司使用 mongo 的端口如果不一致的话,那建议使用 zabbix 的自动发现的功能,自动发现 mongo 监听的端口,并对它进行相关数据的收集。

先看一下效果图,

教你如何利用 zabbix 自动发现监控 mongo 数据库

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

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

教你如何利用 zabbix 自动发现监控 mongo 数据库

探索规则配置如上,机器上的 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 取数据,其中项目原型配置如下:

教你如何利用 zabbix 自动发现监控 mongo 数据库

如果返回的 {#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 数据库

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

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计1663字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中