Skip to content

运维手册文档

阶段: 运维维护
模块: 维护管理
状态: ✅ 已完成
更新日期: 2026-05-12


1. 运维组织架构

1.1 职责分工

角色职责值班安排
运维主管运维策略制定、重大故障处理7×24小时待命
系统运维服务器管理、系统部署、监控轮班制
数据库运维数据库管理、备份恢复轮班制
网络运维网络配置、安全防护轮班制
应用运维应用发布、故障排查轮班制

1.2 值班制度

班次时间负责人
白班08:00-20:00值班运维
夜班20:00-08:00值班运维
周末全天轮班

2. 日常维护

2.1 每日巡检

2.1.1 系统健康检查

bash
#!/bin/bash
# daily-check.sh - 每日巡检脚本

DATE=$(date +%Y-%m-%d)
LOG_FILE="/var/log/ops/daily-check-${DATE}.log"

echo "========== 每日巡检开始: $(date) ==========" >> $LOG_FILE

# 1. 检查服务状态
echo "[1] 检查服务状态..." >> $LOG_FILE
systemctl status nginx >> $LOG_FILE 2>&1
systemctl status linsir-system >> $LOG_FILE 2>&1
systemctl status mysql >> $LOG_FILE 2>&1
systemctl status redis >> $LOG_FILE 2>&1

# 2. 检查磁盘空间
echo "[2] 检查磁盘空间..." >> $LOG_FILE
df -h >> $LOG_FILE

# 3. 检查内存使用
echo "[3] 检查内存使用..." >> $LOG_FILE
free -h >> $LOG_FILE

# 4. 检查CPU负载
echo "[4] 检查CPU负载..." >> $LOG_FILE
uptime >> $LOG_FILE

# 5. 检查日志错误
echo "[5] 检查日志错误..." >> $LOG_FILE
grep -i "error\|exception" /var/log/linsir-system/*.log | tail -20 >> $LOG_FILE

echo "========== 每日巡检结束: $(date) ==========" >> $LOG_FILE

2.1.2 巡检检查清单

检查项正常标准检查命令频率
服务状态所有服务runningsystemctl status每日
磁盘空间使用率<80%df -h每日
内存使用使用率<85%free -h每日
CPU负载load<核心数×2uptime每日
日志错误无ERROR级别grep ERROR每日
网络连通无丢包ping每日
SSL证书有效期>30天openssl x509每周

2.2 定期维护

2.2.1 周维护任务

任务描述执行时间
安全补丁更新检查并安装安全补丁每周一 02:00
日志清理清理过期日志文件每周日 03:00
性能分析分析系统性能趋势每周五 14:00
备份验证验证备份完整性每周六 01:00

2.2.2 月维护任务

任务描述执行时间
系统更新更新系统软件包每月第一个周日
密码轮换更新系统密码每月15日
容量规划评估资源使用情况每月最后一周
安全审计检查安全日志每月25日

2.2.3 定期维护脚本

bash
#!/bin/bash
# weekly-maintenance.sh - 周维护脚本

LOG_FILE="/var/log/ops/weekly-maintenance-$(date +%Y%m%d).log"

echo "========== 周维护开始: $(date) ==========" | tee -a $LOG_FILE

# 1. 系统更新
echo "[1] 检查系统更新..." | tee -a $LOG_FILE
apt-get update >> $LOG_FILE 2>&1
apt-get -s upgrade >> $LOG_FILE 2>&1

# 2. 清理日志
echo "[2] 清理过期日志..." | tee -a $LOG_FILE
find /var/log/linsir-system -name "*.log.*" -mtime +30 -delete
find /var/log/nginx -name "*.log.*" -mtime +30 -delete

# 3. 清理临时文件
echo "[3] 清理临时文件..." | tee -a $LOG_FILE
find /tmp -type f -mtime +7 -delete
find /var/tmp -type f -mtime +7 -delete

# 4. 优化数据库
echo "[4] 数据库优化..." | tee -a $LOG_FILE
mysqlcheck -o linsir_system >> $LOG_FILE 2>&1

echo "========== 周维护结束: $(date) ==========" | tee -a $LOG_FILE

3. 故障处理

3.1 故障分级

级别定义响应时间解决时间通知范围
P0-紧急系统完全不可用5分钟1小时CTO、运维主管、全员
P1-高核心功能不可用15分钟4小时运维主管、开发负责人
P2-中部分功能异常30分钟8小时值班运维、开发团队
P3-低轻微问题2小时24小时值班运维

3.2 故障处理流程

┌─────────────────────────────────────────────────────────────────┐
│                      故障处理流程                                │
└─────────────────────────────────────────────────────────────────┘

  告警/发现


┌─────────────┐
│  故障确认    │ ◄── 确认故障影响范围、严重程度
└──────┬──────┘


┌─────────────┐
│  故障分级    │ ◄── 根据分级标准确定P0-P3
└──────┬──────┘


┌─────────────┐     是    ┌─────────────┐
│  是否有预案? │ ─────────►│  执行预案    │
└──────┬──────┘           └─────────────┘
       │ 否

┌─────────────┐
│  故障诊断    │ ◄── 收集日志、分析原因
└──────┬──────┘


┌─────────────┐
│  故障修复    │ ◄── 实施修复方案
└──────┬──────┘


┌─────────────┐
│  验证恢复    │ ◄── 确认服务恢复正常
└──────┬──────┘


┌─────────────┐
│  故障复盘    │ ◄── 编写故障报告、制定改进措施
└─────────────┘

3.3 常见故障处理

3.3.1 服务宕机

现象可能原因处理步骤
502 Bad GatewayNginx后端服务异常1. 检查后端服务状态
2. 查看服务日志
3. 重启服务
4. 检查资源使用
连接超时网络或防火墙问题1. 检查网络连通性
2. 检查防火墙规则
3. 检查安全组配置
OOM killed内存不足1. 检查内存使用
2. 调整JVM参数
3. 扩容服务器

3.3.2 数据库故障

现象可能原因处理步骤
连接数满连接未释放1. 查看当前连接
2. 杀掉空闲连接
3. 优化连接池配置
主从延迟从库性能不足1. 检查从库负载
2. 优化慢查询
3. 考虑扩容
磁盘满日志或数据增长1. 清理过期日志
2. 扩展磁盘空间
3. 归档历史数据

3.3.3 网络故障

现象可能原因处理步骤
网络不通路由或DNS问题1. 测试网络连通性
2. 检查DNS解析
3. 检查路由表
高延迟带宽不足或拥塞1. 检查带宽使用
2. 分析流量来源
3. 考虑带宽扩容
丢包严重网络设备故障1. 检查网络设备
2. 更换故障设备
3. 启用备用链路

3.4 故障处理脚本

bash
#!/bin/bash
# emergency-response.sh - 紧急故障响应脚本

INCIDENT_ID="INC-$(date +%Y%m%d-%H%M%S)"
LOG_FILE="/var/log/ops/incident-${INCIDENT_ID}.log"

echo "========== 故障响应: ${INCIDENT_ID} ==========" | tee -a $LOG_FILE
echo "时间: $(date)" | tee -a $LOG_FILE
echo "操作人: $(whoami)" | tee -a $LOG_FILE

# 收集系统信息
echo "[INFO] 收集系统信息..." | tee -a $LOG_FILE
echo "--- 系统负载 ---" >> $LOG_FILE
uptime >> $LOG_FILE

echo "--- 内存使用 ---" >> $LOG_FILE
free -h >> $LOG_FILE

echo "--- 磁盘使用 ---" >> $LOG_FILE
df -h >> $LOG_FILE

echo "--- 服务状态 ---" >> $LOG_FILE
systemctl status nginx linsir-system mysql redis >> $LOG_FILE 2>&1

echo "--- 网络连接 ---" >> $LOG_FILE
netstat -tunlp >> $LOG_FILE

echo "--- 最近错误日志 ---" >> $LOG_FILE
tail -100 /var/log/linsir-system/error.log >> $LOG_FILE 2>&1

# 自动修复尝试
echo "[INFO] 尝试自动修复..." | tee -a $LOG_FILE

# 检查并重启异常服务
for service in nginx linsir-system mysql redis; do
    if ! systemctl is-active --quiet $service; then
        echo "[WARN] 服务 $service 未运行,尝试重启..." | tee -a $LOG_FILE
        systemctl restart $service >> $LOG_FILE 2>&1
        sleep 5
        if systemctl is-active --quiet $service; then
            echo "[OK] 服务 $service 重启成功" | tee -a $LOG_FILE
        else
            echo "[ERROR] 服务 $service 重启失败" | tee -a $LOG_FILE
        fi
    fi
done

# 健康检查
echo "[INFO] 执行健康检查..." | tee -a $LOG_FILE
HEALTH_STATUS=$(curl -s http://localhost:8080/actuator/health | grep -o '"status":"UP"' || echo "DOWN")
if [ "$HEALTH_STATUS" = '"status":"UP"' ]; then
    echo "[OK] 系统健康检查通过" | tee -a $LOG_FILE
else
    echo "[ERROR] 系统健康检查失败" | tee -a $LOG_FILE
fi

echo "========== 故障响应结束: $(date) ==========" | tee -a $LOG_FILE
echo "日志文件: ${LOG_FILE}"

4. 升级管理

4.1 升级流程

┌─────────────────────────────────────────────────────────────────┐
│                       升级管理流程                               │
└─────────────────────────────────────────────────────────────────┘

┌─────────────┐
│  升级申请    │ ◄── 提交升级申请单
└──────┬──────┘


┌─────────────┐
│  影响评估    │ ◄── 评估影响范围、回滚方案
└──────┬──────┘


┌─────────────┐
│  方案评审    │ ◄── 技术评审、安全评审
└──────┬──────┘


┌─────────────┐
│  测试验证    │ ◄── 测试环境验证
└──────┬──────┘


┌─────────────┐
│  升级审批    │ ◄── 获得升级授权
└──────┬──────┘


┌─────────────┐
│  升级窗口    │ ◄── 选择低峰时段
└──────┬──────┘


┌─────────────┐
│  升级执行    │ ◄── 执行升级操作
└──────┬──────┘


┌─────────────┐
│  验证测试    │ ◄── 验证升级结果
└──────┬──────┘


┌─────────────┐
│  升级完成    │ ◄── 更新文档、通知相关方
└─────────────┘

4.2 升级检查清单

阶段检查项状态
升级前已创建完整备份[ ]
升级前已验证回滚方案[ ]
升级前已通知相关方[ ]
升级前已准备升级包[ ]
升级前已检查依赖项[ ]
升级中按步骤执行升级[ ]
升级中记录升级日志[ ]
升级后验证服务状态[ ]
升级后验证功能正常[ ]
升级后验证监控正常[ ]
升级后更新配置文档[ ]

4.3 版本发布管理

版本类型发布频率审批级别测试要求
补丁版本按需运维主管回归测试
小版本每月技术总监完整测试
大版本每季度CTO全面测试

4.4 升级脚本

bash
#!/bin/bash
# upgrade-system.sh - 系统升级脚本

VERSION=$1
ENV=${2:-uat}

if [ -z "$VERSION" ]; then
    echo "用法: $0 <版本号> [环境]"
    exit 1
fi

echo "========== 系统升级 =========="
echo "版本: $VERSION"
echo "环境: $ENV"
echo "时间: $(date)"
echo "操作人: $(whoami)"
echo "=============================="

# 升级前检查
echo "[1/6] 升级前检查..."
# 检查备份
if [ ! -d "/backup/linsir-system-$(date +%Y%m%d)" ]; then
    echo "错误: 未找到今日备份,请先执行备份"
    exit 1
fi

# 检查磁盘空间
DISK_USAGE=$(df / | tail -1 | awk '{print $5}' | sed 's/%//')
if [ $DISK_USAGE -gt 80 ]; then
    echo "错误: 磁盘使用率超过80%,无法升级"
    exit 1
fi

# 下载升级包
echo "[2/6] 下载升级包..."
wget -q "https://nexus.linsir.com/repository/releases/com/linsir/system/${VERSION}/system-${VERSION}.jar" \
    -O /tmp/system-${VERSION}.jar

if [ $? -ne 0 ]; then
    echo "错误: 下载升级包失败"
    exit 1
fi

# 停止服务
echo "[3/6] 停止服务..."
systemctl stop linsir-system
sleep 5

# 备份当前版本
echo "[4/6] 备份当前版本..."
cp /opt/linsir-system/app.jar /opt/linsir-system/app.jar.backup.$(date +%Y%m%d%H%M%S)

# 部署新版本
echo "[5/6] 部署新版本..."
cp /tmp/system-${VERSION}.jar /opt/linsir-system/app.jar
chown linsir:linsir /opt/linsir-system/app.jar
chmod 755 /opt/linsir-system/app.jar

# 启动服务
echo "[6/6] 启动服务..."
systemctl start linsir-system
sleep 10

# 健康检查
echo "验证升级结果..."
HEALTH_STATUS=$(curl -s http://localhost:8080/actuator/health | grep -o '"status":"UP"' || echo "DOWN")
if [ "$HEALTH_STATUS" = '"status":"UP"' ]; then
    echo "✅ 升级成功!当前版本: $VERSION"
    echo "升级完成时间: $(date)"
else
    echo "❌ 升级失败,服务未正常启动"
    echo "执行回滚..."
    # 回滚逻辑
    exit 1
fi

5. 容量管理

5.1 容量规划

资源类型当前使用告警阈值扩容阈值规划周期
CPU监控中70%80%季度
内存监控中80%90%季度
磁盘监控中80%85%月度
带宽监控中70%80%季度
数据库连接监控中70%80%季度

5.2 扩容流程

容量告警


┌─────────────┐
│  容量评估    │ ◄── 分析增长趋势
└──────┬──────┘


┌─────────────┐
│  扩容方案    │ ◄── 制定扩容计划
└──────┬──────┘


┌─────────────┐
│  方案评审    │ ◄── 技术+成本评审
└──────┬──────┘


┌─────────────┐
│  资源申请    │ ◄── 申请云资源
└──────┬──────┘


┌─────────────┐
│  扩容实施    │ ◄── 执行扩容
└──────┬──────┘


┌─────────────┐
│  效果验证    │ ◄── 验证扩容效果
└─────────────┘

6. 运维工具

6.1 常用命令速查

场景命令说明
查看日志tail -f /var/log/linsir-system/app.log实时查看日志
搜索日志grep "ERROR" app.log | tail -20搜索错误日志
查看进程ps aux | grep java查看Java进程
查看端口netstat -tunlp | grep 8080查看端口占用
查看连接ss -s查看连接统计
性能分析top -p $(pgrep java)查看进程资源
线程分析jstack <pid> > thread.dump导出线程栈
GC分析jstat -gc <pid> 1000监控GC情况

6.2 运维自动化

bash
#!/bin/bash
# ops-automation.sh - 运维自动化脚本

ACTION=$1

case $ACTION in
    "status")
        echo "=== 服务状态 ==="
        systemctl status nginx linsir-system mysql redis --no-pager
        ;;
    "restart")
        echo "=== 重启服务 ==="
        systemctl restart linsir-system
        sleep 5
        systemctl status linsir-system --no-pager
        ;;
    "logs")
        echo "=== 最近日志 ==="
        journalctl -u linsir-system -n 100 --no-pager
        ;;
    "clean")
        echo "=== 清理日志 ==="
        find /var/log/linsir-system -name "*.log.*" -mtime +30 -delete
        echo "日志清理完成"
        ;;
    "backup")
        echo "=== 执行备份 ==="
        /opt/scripts/backup-database.sh
        /opt/scripts/backup-files.sh
        ;;
    *)
        echo "用法: $0 {status|restart|logs|clean|backup}"
        exit 1
        ;;
esac

7. 运维文档

7.1 文档清单

文档名称更新频率负责人
系统架构图变更时运维主管
部署文档变更时运维工程师
运维手册月度运维工程师
故障案例库实时全体运维
应急预案季度运维主管
容量报告月度运维工程师

7.2 知识库管理

知识库结构:
├── 系统文档
│   ├── 架构设计
│   ├── 部署指南
│   └── 配置说明
├── 运维手册
│   ├── 日常运维
│   ├── 故障处理
│   └── 升级管理
├── 故障案例
│   ├── P0故障
│   ├── P1故障
│   └── 常见问题
└── 应急预案
    ├── 服务宕机
    ├── 数据丢失
    └── 网络故障

8. 联系信息

8.1 内部联系

角色姓名电话邮箱
运维主管周九138-xxxx-xxxxzhoujiu@linsir.com
系统运维吴十139-xxxx-xxxxwushi@linsir.com
数据库运维郑十一137-xxxx-xxxxzhengshiyi@linsir.com
开发负责人张三136-xxxx-xxxxzhangsan@linsir.com

8.2 外部支持

服务商支持内容联系方式
云服务商基础设施7×24小时热线
安全厂商安全防护工作日9-18点
数据库厂商数据库支持7×24小时热线

文档创建: 2026-05-12
最后更新: 2026-05-12
运维负责人: 周九

Released under the MIT License.