为了账号安全,请及时绑定邮箱和手机立即绑定

zabbix根据主机和端口列表自动发现监控远程MongoDB实例

标签:
MongoDB


在有些情况下,只能使用远程的MongoDB实例而不能登录到MongoDB实例所在的服务器上,这时可以在一台服务器上维护一个远程MongoDB实例的主机和端口列表,然后通过zabbix的低级发现功能去根据主机和端口自动添加相应的监控。

MongoDB主机和端口发现脚步mongodb_discovery.py

主机和端口列表文件mongodb_servers.txt,文件中存放每个实例的主机,端口信息

10.4.9.112:28018:root:xxxx

10.4.9.2:27017:root

10.4.9.3:28018

#/usr/bin/python

#This script is used to discovery disk on the server

import subprocess

import json

args='''awk -F':' '{print $1":"$2}' /usr/local/zabbix/bin/mongodb_servers.txt'''

t=subprocess.Popen(args,shell=True,stdout=subprocess.PIPE).communicate()[0]

mongodbs=[]

for mongo in t.split('\n'):

    if len(mongo) != 0:

       mongodbs.append({'{#MONGO_HOST}':mongo})

print json.dumps({'data':mongodbs},indent=4,separators=(',',':'))

显示结果:

{

    "data":[

        {

            "{#MONGO_HOST}":"192.168.5.7:30000"

        },

        {

            "{#MONGO_HOST}":"192.168.5.7:30001"

        },

        {

            "{#MONGO_HOST}":"192.168.5.23:30002"

        },

        {

            "{#MONGO_HOST}":"192.168.5.23:30003"

        }

    ]

}

2.获取MongoDB端口状态信息脚本discovery_mongodb_status.sh

这里会根据{#MONGO_HOST}传来的值在mongodb_servers.txt文件中找到相应的行,并以冒号 “:” 判断整行的长度,然后使用不同的mongodb连接方式

 

#This script is used to get discovered  mongodb servers status

#echo "db.serverStatus().uptime"|mongo 192.168.5.23:30002/admin  -uroot -pxxxx

#echo "db.serverStatus().mem.mapped"|mongo 192.168.5.23:30002/admin  -uroot -pxxx

#echo "db.serverStatus().globalLock.activeClients.total"|mongo 192.168.5.23:30002/admin  -uroot -pxxx

# Macro {#MONGO_INFO}  "HOSTNAME:PORT:USERNAME:PASSWORD"

#sh discovery_mongodb_status.sh  uptime  {#MONGO_HOST} 

#sh discovery_mongodb_status.sh  mem mapped  {#MONGO_HOST} 

#sh discovery_mongodb_status.sh  globalLock activeClients total  {#MONGO_HOST} 

#one more parameter

mongo_info=""

command_line=""

function check_mongo_info() {

    num=$(echo $mongo_info|awk -F":" '{print NF}')

    host=$(echo $mongo_info|awk -F":" '{print $1}')

    port=$(echo $mongo_info|awk -F":" '{print $2}')

    username=$(echo $mongo_info|awk -F":" '{print $3}')

    password=$(echo $mongo_info|awk -F":" '{print $4}')

   

    case $num in

     2)

       command_line="/data/app_platform/mongodb/bin/mongo $host:$port/admin"

       ;;

     3)

       command_line="/data/app_platform/mongodb/bin/mongo $host:$port/admin -u$username -p''"

       ;;

     4)

       command_line="/data/app_platform/mongodb/bin/mongo $host:$port/admin -u$username -p$password"

       ;;

     esac

            

                            }

case $# in

  2)    

    mongo_info=$(grep $2 /usr/local/zabbix/bin/mongodb_servers.txt)

    check_mongo_info 

    output=$(/bin/echo "db.serverStatus().$1" |$command_line|sed -n '3p')

    ;;

  3)

    mongo_info=$(grep $3 /usr/local/zabbix/bin/mongodb_servers.txt)

    check_mongo_info

    output=$(/bin/echo "db.serverStatus().$1.$2" |$command_line|sed -n '3p')

    ;;

  4)

    mongo_info=$(grep $4 /usr/local/zabbix/bin/mongodb_servers.txt)

    check_mongo_info

    output=$(/bin/echo "db.serverStatus().$1.$2.$3" |$command_line|sed -n '3p')

    ;;

esac

#check if the output contains "NumberLong"

if [[ "$output" =~ "NumberLong"   ]];then

  echo $output|sed -n 's/NumberLong(//p'|sed -n 's/)//p'

else 

  echo $output

fi

显示结果:

$sh discovery_mongodb_status.sh uptime 192.168.5.23:30002

23823151

$ sh discovery_mongodb_status.sh mem mapped 192.168.5.23:30002

46691

$ sh discovery_mongodb_status.sh globalLock activeClients total 192.168.5.23:30002

0

3.添加MongoDB自动发现的zabbix配置文件discovery_mongodb_status.conf 

#echo "db.serverStatus().mem.mapped"|mongo admin --host xxxx --port xxx  -uroot -pxxxx

#echo "db.serverStatus().mem.mapped"|mongo 10.4.9.112:28018/admin  -uroot -pxxxx

#UserParameter=MongoDB.Status[*],/bin/echo "db.serverStatus().$1.$2" |/data/app_platform/mongodb/bin/mongo admin --port 2

8018|sed -n '3p'

UserParameter=MongoDB.Discovery,/usr/bin/python /usr/local/zabbix/bin/mongodb_discovery.py

UserParameter=MongoDB.Discovery_Status[*],/usr/local/zabbix/bin/discovery_mongodb_status.sh $1 $2 $3 $4

模板参见附件

附件:http://down.51cto.com/data/2365000

©著作权归作者所有:来自51CTO博客作者自由linux的原创作品,如需转载,请注明出处,否则将追究法律责任


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消