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

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

创新互联建站是一家集网站建设,衡阳县企业网站建设,衡阳县品牌网站建设,网站定制,衡阳县网站建设报价,网络营销,网络优化,衡阳县网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
  1. 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

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文名称:zabbix根据主机和端口列表自动发现监控远程MongoDB实例-创新互联
文章链接:http://scyanting.com/article/cejcsj.html