服务器管理
生产环境的服务器管理原则。 学会思考,而非死记命令。
1. 进程管理原则
工具选择
| 场景 | 工具 |
|---|---|
| Node.js 应用 | PM2(集群、热重载) |
| 任意应用 | systemd(Linux 原生) |
| 容器 | Docker/Podman |
| 编排 | Kubernetes、Docker Swarm |
进程管理目标
| 目标 | 含义 |
|---|---|
| 崩溃重启 | 自动恢复 |
| 零停机重载 | 无服务中断 |
| 集群化 | 利用所有 CPU 核心 |
| 持久化 | 服务器重启后存活 |
2. 监控原则
监控什么
| 类别 | 关键指标 |
|---|---|
| 可用性 | 正常运行时间、健康检查 |
| 性能 | 响应时间、吞吐量 |
| 错误 | 错误率、错误类型 |
| 资源 | CPU、内存、磁盘 |
告警严重级别策略
| 级别 | 响应方式 |
|---|---|
| 严重 | 立即处理 |
| 警告 | 尽快排查 |
| 信息 | 每日审查 |
监控工具选择
| 需求 | 选项 |
|---|---|
| 简单/免费 | PM2 指标、htop |
| 完整可观测性 | Grafana、Datadog |
| 错误追踪 | Sentry |
| 可用性监控 | UptimeRobot、Pingdom |
3. 日志管理原则
日志策略
| 日志类型 | 用途 |
|---|---|
| 应用日志 | 调试、审计 |
| 访问日志 | 流量分析 |
| 错误日志 | 问题检测 |
日志原则
- 日志轮转防止磁盘写满
- 结构化日志(JSON)便于解析
- 合理分级(error/warn/info/debug)
- 日志中不存敏感数据
4. 扩展决策
何时扩展
| 症状 | 解决方案 |
|---|---|
| CPU 过高 | 增加实例(水平扩展) |
| 内存过高 | 增加内存或修复泄漏 |
| 响应缓慢 | 先性能分析,再扩展 |
| 流量突增 | 自动扩展 |
扩展策略
| 类型 | 适用场景 |
|---|---|
| 垂直扩展 | 快速修复、单实例 |
| 水平扩展 | 可持续、分布式 |
| 自动扩展 | 流量波动大 |
5. 健康检查原则
健康状态定义
| 检查项 | 含义 |
|---|---|
| HTTP 200 | 服务正常响应 |
| 数据库已连接 | 数据可访问 |
| 依赖正常 | 外部服务可达 |
| 资源正常 | CPU/内存未耗尽 |
健康检查实现
- 简单检查:仅返回 200
- 深度检查:检查所有依赖项
- 根据负载均衡器需求选择
6. 安全原则
| 领域 | 原则 |
|---|---|
| 访问控制 | 仅使用 SSH 密钥,禁用密码 |
| 防火墙 | 仅开放必要端口 |
| 更新 | 定期安全补丁 |
| 密钥管理 | 环境变量,非文件 |
| 审计 | 记录访问和变更 |
7. 故障排查优先级
出现问题时:
- 检查是否运行(进程状态)
- 检查日志(错误信息)
- 检查资源(磁盘、内存、CPU)
- 检查网络(端口、DNS)
- 检查依赖(数据库、API)
8. 反模式
| ❌ 不要 | ✅ 应该 |
|---|---|
| 以 root 身份运行 | 使用非 root 用户 |
| 忽略日志 | 设置日志轮转 |
| 跳过监控 | 从第一天就开始监控 |
| 手动重启 | 配置自动重启 |
| 不做备份 | 定期备份计划 |
记住: 管理良好的服务器是无聊的。这就是目标。
使用场景
此技能适用于执行概述中描述的工作流或操作。
限制条件
- 仅在任务明确匹配上述范围时使用此技能。
- 不要将输出视为特定环境验证、测试或专家审查的替代品。
- 如果缺少所需输入、权限、安全边界或成功标准,请停下来请求澄清。