zabbix根据主机和端口列表自动发现监控远程MongoDB实例
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,在有些情况下,只能使用远程的MongoDB实例而不能登录到MongoDB实例所在的服务器上,这时可以在一台服务器上维护一个远程MongoDB实例的主机和端口列表,然后通过zabbix的低级发现功能去根
千家信息网最后更新 2025年02月03日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数据库
该怎么打开数据库的共享文件
最强蜗牛最新服务器
国家电网的网络安全
学了软件开发好难
网络安全主题手抄报水彩画
上海德勤 软件开发
网络安全事件数据统计
生命安全与网络安全ppt
汉阳软件开发多少钱
数据库系统如何配置
软件开发周计划和周总结报告
软件开发管理工程师职责
网络安全股为什么都亏损
liux从服务器复制文件命令
冬残奥会网络安全事项
文言文阅读软件开发
wex的数据库
如何租用ms计算服务器