加入收藏 | 设为首页 | 会员中心 | 我要投稿 驾考网 (https://www.jiakaowang.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 系统 > 正文

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

发布时间:2023-10-10 15:15:17 所属栏目:系统 来源:
导读:在有些情况下,只能使用远程的MongoDB实例而不能登录到MongoDB实例所在的服务器上,这时可以在一台服务器上维护一个远程MongoDB实例的主机和端口列表,然后通过zabbix的低级发现功能去根据主机和端口自动添加相应的监
在有些情况下,只能使用远程的MongoDB实例而不能登录到MongoDB实例所在的服务器上,这时可以在一台服务器上维护一个远程MongoDB实例的主机和端口列表,然后通过zabbix的低级发现功能去根据主机和端口自动添加相应的监控。
 
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
 
 

(编辑:驾考网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章