zabbix根据主机和端口列表自动发现监控远程MongoDB实例
发表于:2025-11-17 作者:千家信息网编辑
千家信息网最后更新 2025年11月17日,在有些情况下,只能使用远程的MongoDB实例而不能登录到MongoDB实例所在的服务器上,这时可以在一台服务器上维护一个远程MongoDB实例的主机和端口列表,然后通过zabbix的低级发现功能去根
千家信息网最后更新 2025年11月17日zabbix根据主机和端口列表自动发现监控远程MongoDB实例
在有些情况下,只能使用远程的MongoDB实例而不能登录到MongoDB实例所在的服务器上,这时可以在一台服务器上维护一个远程MongoDB实例的主机和端口列表,然后通过zabbix的低级发现功能去根据主机和端口自动添加相应的监控。
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安全错误
数据库的锁怎样保障安全
杭州楚佳网络技术有限公司
永城软件开发
淘宝云服务器赚钱吗
通信网络安全防攻击
数据库中删除科目
宜昌网络安全保卫支队电话
oracle数据库属于哪种
刀片服务器的构成
淮北民宿软件开发
方舟千通服务器名称
我的世界怎样使服务器卡顿
国家网络安全中心
阿里云服务器防火墙端口映射
什么叫做网络安全设置正确
小型软件开发哪家强
凶宅数据库
固原网络安全保卫支队
基于数据库的数据分析处理
科技互联网公司招聘
服务器登陆日志
微信软件开发人叫什么
力控7 卡在 开始装载数据库
协游网络技术有限公司
计算机网络技术可以自己做吗
软件开发与密码学
河南指阅网络技术有限责任公司
失落世界服务器哪个职业好
web服务器上传
西湖论剑网络安全大会
油田网络安全稿件