提交 ebcc1dab authored 作者: PGY's avatar PGY

docs(scripts): 更新预定系统定时脚本配置文档至V1.2版本

- 升级版本号从V1.1到V1.2,调整监控脚本执行频率从每5分钟到每10分钟
- 新增PID文件管理和日志轮转机制,设置日志保留30天
- 为所有监控脚本添加PID锁文件支持,防止重复执行
- 更新脚本版本号并修正日志文件路径配置
- 扩展故障排查章节,增加PID文件异常处理和状态检查方法
- 优化日志管理配置,提供内置轮转和系统logrotate双重方案
上级 59635acc
# 预定系统定时任务配置说明(x86 架构) # 预定系统定时任务配置说明(x86 架构)
> 版本:V1.1 > 版本:V1.2
> 更新日期:2026-03-30 > 更新日期:2026-03-30
> 适用范围:预定系统 x86 架构全套定时监控与维护脚本 > 适用范围:预定系统 x86 架构全套定时监控与维护脚本
> 部署路径:`/opt/scripts/` > 部署路径:`/opt/scripts/`
> 日志路径:`/var/log/scripts/` > 日志路径:`/var/log/scripts/`
> 状态文件路径:`/var/log/scripts/*.state` 或 `/var/log/scripts/*_state/` > 状态文件路径:`/var/log/scripts/*.state` 或 `/var/log/scripts/*_state/`
> PID文件路径:`/var/log/scripts/*.pid`
--- ---
## 📁 脚本文件清单 ## 📁 脚本文件清单
### 一、服务监控类脚本(每 5 分钟执行) ### 一、服务监控类脚本(每 10 分钟执行)
| 序号 | 脚本名称 | 版本 | 监控对象 | 日志文件 | 状态文件 | 功能描述 | | 序号 | 脚本名称 | 版本 | 监控对象 | 日志文件 | 状态文件 | PID文件 | 功能描述 |
|-----|---------|------|---------|---------|---------|---------| |-----|---------|------|---------|---------|---------|---------|---------|
| 1 | `monitor_emqx_service.sh` | V2.1 | EMQX 消息队列 | `/var/log/scripts/monitor_emqx_service.log` | `/var/log/scripts/.emqx_monitor_state` | 容器状态 + 进程检查 + 服务验证 + 连续失败阈值 + 重启冷却 | | 1 | `monitor_emqx_service.sh` | V2.2 | EMQX 消息队列 | `/var/log/scripts/monitor_emqx_service.log` | `/var/log/scripts/.emqx_monitor_state` | `/var/log/scripts/.emqx_monitor.pid` | 容器状态 + 进程检查 + 服务验证 + 连续失败阈值 + 重启冷却 + 日志轮转 + PID锁 |
| 2 | `monitor_mysql_service.sh` | V1.1 | MySQL数据库 | `/var/log/scripts/monitor_mysql_service.log` | `/var/log/scripts/monitor_mysql_service.state` | 容器状态 + 连接测试 + SQL验证 + 连续失败阈值 | | 2 | `monitor_mysql_service.sh` | V1.2 | MySQL数据库 | `/var/log/scripts/monitor_mysql_service.log` | `/var/log/scripts/monitor_mysql_service.state` | `/var/log/scripts/.mysql_monitor.pid` | 容器状态 + 连接测试 + SQL验证 + 连续失败阈值 + 日志轮转 + PID锁 |
| 3 | `monitor_redis_service.sh` | V1.1 | Redis缓存 | `/var/log/scripts/monitor_redis_service.log` | `/var/log/scripts/monitor_redis_service.state` | 容器状态 + 认证识别 + PING验证 + 连续失败阈值 | | 3 | `monitor_redis_service.sh` | V1.2 | Redis缓存 | `/var/log/scripts/monitor_redis_service.log` | `/var/log/scripts/monitor_redis_service.state` | `/var/log/scripts/.redis_monitor.pid` | 容器状态 + 认证识别 + PING验证 + 连续失败阈值 + 日志轮转 + PID锁 |
| 4 | `monitor_external_api_services_v2.sh` | V1.1 | 外部API服务 | `/var/log/scripts/monitor_external_api_services_v2.log` | `/var/log/scripts/external_api_state/` | 进程监控 + 目录验证 + 自动启动 + 连续失败阈值 | | 4 | `monitor_external_api_services_v2.sh` | V1.2 | 外部API服务 | `/var/log/scripts/monitor_external_api_services.log` | `/var/log/scripts/external_api_state/` | `/var/log/scripts/.external_api_monitor.pid` | 进程监控 + 目录验证 + 自动启动 + 连续失败阈值 + 日志轮转 + PID锁 |
| 5 | `monitor_inner_api_services.sh` | V1.1 | 内部API服务 | `/var/log/scripts/monitor_inner_api_services.log` | `/var/log/scripts/inner_api_state/` | API检查 + 容器服务 + 端口监控 + 连续失败阈值 | | 5 | `monitor_inner_api_services.sh` | V1.2 | 内部API服务 | `/var/log/scripts/monitor-inner-api-services.log` | `/var/log/scripts/inner_api_state/` | `/var/log/scripts/.inner_api_monitor.pid` | API检查 + 容器服务 + 端口监控 + 连续失败阈值 + 日志轮转 + PID锁 |
### 二、数据备份类脚本(每日执行) ### 二、数据备份类脚本(每日执行)
| 序号 | 脚本名称 | 备份对象 | 日志文件 | 执行时间 | 保留周期 | | 序号 | 脚本名称 | 版本 | 备份对象 | 日志文件 | 执行时间 | 保留周期 | 功能说明 |
|-----|---------|---------|---------|---------|---------| |-----|---------|------|---------|---------|---------|---------|---------|
| 1 | `backup_mysql_databases.sh` | MySQL数据库 | `/var/log/scripts/backup_mysql_databases.log` | 每日 01:00 | 30 天 | | 1 | `backup_mysql_databases.sh` | V1.1 | MySQL数据库 | `/var/log/scripts/backup_mysql_databases.log` | 每日 01:00 | 30 天 | 数据库备份 + 日志轮转 |
| 2 | `backup_mysql_logs.sh` | MySQL日志 | `/var/log/scripts/backup_mysql_logs.log` | 每日 02:00 | 30 天 | | 2 | `backup_mysql_logs.sh` | V1.1 | MySQL日志 | `/var/log/scripts/backup_mysql_logs.log` | 每日 02:00 | 30 天 | 日志备份 + 日志轮转 |
| 3 | `backup_nginx_logs.sh` | Nginx日志 | `/var/log/scripts/backup_nginx_logs.log` | 每日 03:00 | 30 天 | | 3 | `backup_nginx_logs.sh` | V1.1 | Nginx日志 | `/var/log/scripts/backup_nginx_logs.log` | 每日 03:00 | 30 天 | 日志备份 + 清空原日志 + 日志轮转 |
### 三、系统维护类脚本(每日执行) ### 三、系统维护类脚本(每日/手动执行)
| 序号 | 脚本名称 | 维护对象 | 日志文件 | 执行时间 | 功能描述 | | 序号 | 脚本名称 | 版本 | 维护对象 | 日志文件 | 执行时间 | 功能描述 |
|-----|---------|---------|---------|---------|---------| |-----|---------|------|---------|---------|---------|---------|
| 1 | `check_deleted_file_ubains.sh` | 已删除的文件 | `/var/log/scripts/check_deleted_file_ubains.log` | 手动触发 | 检测已删除文件 | | 1 | `check_deleted_file_ubains.sh` | V1.1 | 已删除的文件 | 无(终端输出) | 手动触发 | 检测已删除文件 |
| 2 | `auto_clean_deleted_ubains_v3.sh` | 已删除大文件 | `/var/log/scripts/auto_clean_deleted_ubains.log` | 每日 04:00 | 清理>1GB 的 deleted 文件 | | 2 | `auto_clean_deleted_ubains_v3.sh` | V3.0 | 已删除大文件 | `/var/log/scripts/auto_clean_deleted_ubains.log` | 每日 04:00 | 清理>1GB 的 deleted 文件 + 日志轮转 |
--- ---
...@@ -56,11 +57,12 @@ EMQX_CONTAINER="uemqx" ...@@ -56,11 +57,12 @@ EMQX_CONTAINER="uemqx"
# 日志配置 # 日志配置
LOG_DIR="/var/log/scripts/" # 统一日志目录 LOG_DIR="/var/log/scripts/" # 统一日志目录
LOG_FORMAT="[YYYY-MM-DD HH:MM:SS] - 日志内容" LOG_FORMAT="[YYYY-MM-DD HH:MM:SS] - 日志内容"
MAX_LOG_SIZE="5MB" # 日志轮转阈值 MAX_LOG_SIZE=$((5*1024*1024)) # 5MB 日志轮转阈值
LOG_RETENTION_DAYS=7 # 日志保留天数 LOG_RETENTION_DAYS=30 # 日志保留天数(监控脚本30天,清理脚本7天)
# 监控配置(新增) # 监控配置
STATE_DIR="/var/log/scripts" # 状态文件目录 STATE_DIR="/var/log/scripts" # 状态文件目录
PID_DIR="/var/log/scripts" # PID锁文件目录
MAX_FAILURES=3 # 最大连续失败次数阈值 MAX_FAILURES=3 # 最大连续失败次数阈值
``` ```
...@@ -83,10 +85,13 @@ STATE_DIR="_state/" # 多服务状态目录后缀 ...@@ -83,10 +85,13 @@ STATE_DIR="_state/" # 多服务状态目录后缀
#### 2.2 EMQX服务监控 #### 2.2 EMQX服务监控
```bash ```bash
TARGET_KEY="ubains-INFO-AND-ERROR" # 日志关键字 TARGET_KEY="ubains-INFO-AND-ERROR" # 日志关键字
CHECK_INTERVAL="*/5 * * * *" # 每 5 分钟(更新) CHECK_INTERVAL="*/10 * * * *" # 每 10 分钟
HEALTH_CHECK="emqx_ctl status" # 健康检查命令 HEALTH_CHECK="emqx_ctl status" # 健康检查命令
STATE_FILE=".emqx_monitor_state" # 状态文件 STATE_FILE=".emqx_monitor_state" # 状态文件
PID_FILE=".emqx_monitor.pid" # PID锁文件(新增)
COOLDOWN_PERIOD=1800 # 重启冷却时间(30分钟) COOLDOWN_PERIOD=1800 # 重启冷却时间(30分钟)
MAX_LOG_SIZE=$((5*1024*1024)) # 日志轮转阈值(新增)
LOG_RETENTION_DAYS=30 # 日志保留天数(新增)
``` ```
#### 2.3 MySQL服务监控 #### 2.3 MySQL服务监控
...@@ -94,7 +99,10 @@ COOLDOWN_PERIOD=1800 # 重启冷却时间(30分钟) ...@@ -94,7 +99,10 @@ COOLDOWN_PERIOD=1800 # 重启冷却时间(30分钟)
DB_USER="root" # 数据库用户 DB_USER="root" # 数据库用户
CHECK_METHOD="mysqladmin ping" # 连接检查 CHECK_METHOD="mysqladmin ping" # 连接检查
SQL_TEST="SELECT 1" # SQL 测试语句 SQL_TEST="SELECT 1" # SQL 测试语句
STATE_FILE="monitor_mysql_service.state" # 状态文件(新增) STATE_FILE="monitor_mysql_service.state" # 状态文件
PID_FILE=".mysql_monitor.pid" # PID锁文件(新增)
MAX_LOG_SIZE=$((5*1024*1024)) # 日志轮转阈值(新增)
LOG_RETENTION_DAYS=30 # 日志保留天数(新增)
``` ```
#### 2.4 Redis服务监控 #### 2.4 Redis服务监控
...@@ -102,14 +110,20 @@ STATE_FILE="monitor_mysql_service.state" # 状态文件(新增) ...@@ -102,14 +110,20 @@ STATE_FILE="monitor_mysql_service.state" # 状态文件(新增)
AUTH_ENABLED=true # 是否启用认证 AUTH_ENABLED=true # 是否启用认证
CHECK_METHOD="redis-cli ping" # PING 检查 CHECK_METHOD="redis-cli ping" # PING 检查
EXPECTED_RESPONSE="PONG" # 期望响应 EXPECTED_RESPONSE="PONG" # 期望响应
STATE_FILE="monitor_redis_service.state" # 状态文件(新增) STATE_FILE="monitor_redis_service.state" # 状态文件
PID_FILE=".redis_monitor.pid" # PID锁文件(新增)
MAX_LOG_SIZE=$((5*1024*1024)) # 日志轮转阈值(新增)
LOG_RETENTION_DAYS=30 # 日志保留天数(新增)
REDIS_PASSWORD="dNrprU&2S" # Redis访问密码 REDIS_PASSWORD="dNrprU&2S" # Redis访问密码
``` ```
#### 2.5 外部API服务监控 #### 2.5 外部API服务监控
```bash ```bash
API_URL="https://127.0.0.1/exapi/system/v2/login" # API检查地址 API_URL="https://127.0.0.1/exapi/system/v2/login" # API检查地址
STATE_DIR="external_api_state" # 状态文件目录(新增) STATE_DIR="external_api_state" # 状态文件目录
PID_FILE=".external_api_monitor.pid" # PID锁文件(新增)
MAX_LOG_SIZE=$((5*1024*1024)) # 日志轮转阈值(新增)
LOG_RETENTION_DAYS=30 # 日志保留天数(新增)
SERVICES=( SERVICES=(
"ubains-meeting-api-1.0-SNAPSHOT.jar:/var/www/java/external-meeting-api:/var/www/java/external-meeting-api/run.sh" "ubains-meeting-api-1.0-SNAPSHOT.jar:/var/www/java/external-meeting-api:/var/www/java/external-meeting-api/run.sh"
"malan:/var/www/malan:/var/www/malan/run.sh" "malan:/var/www/malan:/var/www/malan/run.sh"
...@@ -119,7 +133,10 @@ SERVICES=( ...@@ -119,7 +133,10 @@ SERVICES=(
#### 2.6 内部API服务监控 #### 2.6 内部API服务监控
```bash ```bash
API_URL_TEMPLATE="https://{SERVER_IP}/api/system/getVerifyCode" # 平台API API_URL_TEMPLATE="https://{SERVER_IP}/api/system/getVerifyCode" # 平台API
STATE_DIR="inner_api_state" # 状态文件目录(新增) STATE_DIR="inner_api_state" # 状态文件目录
PID_FILE=".inner_api_monitor.pid" # PID锁文件(新增)
MAX_LOG_SIZE=$((5*1024*1024)) # 日志轮转阈值(新增)
LOG_RETENTION_DAYS=30 # 日志保留天数(新增)
MALAN_PORT="6060" # Malan服务端口 MALAN_PORT="6060" # Malan服务端口
SERVICES["meeting2.0"]="ubains-meeting-inner-api" # 容器内服务 SERVICES["meeting2.0"]="ubains-meeting-inner-api" # 容器内服务
``` ```
...@@ -130,6 +147,8 @@ SERVICES["meeting2.0"]="ubains-meeting-inner-api" # 容器内服务 ...@@ -130,6 +147,8 @@ SERVICES["meeting2.0"]="ubains-meeting-inner-api" # 容器内服务
```bash ```bash
HOST_BACKUP_DIR="/opt/mysql" # 宿主机备份目录 HOST_BACKUP_DIR="/opt/mysql" # 宿主机备份目录
RETENTION_DAYS=30 # 备份保留 30 天 RETENTION_DAYS=30 # 备份保留 30 天
MAX_LOG_SIZE=$((5*1024*1024)) # 日志轮转阈值(新增)
LOG_RETENTION_DAYS=30 # 日志保留天数(新增)
TARGET_DBS=( # 备份数据库列表 TARGET_DBS=( # 备份数据库列表
"devops" "devops_voice" "huazhao2" "devops" "devops_voice" "huazhao2"
"nacos_mysql" "offline" "ubains" "nacos_mysql" "offline" "ubains"
...@@ -141,16 +160,22 @@ COMPRESSION="gzip" # 压缩格式 ...@@ -141,16 +160,22 @@ COMPRESSION="gzip" # 压缩格式
#### 3.2 MySQL日志备份 #### 3.2 MySQL日志备份
```bash ```bash
LOG_PATH="/var/log/mysql" # MySQL日志路径 LOG_PATH="/opt/mysql/logs" # MySQL日志路径
BACKUP_DIR="$LOG_PATH/backup" # 备份目录
BACKUP_FORMAT="tar.gz" # 备份格式 BACKUP_FORMAT="tar.gz" # 备份格式
CLEAN_OLD_BACKUP=true # 清理旧备份 CLEAN_OLD_BACKUP=true # 清理旧备份
MAX_LOG_SIZE=$((5*1024*1024)) # 日志轮转阈值(新增)
LOG_RETENTION_DAYS=30 # 日志保留天数(新增)
``` ```
#### 3.3 Nginx日志备份 #### 3.3 Nginx日志备份
```bash ```bash
NGINX_LOG_PATH="/var/log/nginx" # Nginx日志路径 NGINX_LOG_PATH="/var/www/java/nginx-conf.d/nginx_log" # Nginx日志路径
BACKUP_DIR="$NGINX_LOG_PATH/backup" # 备份目录
ROTATE_METHOD="copytruncate" # 轮转方式 ROTATE_METHOD="copytruncate" # 轮转方式
COMPRESS_AFTER_ROTATE=true # 轮转后压缩 COMPRESS_AFTER_ROTATE=true # 轮转后压缩
MAX_LOG_SIZE=$((5*1024*1024)) # 日志轮转阈值(新增)
LOG_RETENTION_DAYS=30 # 日志保留天数(新增)
``` ```
### 4. 清理配置 ### 4. 清理配置
...@@ -175,12 +200,12 @@ crontab -e ...@@ -175,12 +200,12 @@ crontab -e
# 预定系统定时任务配置 # 预定系统定时任务配置
# ============================================ # ============================================
# ========== 服务监控类(每 5 分钟,错峰执行) ========== # ========== 服务监控类(每 10 分钟,错峰执行) ==========
*/5 * * * * /opt/scripts/monitor_emqx_service.sh */10 * * * * /opt/scripts/monitor_emqx_service.sh
*/5 * * * * sleep 60 && /opt/scripts/monitor_mysql_service.sh */10 * * * * sleep 60 && /opt/scripts/monitor_mysql_service.sh
*/5 * * * * sleep 120 && /opt/scripts/monitor_redis_service.sh */10 * * * * sleep 120 && /opt/scripts/monitor_redis_service.sh
*/5 * * * * sleep 180 && /opt/scripts/monitor_external_api_services_v2.sh */10 * * * * sleep 180 && /opt/scripts/monitor_external_api_services_v2.sh
*/5 * * * * sleep 240 && /opt/scripts/monitor_inner_api_services.sh */10 * * * * sleep 240 && /opt/scripts/monitor_inner_api_services.sh
# ========== 数据备份类(每日凌晨) ========== # ========== 数据备份类(每日凌晨) ==========
0 1 * * * /opt/scripts/backup_mysql_databases.sh 0 1 * * * /opt/scripts/backup_mysql_databases.sh
...@@ -199,25 +224,25 @@ crontab -e ...@@ -199,25 +224,25 @@ crontab -e
| 脚本 | 执行偏移 | 实际执行时间 | | 脚本 | 执行偏移 | 实际执行时间 |
|------|---------|-------------| |------|---------|-------------|
| monitor_emqx_service.sh | +0秒 | 0, 5, 10, 15... | | monitor_emqx_service.sh | +0秒 | 0, 10, 20, 30... |
| monitor_mysql_service.sh | +60秒 | 1, 6, 11, 16... | | monitor_mysql_service.sh | +60秒 | 1, 11, 21, 31... |
| monitor_redis_service.sh | +120秒 | 2, 7, 12, 17... | | monitor_redis_service.sh | +120秒 | 2, 12, 22, 32... |
| monitor_external_api_services_v2.sh | +180秒 | 3, 8, 13, 18... | | monitor_external_api_services_v2.sh | +180秒 | 3, 13, 23, 33... |
| monitor_inner_api_services.sh | +240秒 | 4, 9, 14, 19... | | monitor_inner_api_services.sh | +240秒 | 4, 14, 24, 34... |
### 执行时间安排图 ### 执行时间安排图
``` ```
时间轴 (24 小时) 时间轴 (24 小时)
├─ 00:00 - 01:00 → 监控任务(每 5 分钟,错峰执行) ├─ 00:00 - 01:00 → 监控任务(每 10 分钟,错峰执行)
├─ 01:00 - 01:30 → MySQL数据库备份 ★ ├─ 01:00 - 01:30 → MySQL数据库备份 ★
├─ 01:30 - 02:00 → 监控任务(每 5 分钟,错峰执行) ├─ 01:30 - 02:00 → 监控任务(每 10 分钟,错峰执行)
├─ 02:00 - 02:30 → MySQL日志备份 ★ ├─ 02:00 - 02:30 → MySQL日志备份 ★
├─ 02:30 - 03:00 → 监控任务(每 5 分钟,错峰执行) ├─ 02:30 - 03:00 → 监控任务(每 10 分钟,错峰执行)
├─ 03:00 - 03:30 → Nginx日志备份 ★ ├─ 03:00 - 03:30 → Nginx日志备份 ★
├─ 03:30 - 04:00 → 监控任务(每 5 分钟,错峰执行) ├─ 03:30 - 04:00 → 监控任务(每 10 分钟,错峰执行)
├─ 04:00 - 04:30 → 已删除文件清理 ★ ├─ 04:00 - 04:30 → 已删除文件清理 ★
└─ 04:30 - 24:00 → 监控任务(每 5 分钟,错峰执行) └─ 04:30 - 24:00 → 监控任务(每 10 分钟,错峰执行)
★ = 重量级任务,错峰执行 ★ = 重量级任务,错峰执行
``` ```
...@@ -248,10 +273,12 @@ sudo chmod +x /opt/scripts/*.sh ...@@ -248,10 +273,12 @@ sudo chmod +x /opt/scripts/*.sh
sudo mkdir -p /var/log/scripts sudo mkdir -p /var/log/scripts
sudo chmod 755 /var/log/scripts sudo chmod 755 /var/log/scripts
# 创建状态文件目录(新增) # 创建状态文件目录
sudo mkdir -p /var/log/scripts/external_api_state sudo mkdir -p /var/log/scripts/external_api_state
sudo mkdir -p /var/log/scripts/inner_api_state sudo mkdir -p /var/log/scripts/inner_api_state
sudo chmod 755 /var/log/scripts/*_state sudo chmod 755 /var/log/scripts/*_state
# PID文件会由脚本自动创建,无需手动创建
``` ```
### 3. 依赖检查 ### 3. 依赖检查
...@@ -312,13 +339,16 @@ grep "失败计数器更新" /var/log/scripts/*.log ...@@ -312,13 +339,16 @@ grep "失败计数器更新" /var/log/scripts/*.log
grep "连续失败达到阈值" /var/log/scripts/*.log | wc -l grep "连续失败达到阈值" /var/log/scripts/*.log | wc -l
``` ```
### 2. 状态文件监控(新增) ### 2. 状态文件与PID文件监控
```bash ```bash
# 查看所有状态文件 # 查看所有状态文件
ls -la /var/log/scripts/*.state ls -la /var/log/scripts/*.state
ls -la /var/log/scripts/*_state/ ls -la /var/log/scripts/*_state/
# 查看所有PID文件(新增)
ls -la /var/log/scripts/*.pid
# 查看特定服务失败次数 # 查看特定服务失败次数
cat /var/log/scripts/monitor_mysql_service.state cat /var/log/scripts/monitor_mysql_service.state
cat /var/log/scripts/.emqx_monitor_state cat /var/log/scripts/.emqx_monitor_state
...@@ -326,6 +356,16 @@ cat /var/log/scripts/.emqx_monitor_state ...@@ -326,6 +356,16 @@ cat /var/log/scripts/.emqx_monitor_state
# 查看多服务状态目录 # 查看多服务状态目录
ls -la /var/log/scripts/external_api_state/ ls -la /var/log/scripts/external_api_state/
ls -la /var/log/scripts/inner_api_state/ ls -la /var/log/scripts/inner_api_state/
# 检查是否有脚本卡住(PID文件存在但进程不存在)(新增)
for pid_file in /var/log/scripts/*.pid; do
if [ -f "$pid_file" ]; then
pid=$(cat "$pid_file")
if ! kill -0 "$pid" 2>/dev/null; then
echo "警告: $(basename "$pid_file") 进程 $pid 不存在,但PID文件仍存在"
fi
fi
done
``` ```
### 2. 执行状态检查 ### 2. 执行状态检查
...@@ -455,6 +495,20 @@ grep "连续失败达到阈值" /var/log/scripts/*.log | tail -10 ...@@ -455,6 +495,20 @@ grep "连续失败达到阈值" /var/log/scripts/*.log | tail -10
MAX_FAILURES=5 # 从3改为5,给予更多容忍度 MAX_FAILURES=5 # 从3改为5,给予更多容忍度
``` ```
#### 8. PID文件异常(新增)
```bash
# 检查PID文件权限
ls -la /var/log/scripts/*.pid
# 脚本被卡住无法执行时,手动清理PID文件
rm -f /var/log/scripts/*.pid
# 验证PID文件对应的进程是否还在运行
pid=$(cat /var/log/scripts/.emqx_monitor.pid)
kill -0 $pid && echo "进程存在" || echo "进程不存在,需要清理PID文件"
```
--- ---
## 📈 性能优化建议 ## 📈 性能优化建议
...@@ -467,12 +521,21 @@ MAX_FAILURES=5 # 从3改为5,给予更多容忍度 ...@@ -467,12 +521,21 @@ MAX_FAILURES=5 # 从3改为5,给予更多容忍度
### 2. 日志管理优化 ### 2. 日志管理优化
所有脚本已内置日志自动轮转机制(5MB轮转、保留30天),无需额外配置 logrotate。
如需自定义日志轮转策略,可修改脚本中的以下参数:
```bash
MAX_LOG_SIZE=$((5*1024*1024)) # 5MB 日志大小限制
LOG_RETENTION_DAYS=30 # 30天保留期
```
或使用系统 logrotate 作为补充:
```bash ```bash
# 添加日志轮转配置(/etc/logrotate.d/scripts) # 添加日志轮转配置(/etc/logrotate.d/scripts)
cat > /etc/logrotate.d/scripts << EOF cat > /etc/logrotate.d/scripts << EOF
/var/log/scripts/*.log { /var/log/scripts/*.log {
daily daily
rotate 7 rotate 30
compress compress
delaycompress delaycompress
missingok missingok
...@@ -561,21 +624,36 @@ grep CRON /var/log/syslog | tail -20 ...@@ -561,21 +624,36 @@ grep CRON /var/log/syslog | tail -20
# 5. 检查备份文件 # 5. 检查备份文件
ls -lh /opt/mysql/$(date +%Y%m%d)/ ls -lh /opt/mysql/$(date +%Y%m%d)/
# 6. 查看服务失败计数器(新增) # 6. 查看服务失败计数器
cat /var/log/scripts/monitor_mysql_service.state cat /var/log/scripts/monitor_mysql_service.state
cat /var/log/scripts/monitor_redis_service.state cat /var/log/scripts/monitor_redis_service.state
cat /var/log/scripts/.emqx_monitor_state cat /var/log/scripts/.emqx_monitor_state
ls -la /var/log/scripts/external_api_state/ ls -la /var/log/scripts/external_api_state/
ls -la /var/log/scripts/inner_api_state/ ls -la /var/log/scripts/inner_api_state/
# 7. 手动重置失败计数器(新增) # 7. 手动重置失败计数器
echo "FAILURE_COUNT=0" > /var/log/scripts/monitor_mysql_service.state echo "FAILURE_COUNT=0" > /var/log/scripts/monitor_mysql_service.state
echo "FAILURE_COUNT=0" > /var/log/scripts/monitor_redis_service.state echo "FAILURE_COUNT=0" > /var/log/scripts/monitor_redis_service.state
# 8. 查看重启历史(新增) # 8. 查看重启历史
grep "连续失败达到阈值" /var/log/scripts/*.log | tail -10 grep "连续失败达到阈值" /var/log/scripts/*.log | tail -10
# 9. 紧急重启所有容器 # 9. 检查PID文件状态(新增)
ls -la /var/log/scripts/*.pid
# 10. 清理卡住的PID文件(新增)
for pid_file in /var/log/scripts/*.pid; do
pid=$(cat "$pid_file" 2>/dev/null)
if [ -n "$pid" ] && ! kill -0 "$pid" 2>/dev/null; then
rm -f "$pid_file"
echo "已清理: $pid_file"
fi
done
# 11. 检查日志轮转状态(新增)
find /var/log/scripts -name "*.log.*" -mtime +30 -exec ls -lh {} \;
# 12. 紧急重启所有容器
docker restart ujava2 umysql uredis uemqx docker restart ujava2 umysql uredis uemqx
# =================================== # ===================================
...@@ -588,10 +666,13 @@ docker restart ujava2 umysql uredis uemqx ...@@ -588,10 +666,13 @@ docker restart ujava2 umysql uredis uemqx
如遇到问题,请按以下步骤收集信息: 如遇到问题,请按以下步骤收集信息:
1. **日志文件**`/var/log/scripts/*.log` 1. **日志文件**`/var/log/scripts/*.log`
2. **容器状态**`docker ps -a` 2. **状态文件**`/var/log/scripts/*.state``/var/log/scripts/*_state/`
3. **系统日志**`/var/log/syslog`(cron 相关) 3. **PID文件**`/var/log/scripts/*.pid`(新增)
4. **磁盘空间**`df -h` 4. **容器状态**`docker ps -a`
5. **Cron 配置**`crontab -l` 5. **系统日志**`/var/log/syslog`(cron 相关)
6. **磁盘空间**`df -h`
7. **Cron 配置**`crontab -l`
8. **轮转日志**`ls -la /var/log/scripts/*.log.*`(新增)
联系技术支持时请提供以上信息。 联系技术支持时请提供以上信息。
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论