zabbix3.2 监控MongoDB

本文参考连接:

https://www.jianshu.com/p/a6b36d5b74ba

一、实验环境:

MongoDB/zabbix-agent:172.16.88.44

zabbix-server:172.16.88.42

zabbix-server版本号:3.2.11

zabbix 安装不在赘述,确保监控正常

 

 

mongodb服务器端

二、安装依赖包

wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm rpm -ivh epel-release-latest-7.noarch.rpm

# yum install jq 需要epel源,有外网的直接执行安装

如果是生产环境是内网可以这么解决,在本地找一台能连外网的测试服务器:

# yum install yum-utils -y

# yumdownloader jq --resolve --destdir=/tmp/pages/ --把jq的rpm包下载到本地再上传到正式环境

用rpm 进行安装

epel源手动浏览器访问:

centos7:http://mirror.pnl.gov/epel/7/x86_64/Packages/j/jq-1.5-1.el7.x86_64.rpm

centos6:http://mirror.pnl.gov/epel/6/x86_64/Packages/j/jq-1.3-2.el6.x86_64.rpm

 

三、创建监控MongoDB脚本

# cd /etc/zabbix/zabbix_agentd.d/

说明:/etc/zabbix/zabbix_agentd.d/ 路径为zabbix-agent子配置文件的路径

# vi /etc/zabbix/zabbix_agentd.d/mongodb.sh

#!/bin/bash
##################################################
# chentufeng
# 2019 12 05
##################################################
DB_HOST=127.0.0.1
DB_PORT=27017
DB_USERNAME=admin
DB_PASSWORD=123Abc
#下面是mongo命令的路径,我是解压安装的,所以which找不到路径,只能直接给它赋值绝对路径
#MONGO=`which mongo`
MONGO="/usr/local/mongodb/bin/mongo"  
JQ=`which jq`
EXIT_ERROR=1
EXIT_OK=0

if [ ! -x "$MONGO" ] ; then
  echo "mongo not found"
  exit $EXIT_ERROR
elif [ ! -x "$JQ" ] ; then
  echo "jq not found"
  exit $EXIT_ERROR
elif [ $# -eq 0 ] ; then
  echo "No values pass"
  exit $EXIT_ERROR
fi
index=.$(echo $@ | sed 's/[ ,]/./g')
MONGO_CMD="$MONGO --host ${DB_HOST:-localhost} --port ${DB_PORT:-27017} --authenticationDatabase admin --quiet"
[[ "$DB_USERNAME" ]] && MONGO_CMD="${MONGO_CMD} --username ${DB_USERNAME}"
[[ "$DB_PASSWORD" ]] && MONGO_CMD="${MONGO_CMD} --password ${DB_PASSWORD}"

output=$(
        $MONGO_CMD <<< "db.runCommand( { serverStatus: 1} )" |\
        sed -e 's/NumberLong(\(.*\))/\1/ 
          s/ISODate(\(.*\))/\1/
          s/ObjectId(\(.*\))/\1/
          s/Timestamp(.*)/"&"/
          s/\(BinData(.*\)"\(.*\)")/"\1\2)"/
          s/"\([0-9]*\)"/\1/' 
         
)
mongo_status=${PIPESTATUS[0]}
if [ $mongo_status -ne $EXIT_OK ] ; then
  echo "mongo exec error"
  exit $EXIT_ERROR
fi
value=$(echo $output | jq $index)
jq_status=$?
echo $value

# vi /etc/zabbix/zabbix_agentd.d/userparameter_mongodb.conf

############################################################
# /etc/zabbix/zabbix_agentd.d/mongodb.sh 脚本路径,自定义
############################################################
UserParameter=mongodb.status[*],/etc/zabbix/zabbix_agentd.d/mongodb.sh $1 $2 $3 $4 $5

四、赋权配置:

chmod 755 /etc/zabbix/zabbix_agentd.d/mongodb.sh

chown zabbix:zabbix /etc/zabbix/zabbix_agentd.d/mongodb.sh

chmod 755 /etc/zabbix/zabbix_agentd.d/userparameter_mongodb.conf

chown zabbix:zabbix /etc/zabbix/zabbix_agentd.d/userparameter_mongodb.conf

 

五、重启zabbix-agent

service zabbix-agent restart

 

 

六、测试是否能查看MongoDB信息:

有账号密码命令:

echo "db.serverStatus()" |mongo 172.16.88.44:27017/admin -uadmin -p123Abc

-u admin账号

-p 密码

没账号密码:

echo "db.serverStatus()" |mongo

正常查看的会输出一大串东西

否则会输出这句话:exception: login failed

 

七、配置监控

172.16.88.42 zabbix server端:

导入zabbix MongoDB监控模板:

打开zabbix ----- 配置 ------ 模板 ------ 导入 -------浏览 -------选择文件确定-------导入

模板下载地址:

https://download.csdn.net/download/MYF12/12014535

 

添加主机到MongoDB模板里面即可

触发器可以根据实际情况添加。

监控数据说明:

https://blog.csdn.net/qq_20545159/article/details/48738379

 

 

 

 

posted @ 2019-12-05 17:30  木与风  阅读(112)  评论(0编辑  收藏  举报