Linux下mongodb服务监视脚本怎么写

来源:站长联盟作者:相泽南头衔:网络博主
导读:本期聚焦于小伙伴创作的《Linux下mongodb服务监视脚本怎么写》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Linux下mongodb服务监视脚本怎么写》有用,将其分享出去将是对创作者最好的鼓励。

在Linux系统中部署mongodb服务后,为了保证服务持续可用,我们可以编写一个shell监视脚本来定期检查mongodb的运行状态,当服务出现异常时自动执行重启操作并发送告警通知。

Linux下mongodb服务监视脚本怎么写

脚本核心功能设计

一个基础的mongodb监视脚本需要实现以下几个核心功能:

  • 检测mongodb服务进程是否存在
  • 检测mongodb服务端口是否正常监听
  • 服务异常时尝试自动重启
  • 记录监视日志和异常信息
  • 异常时发送通知给管理员

核心检测逻辑说明

进程检测

我们可以通过ps命令结合进程关键词来判断mongodb进程是否存活,注意这里的关键词要足够精准,避免匹配到其他无关进程。

端口检测

mongodb默认监听27017端口,我们可以使用netstat或者ss命令检测该端口是否处于监听状态,也可以尝试使用mongo命令连接服务验证可用性。

自动重启逻辑

当检测到服务异常时,先尝试正常停止残留进程,再重新启动mongodb服务,启动后再次检测状态确认是否启动成功。

完整脚本示例

以下是一个可直接使用的mongodb监视脚本,默认mongodb安装路径为/usr/local/mongodb,服务端口为27017,你可以根据实际环境修改对应参数。

#!/bin/bash

# mongodb安装路径
MONGO_HOME="/usr/local/mongodb"
# mongodb端口
MONGO_PORT=27017
# mongodb配置文件路径
MONGO_CONF="${MONGO_HOME}/conf/mongod.conf"
# 日志文件路径
LOG_FILE="/var/log/mongodb_monitor.log"
# 管理员邮箱,用于接收告警
ADMIN_EMAIL="admin@ipipp.com"
# 当前时间
CURRENT_TIME=$(date "+%Y-%m-%d %H:%M:%S")

# 记录日志函数
log() {
    echo "${CURRENT_TIME} - $1" >> ${LOG_FILE}
}

# 发送告警邮件函数
send_alert() {
    echo "mongodb服务异常,请及时处理。异常信息:$1" | mail -s "mongodb服务告警" ${ADMIN_EMAIL}
}

# 检测mongodb进程是否存在
check_process() {
    process_count=$(ps -ef | grep "mongod" | grep -v "grep" | wc -l)
    if [ ${process_count} -gt 0 ]; then
        return 0
    else
        return 1
    fi
}

# 检测mongodb端口是否监听
check_port() {
    port_listen=$(ss -tuln | grep ":${MONGO_PORT}" | wc -l)
    if [ ${port_listen} -gt 0 ]; then
        return 0
    else
        return 1
    fi
}

# 重启mongodb服务
restart_mongo() {
    log "开始尝试重启mongodb服务"
    # 先尝试停止残留进程
    ${MONGO_HOME}/bin/mongod --shutdown --dbpath ${MONGO_HOME}/data
    sleep 2
    # 启动服务
    ${MONGO_HOME}/bin/mongod -f ${MONGO_CONF}
    sleep 3
    # 检查重启后状态
    if check_process && check_port; then
        log "mongodb服务重启成功"
        return 0
    else
        log "mongodb服务重启失败"
        return 1
    fi
}

# 主逻辑
log "开始执行mongodb监视任务"
# 先检测进程
if ! check_process; then
    log "检测到mongodb进程不存在"
    if restart_mongo; then
        send_alert "mongodb进程不存在,已自动重启成功"
    else
        send_alert "mongodb进程不存在,自动重启失败,请手动处理"
    fi
    exit 0
fi

# 进程存在再检测端口
if ! check_port; then
    log "检测到mongodb端口${MONGO_PORT}未监听"
    if restart_mongo; then
        send_alert "mongodb端口未监听,已自动重启成功"
    else
        send_alert "mongodb端口未监听,自动重启失败,请手动处理"
    fi
    exit 0
fi

log "mongodb服务运行正常"

脚本配置与定时执行

编写完脚本后,需要给脚本添加可执行权限:

chmod +x /usr/local/bin/mongodb_monitor.sh

然后我们可以通过crontab配置定时任务,让脚本每5分钟执行一次,编辑crontab配置:

crontab -e

添加以下内容:

*/5 * * * * /usr/local/bin/mongodb_monitor.sh

保存后即可生效,系统会每5分钟自动执行一次监视脚本,保障mongodb服务的稳定运行。

注意事项

  • 脚本中的mongodb路径、端口、配置文件路径需要根据实际部署情况修改
  • 如果服务器没有安装mail命令,需要先安装mailx工具才能发送告警邮件
  • 确保执行脚本的用户有mongodb服务的启停权限
  • 定期清理监视日志,避免日志文件占用过多磁盘空间

mongodbLinux监视脚本shell修改时间:2026-07-12 14:48:22

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。