千家信息网

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

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,在有些情况下,只能使用远程的MongoDB实例而不能登录到MongoDB实例所在的服务器上,这时可以在一台服务器上维护一个远程MongoDB实例的主机和端口列表,然后通过zabbix的低级发现功能去根
千家信息网最后更新 2026年11月03日zabbix根据主机和端口列表自动发现监控远程MongoDB实例

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


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

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


10.4.9.112:28018:root:xxxx10.4.9.2:27017:root10.4.9.3:28018
#/usr/bin/python#This script is used to discovery disk on the serverimport subprocessimport jsonargs='''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 parametermongo_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 $outputfi


显示结果:

$sh discovery_mongodb_status.sh uptime 192.168.5.23:3000223823151$ sh discovery_mongodb_status.sh mem mapped 192.168.5.23:3000246691$ sh discovery_mongodb_status.sh globalLock activeClients total 192.168.5.23:300020


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 28018|sed -n '3p'UserParameter=MongoDB.Discovery,/usr/bin/python /usr/local/zabbix/bin/mongodb_discovery.pyUserParameter=MongoDB.Discovery_Status[*],/usr/local/zabbix/bin/discovery_mongodb_status.sh $1 $2 $3 $4



模板参见附件

附件:http://down.51cto.com/data/2365000
端口 主机 实例 文件 信息 服务器 结果 附件 服务 监控 不同 低级 冒号 功能 情况 所在 方式 模板 状态 脚本 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 涨乐互联网科技 互联网科技公司税收优惠 关于新基建和互联网科技 奇酷互联网科技 壕鑫互联网络科技 广州紫鲸互联网科技 互联网 科技服务平台 安控科技rtu产品工业互联网 互联网科技与管理 知域互联网科技有限公司大骗子 阿大互联网科技有限公司 中国互联网公司排名锤子科技 烟台灵鸽互联网科技有限公司 卡尔迅互联网科技有限公司 上海同邻互联网科技有限公司规模 张家口科技产业互联网平台 北京天晋互联网科技有限公司 唐山双旺合互联网科技产业园 盐城市攀科互联网科技有限公司 武汉亿视互联网科技有限公司 咖啡 互联网电商科技 人人互联网科技是培训 互联网科技公司的市场部门 坤平互联网科技 米聚互联网科技南京有限公司排面 黑科技 体验场景 互联网大会 艺电能源互联网科技有限公司招聘 银川新华互联网科技学校原画 互联网科技大会大佬
0