[ PROMPT_NODE_25464 ]
server-management
[ SKILL_DOCUMENTATION ]
# 服务器管理
> 生产环境运维的服务器管理原则。
> **学会思考,而不是死记硬背命令。**
---
## 1. 进程管理原则
### 工具选择
| 场景 | 工具 |
|----------|------|
| **Node.js 应用** | PM2 (集群、重载) |
| **任意应用** | systemd (Linux 原生) |
| **容器** | Docker/Podman |
| **编排** | Kubernetes, Docker Swarm |
### 进程管理目标
| 目标 | 含义 |
|------|---------------|
| **崩溃重启** | 自动恢复 |
| **零停机重载** | 服务不中断 |
| **集群化** | 利用所有 CPU 核心 |
| **持久化** | 服务器重启后依然存活 |
---
## 2. 监控原则
### 监控内容
| 类别 | 关键指标 |
|----------|-------------|
| **可用性** | 正常运行时间、健康检查 |
| **性能** | 响应时间、吞吐量 |
| **错误** | 错误率、错误类型 |
| **资源** | CPU、内存、磁盘 |
### 警报严重性策略
| 级别 | 响应 |
|-------|----------|
| **严重 (Critical)** | 立即采取行动 |
| **警告 (Warning)** | 尽快调查 |
| **信息 (Info)** | 每日审查 |
### 监控工具选择
| 需求 | 选项 |
|------|---------|
| 简单/免费 | PM2 metrics, htop |
| 全面可观测性 | Grafana, Datadog |
| 错误追踪 | Sentry |
| 正常运行时间 | UptimeRobot, Pingdom |
---
## 3. 日志管理原则
### 日志策略
| 日志类型 | 用途 |
|----------|---------|
| **应用日志** | 调试、审计 |
| **访问日志** | 流量分析 |
| **错误日志** | 问题检测 |
### 日志原则
1. **轮转日志**以防止磁盘写满
2. **结构化日志** (JSON) 以便解析
3. **适当的级别** (error/warn/info/debug)
4. **日志中不包含敏感数据**
---
## 4. 扩容决策
### 何时扩容
| 症状 | 解决方案 |
|---------|----------|
| CPU 高 | 增加实例 (水平扩展) |
| 内存高 | 增加 RAM 或修复内存泄漏 |
| 响应慢 | 先进行性能分析,再扩容 |
| 流量激增 | 自动扩容 |
### 扩容策略
| 类型 | 使用时机 |
|------|-------------|
| **垂直扩展** | 快速修复,单实例 |
| **水平扩展** | 可持续,分布式 |
| **自动扩展** | 流量波动大 |
---
## 5. 健康检查原则
### 健康的定义
| 检查项 | 含义 |
|-------|---------|
| **HTTP 200** | 服务响应正常 |
| **数据库已连接** | 数据可访问 |
| **依赖项正常** | 外部服务可达 |
| **资源正常** | CPU/内存未耗尽 |
### 健康检查实现