首页 > 数据库 >mongodb配置zabbix监控

mongodb配置zabbix监控

时间:2024-12-25 15:09:09浏览次数:3  
标签:log mongodb zabbix sh curdir 监控 bash

mongodb配置zabbix监控

目录

说明

zabbix 自带监控常用数据库的末模版,可以直接使用mongodb的监控模版,按照官方指导配置宏即可连接mongoDB的数据库,并监控相关数据。

一、添加mongodb模版

二、配置宏

配置宏
{$MONGODB.CONNSTRING}  tcp://192.168.xx.xx:34970
{$MONGODB.USER} admin
{$MONGODB.PASSWORD} xxxxxxx

三测试连接:

Test availability: 
zabbix_get -s mongos.node -k 'mongodb.ping["{$MONGODB.CONNSTRING}","{$MONGODB.USER}","{$MONGODB.PASSWORD}"]"
zabbix_get -s mongos.node -k 'mongodb.ping["tcp://192.168.xx.xx:27017","root","xxxx"]"'
zabbix_get -s mongodb.node -k 'mongodb.ping["tcp://192.168.xx.xx:27017","root","xxxxx"]"'

注意事项

mongoDB 5.0之后的版本不兼容,需要单独安装以下驱动
zabbix-agent2-plugin-mongodb-6.4.14-release1.el7.x86_64.rpm

通过脚本方式添加监控项

1.修改运行zabbix agent脚本的用户

vi /usr/lib/systemd/system/zabbix-agent2.service

systemctl daemon-reload
systemctl restart zabbix-agent2.service

 配置mongodb环境变量
vi /home/mongodb/.bash_profile
export PATH=/data/iuap/middleware/mongodb-34970/bin/:$PATH

2.添加如下用户自定义脚本

vim /etc/zabbix/zabbix_agent2.d/monitor_mongodb.conf

UserParameter=mongo.alter,sh /etc/zabbix/scripts/jkalert.sh
UserParameter=mongo.connect,sh /etc/zabbix/scripts/jkcur_connect.sh  |grep cur_connect
UserParameter=mongo.delay,sh /etc/zabbix/scripts/jkdelay.sh
UserParameter=mongo.alive,sh /etc/zabbix/scripts/jkmongo_alive.sh
UserParameter=mongo.oplog,sh /etc/zabbix/scripts/jkoplog.sh
UserParameter=mongo.replic,sh /etc/zabbix/scripts/jkreplic.sh
MongoBD alter INFO    监控基本告警,错误等
MongoBD connect INFO  监控连接数
MongoBD delay INFO    监控主从延迟
MongoBD alive INFO    监控mongodb是否down掉
MongoBD oplog INFO    监控oplog剩余大小
MongoBD replic INFO   监控复制状态

注意权限问题:

  1. 给mongo.log 文件a+r权限 chmod a+r momgd.log
  2. 将脚本的所有者改成zabbix
    3.测试zabbix用户执行:
    sudo -u zabbix sh jkalert.sh

3.添加如下用户自定义脚本

Zabbix中添加通用模版
mongo模版

Zabbix中添加监控项
mongo监控项

附脚本:

db_monitor.conf

#!/bin/sh
#source ~/.bash_profile
#source /home/mongodb/.bash_profile
export PATH=/data/iuap/middleware/mongodb-34970/bin/:$PATH
export PATH

pass='xxxxxxxxxx'
user=admin
ip='192.xx.xx.xx'
port=34970

mongocmd="mongo admin -u${user} --port=${port} -p${pass}"   ## Access control is enabled

logpath=/data/iuap/middleware/mongodb-34970/log
logfile=mongod.log
ANOTHER_NODE_IP=192.168.xx.xx,192.168.xx.xx

REP_DELAY=Y
DELAY_ALTER=1000

CUR_CONNECT_ALERT=500

jkalert.sh

#/bin/bash
#ERROR_LOG(ALERT=[ERROR])
ALERT_LOG_ALERT="ERROR|Asser|fail|Error|error"
#source ~/.bash_profile 
#source /home/mongodb/.bash_profile
curdir=`dirname $0`
. ${curdir}/db_monitor.conf
cd ${curdir}

cat ${logpath}/${logfile} |grep -E $ALERT_LOG_ALERT|grep -v 'SSL' |grep -v lastErrorObject|grep -v getLastErrorDefaults|grep -v SocketException|grep -v LogicalSessionCacheRefresh > ${curdir}/alert.log 
#cat ${curdir}/alert.log |grep ERROR > ${curdir}/temp.log
#cat ${curdir}/alert.log |grep -E $ALERT_LOG_ALERT > ${curdir}/temp.log

if  [  -s ${curdir}/alert.log ]
     then
	errinf=`diff -a ${curdir}/alert.log ${curdir}/temp.log |grep ^[\<]|sed s/\<//g`
#     else
#	exit 
fi
echo $errinf
#exit
cat ${curdir}/alert.log > ${curdir}/temp.log

jkcur_connect.sh

#/bin/bash
#source ~/.bash_profile
#source /home/mongodb/.bash_profile

curdir=`dirname $0`
. ${curdir}/db_monitor.conf
cd ${curdir}

echo |${mongocmd}
echo "print('cur_connections#',db.serverStatus().connections.current)"|${mongocmd}  > ${curdir}/cur_connections.log

CUR_CONNECT=`cat ${curdir}/cur_connections.log|grep cur_connections|awk '{print $2}'`
echo `date` >> $curdir/tmpfile/connect_number.log
echo $CUR_CONNECT >> $curdir/tmpfile/connect_number.log
#exit

echo $CUR_CONNECT
if [ `awk -v a=${CUR_CONNECT} -v b=${CUR_CONNECT_ALERT} 'BEGIN{print(a>b)?a:b}'` = ${CUR_CONNECT} ];then
alert_info="cur_connect:${CUR_CONNECT}"
echo $alert_info 
fi

jkdelay.sh

#source ~/.bash_profile
#source /home/mongodb/.bash_profile

curdir=`dirname $0`
. ${curdir}/db_monitor.conf
cd ${curdir}

echo "rs.printSlaveReplicationInfo()"|${mongocmd} |grep 'behind the primary'> ${curdir}/cur_delay.log
while read hang
do
cur_delay=`echo ${hang} |awk '{print $1}'`
echo `date` >> $curdir/tmpfile/cur_delay.log
echo $cur_delay >> $curdir/tmpfile/cur_delay.log

if [[ `awk -v a=${cur_delay} -v b=${DELAY_ALTER} 'BEGIN{print(a>b)?a:b}'` = ${cur_delay} ]];then
alert_info="Current delay is:${cur_delay} second"
echo $alert_info 
fi
done<${curdir}/cur_delay.log

jkmongo_alive.sh

#source ~/.bash_profile 
#source /home/mongodb/.bash_profile

curdir=`dirname $0`
. ${curdir}/db_monitor.conf
cd ${curdir}

alert_info=`echo "rs.status()" |${mongocmd}`
if [ $? -eq 1 ] ;then
        alert_info='The mongoDB instance is down!'
fi

jkoplog.sh

#/bin/bash
#SLAVE_STATUS(ALERT=Yes)
#source ~/.bash_profile 
#source /home/mongodb/.bash_profile

curdir=`dirname $0`
. ${curdir}/db_monitor.conf
cd ${curdir}




oplog_length=`echo "rs.printReplicationInfo()" |${mongocmd}  |grep  "log length" |awk -F: '{print $2}'|awk -Fs '{print $1}'`
if [ $oplog_length -le 7200 ];
   then
        alert_info="The oplog length is ${oplog_length}S"
echo ${alert_info}
fi

jkreplic.sh


#/bin/bash
#SLAVE_STATUS(ALERT=Yes)
#source ~/.bash_profile 
#source /home/mongodb/.bash_profile

curdir=`dirname $0`
. ${curdir}/db_monitor.conf
cd ${curdir}

alert_info=`echo "rs.status()" |${mongocmd}  |grep  health |grep -v '"health" : 1'`
if [ -n  "$alert_info" ];
   then
        alert_info='the repset has a node is not health,Please Check'
echo $alert_info
fi

标签:log,mongodb,zabbix,sh,curdir,监控,bash
From: https://www.cnblogs.com/xulinforDB/p/18630371

相关文章

  • 视频分析设备平台EasyCVR关于未来监控系统可能会集成哪些新技术?
    随着科技的飞速发展,监控系统正经历着一场革命性的变革。未来的监控系统将不再是单一的观察和记录工具,而是集成了多种前沿技术的智能平台,它们将极大地提高安全性、效率和响应速度。以下是未来监控系统可能集成的一些关键技术。1、人工智能技术1)监控系统将越来越多地应用智能分析......
  • 在极端低温环境下,4G太阳能监控的光伏电池板效率会如何变化?
    在当今社会,可再生能源的开发与利用已成为全球关注的焦点。其中,太阳能作为一种清洁、无污染的能源形式,其开发利用备受瞩目。光伏电池板作为太阳能发电的核心部件,其性能与效率直接关系到太阳能发电系统的整体表现。光伏电池板通过光电效应将太阳光转化为电能,这一过程依赖于光伏电池......
  • EHOME视频平台EasyCVR全面视频监控与预警:变电站智能化技术的应用成果
    在当今这个数字化、智能化飞速发展的时代,电力系统的安全与稳定运行对于社会经济的发展至关重要。变电站作为电力系统的核心节点,其安全监控和管理水平直接影响着整个电网的可靠性。为了应对这一挑战,我们提出了一套集成了高清视频监控和人工智能技术的变电站视频+AI解决方案。以下是......
  • 光伏监控/4G无线太阳能视频监控在农田种植领域有哪些应用?
    随着智慧农业的发展,太阳能发电监控系统在农田种植监控领域的应用越来越广泛。这种系统不仅提供了一种环保且经济的电力解决方案,还通过智能化管理提高了农业生产效率和作物产量。那么太阳能监控系统在农田种植领域都有哪些应用呢?1、农田灌溉监控太阳能供电系统与农田灌溉监控相......
  • 4G太阳能供电无线视频监控方案的运作机制是什么?
    太阳能供电无线视频监控方案是一种集成了太阳能发电技术和无线通信技术的先进监控解决方案。它通过将太阳能转换为电能,以供监控设备使用,并通过无线网络实现远程视频数据的实时传输。这种方案特别适用于无电无网的偏远地区,能够实现远程不间断监控。那么太阳能无线视频监控方案的......
  • Prometheus+Grafana+zabbix搭建的监控平台
    Prometheus+Grafana+zabbix搭建的监控平台目录Prometheus+Grafana+zabbix搭建的监控平台1.介绍1.2Grafana是什么?2.Prometheus+Grafana安装2.1组件2.2安装包下载2.4Prometheus安装Docker部署PrometheusPrometheus相关介绍Docker部署Prometheus说明搜索镜像拉取镜像配置配置......
  • dataezse接入zabbix监控
    常用查询目录常用查询zabbix常用库表说明主机资源监控主机资源监控(纯值)oracle状态监控CPUtop10DISKTOP10MemoryTOP10SPACEUSERDTOP10问题告警级别分布问题列表null问题主机组正常主机总数主机问题排行zabbix常用库表说明https://www.cnblogs.com/yaoyaojcy/p/1036794......
  • IDEA中项目增加断点,在调试过程中,断点暂停, VisualVM 中监控的线程会增加内存占用
    IDEA中项目增加断点,VisualVM中监控的线程会增加内存占用在IntelliJIDEA中为项目增加断点并进行调试时,VisualVM监控到的线程内存占用增加可能是由以下几个因素引起的:调试器附加:当你启动调试会话时,IDEA的调试器会附加到你的应用程序进程上。这可能会增加一些额外的内存......
  • 如何实现一个前端监控系统?
    要实现一个前端监控系统,可以从以下几个关键步骤着手:确定监控指标:页面加载时间:包括首屏加载时间、DOM渲染时长等,这些可以通过浏览器的performanceAPI来获取。资源加载情况:监控图片、CSS、JS等资源的加载情况,确保它们都能正确且迅速地加载。错误信息:包括JS运行错误、资源加......
  • 根据监控点或者视频的分辨率自适应调整播放画面的宽高比
    3.根据监控点或者视频的分辨率自适应调整播放画面的宽高比视频的分辨率宽高比和播放窗口的宽高比例不一定相同,播放时如果填充整个播放窗口,会出现播放画面横向或纵向拉伸以填充整个窗口,这样会导致播放画面变形或者不协调,影响观看效果;为了保持视频的按照原来的宽高比,可以根据视频的......