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

php中文网
发布: 2016-06-07 16:48:12
原创
1104人浏览过

在有些情况下,只能使用远程的MongoDB实例而不能登录到MongoDB实例所在的服务器上,这时可以在一台服务器上维护一个远程MongoDB实例的主机和端口列表,然后通过z

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


Linfo.ai
Linfo.ai

Linfo AI 是一款AI驱动的 Chrome 扩展程序,可以将网页文章、行业报告、YouTube 视频和 PDF 文档转换为结构化摘要。

Linfo.ai 151
查看详情 Linfo.ai
  • 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


    相关标签:
    最佳 Windows 性能的顶级免费优化软件
    最佳 Windows 性能的顶级免费优化软件

    每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

    下载
    来源:php中文网
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
    最新问题
    开源免费商场系统广告
    热门教程
    更多>
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号