返回

Nuxt.js 应用监控与自动重启

开发配置

在实际应用中,监控和维护 Nuxt.js 应用程序是至关重要的。本文介绍了如何使用 Bash 脚本和 Crontab 定时任务来监控 Nuxt.js 应用程序的心跳,并在应用程序挂掉时自动进行重启。

创建心跳检测脚本

首先,创建一个 Bash 脚本,用于定期检查 Nuxt.js 应用程序的心跳。在脚本中,我们使用 curl 命令检查心跳函数,并记录检查结果到日志文件中。

#!/bin/bash

# 设置必要的环境变量
export PATH=/root/.nvm/versions/node/v16.20.2/bin:$PATH

# 进入到 Nuxt.js 项目目录
cd /your/nuxt/project/directory

# 调用 curl 命令检查心跳函数
response=$(curl -s -o /dev/null -w "%{http_code}" "http://localhost:3000/heartbeat")

# 设置日志文件路径
LOG_FILE="/your/log/file/path/heartbeat.log"

# 获取当前时间戳
CURRENT_TIME=$(date "+%Y-%m-%d %H:%M:%S")

# 记录执行日志到文件
echo "[$CURRENT_TIME] - Heartbeat Check: $response" >> "$LOG_FILE"

# 如果心跳函数返回非200状态码,重启应用程序
if [ "$response" -ne 200 ]; then
  echo "[$CURRENT_TIME] - Application is not responding. Restarting..." >> "$LOG_FILE"
  
  # 使用 pm2 重启应用程序,确保你已经安装了 pm2
  /root/.nvm/versions/node/v16.20.2/bin/pm2 del your_app_name
  sleep 0.2
  /root/.nvm/versions/node/v16.20.2/bin/pm2 start /your/nuxt/project/directory/ecosystem.config.js

  echo "[$CURRENT_TIME] - Application restarted." >> "$LOG_FILE"

else
  echo "[$CURRENT_TIME] - Heartbeat OK" >> "$LOG_FILE"
fi

确保将 /your/nuxt/project/directory/your/log/file/path/heartbeat.log 替换为你的 Nuxt.js 项目目录和日志文件路径。

定时任务设置

接下来,我们将该脚本添加到 Crontab 中,以定期执行心跳检测。编辑 Crontab:

crontab -e

添加以下定时任务:

* * * * * /path/to/your/script.sh

确保将 /path/to/your/script.sh 替换为上述脚本的实际路径。

总结

通过上述步骤,我们实现了一个简单而有效的监控和自动重启机制,以确保 Nuxt.js 应用程序的稳定运行。通过定期检查心跳和记录日志,我们可以在应用程序挂掉时迅速采取行动。这个脚本可以根据实际需求进行扩展和修改,以满足更复杂的监控场景。