# ServerGuard
**Repository Path**: suoten/ServerGuard
## Basic Information
- **Project Name**: ServerGuard
- **Description**: 让服务器自己照顾自己 — 自动自愈的服务器运维与安全 Agent,磁盘/内存/证书/防暴力破解/挖矿查杀,16MB 单二进制零依赖
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2026-08-30
- **Last Updated**: 2026-09-06
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# ServerGuard · 让服务器自己照顾自己
**Self-Healing Server Operations & Security Agent**
[](LICENSE)
[](https://github.com/suoten/ServerGuard/releases)
[](https://go.dev)
[](#支持的操作系统)
[](https://github.com/suoten/ServerGuard/stargazers)
[](https://gitee.com/suoten/serverguard/stargazers)
[English](#english) | [中文](README.md)
---
> 凌晨 3 点,磁盘涨到 95%。
> 你在睡觉。ServerGuard 清掉 30 天前的旧日志,给 MySQL 留了活路,
> 早上 8 点把"昨晚发生了什么、它是怎么处理的"推到你的微信。
>
> 监控工具只负责告诉你"服务器死了"。**ServerGuard 负责不让它死。**
ServerGuard 是一个部署在服务器上的轻量级 Agent(16MB 单二进制,零依赖),7×24 小时盯着 CPU、内存、磁盘、网络、进程、网站、证书、数据库、安全威胁——发现问题时**直接动手修复**:清理磁盘、重启进程、封禁恶意 IP、续期证书、清除木马,而不是只发一条告警然后眼睁睁看着服务器崩掉。
它还会越用越懂你的服务器:学习每个时段的正常负载,在偏离常态时提醒;盯着磁盘的增长速度,提前一周告诉你"预计 5 天后写满";自动修复的同时拍下系统快照,附上一份"根因推测",让你不用登服务器也知道大概发生了什么。
**安全理念**:该出手时不犹豫,不该碰的不碰,不确定的交给你决定。永远不会搞崩宝塔、IIS、Apache、MySQL、Nginx。
## ✨ 特性一览
- 🔥 **自动自愈**:磁盘清理 / 内存泄漏拦截 / 服务重启 / SSH 封禁 / 证书续期 / 挖矿木马查杀,发现即修复
- 🧠 **智能运维**:基线异常检测(168 时段学习)、磁盘写满预测、根因分析快照、告警收敛降噪
- 🛡️ **五层安全机制**:45+ 进程白名单、Kill 预算、熔断器、级联防护、全局紧急停止,绝不误伤服务器
- 🌐 **多机集中管控**:Hub 统一纳管多台服务器,聚合视图 + 集中下发命令
- 📊 **实时面板**:健康评分、网站/API/数据库监控、审计日志,Vue 3 面板嵌入单二进制
- 📱 **全渠道告警**:微信(Server酱)/ 钉钉 / 企微 / 飞书 / 邮件 / Slack / Telegram / 自定义 Webhook
- 📦 **零依赖部署**:单二进制 16MB,SQLite 存储,`install.sh` 一键安装,兼容宝塔面板
## 📚 文档导航
| 文档 | 说明 |
|---|---|
| [安装指南](docs/install.md) | 一键安装 / 手动安装 / 宝塔部署 / Docker |
| [配置说明](docs/configuration.md) | 全部配置项详解 |
| [sgctl 运维工具](docs/sgctl.md) | 配置导入导出、数据库维护、安全自检 |
| [运维手册](docs/operations.md) | 日常运维、故障排查 |
| [API 文档](docs/api.md) | REST API 全量接口 |
| [变更日志](docs/CHANGELOG_v3.8.md) | 版本变更记录 |
| [产品规划](ServerGuard_产品规划文档_v4.9.md) | Roadmap 与设计思路 |
## 🚀 快速开始
### 方式一:一键安装(推荐)
从 [GitHub Releases](https://github.com/suoten/ServerGuard/releases)(或 [Gitee Releases](https://gitee.com/suoten/serverguard/releases))下载对应架构的发布包:
```bash
# 1. 下载发布包(选择对应架构)
# x86_64(绝大多数服务器):
wget https://github.com/suoten/ServerGuard/releases/latest/download/serverguard-0.3.0-linux-amd64.zip
# ARM64(鲲鹏/飞腾/Kylin V10):
wget https://github.com/suoten/ServerGuard/releases/latest/download/serverguard-0.3.0-linux-arm64.zip
# 2. 解压
unzip serverguard-0.3.0-linux-amd64.zip
# 3. 运行安装脚本
sudo bash install.sh
# 4. 打开面板
# 浏览器访问 http://你的服务器IP:18090
# 用户名: admin 密码: admin123
# 首次登录后请立即修改密码!
```
> 国内服务器下载慢?把 `github.com/suoten/ServerGuard` 换成 `gitee.com/suoten/serverguard` 即可。
`install.sh` 自动完成:
1. 复制二进制到 `/opt/serverguard/`
2. 生成随机 JWT Secret 的配置文件
3. 安装 systemd 服务(开机自启 + 崩溃自动重启)
4. 放行防火墙 18090 端口(firewalld / ufw / iptables 自动检测)
5. 启动服务并输出面板地址
### 方式二:手动安装
```bash
# 1. 创建目录
sudo mkdir -p /opt/serverguard /var/lib/serverguard
# 2. 复制二进制(amd64 或 arm64)
sudo cp serverguard-agent /opt/serverguard/serverguard-agent
sudo chmod +x /opt/serverguard/serverguard-agent
# 3. 复制配置并修改 JWT Secret(重要!)
sudo cp configs/serverguard-agent.yaml /opt/serverguard/config.yaml
sudo sed -i "s/CHANGE_ME_TO_RANDOM_STRING/$(head -c 32 /dev/urandom | base64 | tr -d '/+=' | head -c 32)/" /opt/serverguard/config.yaml
# 4. 安装 systemd 服务
sudo cp deploy/serverguard-agent.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now serverguard-agent
# 5. 放行防火墙
sudo firewall-cmd --permanent --add-port=18090/tcp && sudo firewall-cmd --reload # CentOS/Kylin
# 或
sudo ufw allow 18090/tcp # Ubuntu
```
### 方式三:Docker 部署
```bash
git clone https://github.com/suoten/ServerGuard.git
cd ServerGuard
docker compose up -d
# Agent 面板: http://服务器IP:9090
# Hub 管控台: http://服务器IP:8444(单机部署可删除 hub 服务)
```
### 方式四:在宝塔面板上部署
> 适合已经在用宝塔面板的用户。
1. 宝塔面板 → 文件 → `/opt` → 新建 `serverguard` 目录,上传二进制并重命名为 `serverguard-agent`,上传 `config.yaml`
2. 宝塔面板 → 安全 → 放行端口 18090
3. 终端执行:
```bash
sudo chmod +x /opt/serverguard/serverguard-agent
sudo cp /opt/serverguard/serverguard-agent.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now serverguard-agent
```
4. (可选)宝塔 → 网站 → 反向代理到 `http://127.0.0.1:18090`,用域名 + 443 访问面板
**宝塔环境下的额外优势**:
- 自动检测宝塔面板,优先用宝塔API续期证书(不消耗ACME配额)
- 自动发现宝塔管理的网站,一键导入监控
- 监控 Nginx/MySQL/PHP 进程,挂了自动重启
### 从源码构建
```bash
# 构建前端并嵌入
cd web && npm install && npm run build && cd ..
# 构建 Agent(Linux amd64)
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o serverguard-agent ./cmd/serverguard-agent
# 构建 Hub 多机管控端
go build -o serverguard-hub ./cmd/serverguard-hub
# 构建 sgctl 运维工具
go build -o sgctl ./cmd/sgctl
```
---
## 为什么需要 ServerGuard?
| 没用 ServerGuard 之前 | 用了 ServerGuard 之后 |
|---|---|
| 凌晨3点磁盘满了,MySQL崩溃,网站打不开 | 磁盘95%时自动清理旧日志,你睡觉时问题已经解决 |
| 某个进程内存泄漏吃光内存,内核OOM随机杀进程 | 检测到内存不足,智能终止非关键进程(白名单进程永不杀),发微信通知你 |
| SSL证书过期忘了续,用户浏览器报红叉 | 提前14天自动续期,续完自动reload并验证生效 |
| SSH被暴力破解,被人挂马挖矿 | 检测到30次失败登录自动封禁IP,发现挖矿进程直接杀掉 |
| Python脚本循环启动上百个进程,MySQL连接池占满 | 进程爆炸检测自动终止多余进程,MySQL连接按来源统计定位元凶 |
| 日志文件涨到50GB把磁盘撑爆 | 自动轮转压缩日志,排除web服务活跃日志 |
| 服务器被植入WebShell后门 | 扫描PHP文件特征码 + 3000+ YARA规则,发现WebShell立即告警 |
| crontab被篡改植入定时挖矿任务 | 检测可疑cron条目(反弹shell/挖矿/base64),立即告警 |
| 系统关键文件被篡改(/etc/passwd等) | 文件完整性监控发现哈希变化,立即告警 |
| MySQL/Redis挂了没发现 | 自动检测数据库端口 + Redis PING深度检测,连接失败立即告警并重启 |
| 被多模块协同攻击(SSH暴破+Web扫描+CC) | 攻击关联引擎5分钟窗口聚合,置信度>0.8自动封禁1小时 |
| Let's Encrypt限流无法续期 | 多CA降级链自动切换ZeroSSL/TrustAsia,失败队列指数退避重试 |
| 官方发了新漏洞自己不知道,被黑客利用了才发现 | 每6小时自动拉取NVD最新CVE,匹配本机软件版本,发现影响你的漏洞立即告警 |
| 系统有安全补丁该装了但没人提醒 | 自动检查yum/apt待安装的安全更新,面板直观展示补丁列表 |
| 告警太多,手机被刷屏,最后干脆关掉通知 | 抖动告警自动静默,同源攻击自动合并成一条事件摘要 |
---
## 核心能力
### 🔥 自动自愈:不只是告警,是真的修复
| 场景 | 触发条件 | 自动执行 |
|---|---|---|
| 磁盘快满 | 磁盘 > 95% | 清理30天以上的旧日志/压缩文件(保护数据库、配置、网站源码、会话文件,6层安全检查) |
| 内存泄漏 | 进程内存1h内增长 > 30% | 快照 → 重启进程(白名单进程不杀) |
| CPU超限 | 单进程 CPU > 80% 持续60s | 降优先级 → SIGTERM → SIGKILL(白名单进程不杀) |
| 服务挂了 | 进程不存在 / 端口不通 | 自动重启服务(启动时自动检测Nginx/MySQL/PHP/宝塔等) |
| 日志暴涨 | 单文件 > 500MB | 安全轮转+压缩(排除web服务活跃日志) |
| SSH暴力破解 | 5分钟内30次失败 | 渐进式封禁:限速 → 1小时 → 24小时(永不封私有IP) |
| 进程爆炸 | 同一程序 > 30个实例 | 保留最早3个,终止多余进程(走安全检查链) |
| 挖矿/木马 | 匹配已知恶意进程名 | 自动终止进程 + 告警(30+种恶意进程特征库) |
| 证书到期 | 剩余 < 14天 | 宝塔API / certbot / acme.sh 自动续期 |
| 僵尸进程 | 僵尸 > 10个 | 向父进程发 SIGCHLD 清理 |
### 🧠 智能运维:越用越懂你的服务器
告警更少、更准、更有信息量。全部基于确定性统计算法,零外部依赖,不占资源。
#### 告警收敛 —— 不刷屏
- **抖动抑制**:同一条告警 10 分钟内重复触发 3 次,自动静默 10 分钟,不再重复推送
- **同源关联**:同一个 IP 15 分钟内触发多种攻击告警,合并成一条事件摘要——"IP 45.x.x.x:SSH暴破 + Web扫描,疑似协同攻击"
- **只减打扰,不丢数据**:所有原始告警完整入库,面板随时可查全量
#### 基线异常检测 —— 知道什么算"不正常"
固定阈值分不清"白天 85% 是正常的,凌晨 3 点 85% 是异常"。ServerGuard 按**周几 × 小时**把历史指标分成 168 个时段,分别学习正常范围(均值 ± 3σ),偏离自身常态才告警:
> 基线异常:CPU 偏离历史正常范围
> 当前值 87.2%,该时段(周二 14 时)近 14 天历史均值 42.1%(σ=8.3)
同一套思路也覆盖**网站响应时间**:每个站点学习自己的正常延迟(内存滑动窗口),"没挂但变慢"(超过自身均值 3 倍且 >800ms,连续 3 次)才告警——快速站点 800ms 是异常,慢站点 800ms 是日常,不用固定阈值一刀切。
#### 磁盘写满预测 —— 提前一周知道
对近 14 天的磁盘日均使用率做线性回归,算出每天涨多少、按这个速度哪天到 90%:
- ≤ 7 天写满 → 立即告警:"⚠️ /www 当前 78%,增速 2.1%/天,预计 5 天后(08-16)达到 90%",并自动浅层扫描附上**空间占用热点 TOP3**(哪个目录在涨一眼可见)
- ≤ 30 天 → 写进每日巡检报告提醒
- 使用量稳定或下降 → 不打扰
仪表盘磁盘卡片直接显示"预计 N 天后写满"。
#### 根因分析 —— 告警里带着"为什么"
每次自动修复执行时,同步拍下系统快照(内存/Swap/磁盘/TOP进程),用启发式规则推测最可能的原因,附在告警后面:
```
🧠 根因分析(自动推测,仅供参考)
1. 内存压力极高(97%),MySQL 很可能被系统 OOM Killer 终止
2. Swap 使用率 82%,系统持续换页,建议扩容内存或限制进程内存
📸 事发时快照:内存 97% / CPU 45% / 磁盘 71%
TOP 内存进程:mysqld(3.2G) php-fpm(1.1G)
```
所有推测都标注"仅供参考"——它给你排查方向,最终判断权永远在你手里。
#### 保护性智能 —— 不把能跑的系统搞崩
自动运维最大的风险不是"不修",而是"越修越坏"。ServerGuard 在动手前先想清楚后果:
| 机制 | 它避免的翻车现场 |
|---|---|
| **重启前配置预检** | nginx 配置写错了还重启 = 亲手把网站打挂。重启前自动 `nginx -t` / `apachectl configtest` / `sshd -t`,预检不过**拒绝重启**并告警(附配置错误),服务保持原状至少还能跑 |
| **优雅重启 reload 优先** | 重启 nginx/php-fpm 会断开所有现有连接。支持平滑重载的服务优先 reload(零中断),验证存活后才算完成;reload 不行才回退 restart |
| **开机启动保护** | 开机 5 分钟内 MySQL 还在恢复 InnoDB、宝塔还在拉环境,误判"挂了"去重启只会添乱。这段时间内禁止自动重启 |
| **重启风暴→放弃+诊断** | 端口被占用时重启 100 次也没用。60 秒内重启 3 次仍未恢复 → 判定重启无效,放弃 30 分钟,附**自动诊断报告**(systemctl 日志尾部 + 端口被谁占用),人工介入直接定位 |
| **动作冲突智能排序** | 磁盘满导致 MySQL 崩溃:先清磁盘再重启 MySQL。否则重启完还会再挂 |
| **OOM 趋势预测** | 不等内核 OOM Killer 随机杀进程(可能误杀 MySQL)。内存 >80% 且按当前增速 15 分钟内将耗尽 → 提前告警,留出干预窗口 |
#### 威胁情报 + 阈值自调优 + 攻击者长期画像
- **威胁情报落地**:`IntelChecker` 聚合 AbuseIPDB / OTX / NVD / CNVD / ExploitDB 五类情报源,24h 本地缓存恶意 IP,全部外部调用 fail-close(无 Key / 断网静默跳过,不阻塞不 panic)。接入漏洞扫描(补充本地 CVE 库之外的新漏洞)、攻击预警(封禁前用 `CheckIP` 校验,命中恶意【置信度≥50 或举报数>0】升级封禁 24h 并附情报摘要)、安全防护(`banIP` 情报增强封禁时长)——把已同步的情报真正变成检测能力。
- **规则阈值自调优**:`ThresholdTuner` 用滑动窗口(最近 20 次)统计误报率,误报率 ≥50% 时上调阈值降低敏感度、完全无误报时回调阈值,结果夹紧在 `[min,max]` 内;CC 检测(默认 100,`[50,500]`)与 SSH 暴破(默认 10,`[5,50]`)阈值均自动调优。
- **攻击者长期画像**:`UpdateLongTermProfiles` 累计近 7 天攻击,命中"累计攻击≥30 或 攻击跨度≥3 天 或 攻击类型数≥3"标记为持久攻击者并写入 `attack_profiles`;持久攻击者封禁升级为 24h/7d 并标注"⚠️ 持久攻击者:该 IP 长期/多类型攻击,已升级封禁"。
### 🌐 多机集中管控(Hub)
Hub 从单机面板升级为真正的多机集中管控:Agent 经 WebSocket(`/ws/agent`,Bearer 鉴权 + `X-Agent-ID`)注册 / 心跳 / 上报告警,Hub 维护纯内存 Agent 注册中心,并提供聚合 REST 视图(`/api/servers` 列表、`/api/servers/:id` 详情、`/api/servers/:id/restart` 远程下发命令并审计,离线返回 409)。registry 为空时回退原单机逻辑,向后兼容。可跨机聚合服务器列表、查看跨机告警、集中下发命令。
### 🛡️ 五层安全机制:绝不会误操作搞坏服务器
```
第1层: Agent自身资源限制(内存<80MB, CPU<5%)
第2层: 系统状态自适应(CPU>95%进入存活模式,只告警不操作)
第3层: 操作安全阀(Kill预算15次/小时、熔断器、资源底线、白名单、封禁振荡熔断器)
第4层: 级联防护(操作后观察60s,系统变差则停止后续操作;Kill后5min对比系统状态)
第5层: 全局紧急停止(一键暂停所有自动修复;SSH失联自动回滚所有封禁规则)
```
**永远不会被杀的进程(45+)**:
- Linux: systemd, sshd, nginx, httpd, apache2, mysqld, mariadbd, postgres, redis-server, mongod, php-fpm, php-cgi, bt-panel, pure-ftpd, vsftpd, named, postfix, dovecot, dockerd, containerd, cron, rsyslogd,ServerGuard自身
- Windows: System, smss.exe, csrss.exe, services.exe, lsass.exe, svchost.exe, w3svc, sqlservr.exe, mysqld.exe, postgres.exe, redis-server.exe, php-cgi.exe, nginx.exe,ServerGuard自身
**学习模式**:初次部署默认只观察、只告警,不动手。建议先跑 1-2 天,确认告警合理后关闭学习模式,再让它自动修复。
### 📊 实时监控面板
- **健康评分**:0-100 分动态评分(性能 + 可用性 + 安全),趋势追踪,点击看扣分明细
- **系统指标**:CPU、内存、磁盘(多盘)、网络流量、负载、进程数、僵尸数
- **网站监控**:HTTP 探针 + 连续失败2次标记宕机 + 延迟追踪
- **API 监控**:P50/P95/P99 百分位 + 错误率
- **数据库监控**:MySQL/PostgreSQL/Redis/MongoDB 连接状态 + Redis PING 深度检测
- **安全监控**:WebShell检测 + Cron篡改 + 文件完整性 + 恶意进程 + SSH暴力破解
- **日志分析**:自动扫描日志内容中的 panic/segfault/OOM/disk full 等错误模式
- **告警中心**:所有告警持久化到数据库,可确认/解决
- **审计日志**:每次自动修复操作都有完整记录
- **深色模式 + Ctrl+K 快捷命令面板**:17 个页面模糊跳转 + 快捷操作
### 🔒 安全监控(8项检查)
| 检查项 | 说明 | 自动处理 |
|---|---|---|
| SSH暴力破解 | 5min内30次失败登录 | 自动封禁IP(不封私有IP) |
| 挖矿/木马进程 | 30+种已知恶意进程特征库 | 自动终止进程 |
| 可疑目录进程 | 从/tmp、/dev/shm运行可执行文件 | 自动终止进程 |
| WebShell检测 | PHP文件30+特征 + 3000+ YARA规则 | 告警(只读不删) |
| Cron任务篡改 | 反弹shell/挖矿/base64等14种可疑模式 | 告警 |
| 文件完整性 | 14个关键系统文件哈希(/etc/passwd等) | 告警 |
| 文件篡改 | 用户监控的配置文件哈希变化 | 自动备份 + 告警 |
| 异地登录 | 异常地理位置的SSH登录 | 告警 |
### 📱 全渠道告警通知
| 渠道 | 说明 |
|---|---|
| **Server酱(微信)** | 免费,填一个Key就能推送到微信 |
| **钉钉机器人** | 支持 HMAC 签名验证 |
| **企业微信** | 群机器人 Webhook |
| **飞书** | 群机器人 Webhook |
| **邮件** | SMTP,支持 Gmail / QQ / 163 |
| **Slack** | Incoming Webhook |
| **Telegram** | Bot Token + Chat ID |
| **自定义 Webhook** | POST JSON 到你的接口 |
**告警分级路由**(减少噪音,重要的事才打扰你):
| 级别 | 邮件 | 微信/钉钉/飞书 | 数据库存档 |
|---|---|---|---|
| Critical/Fatal | ✅ 发送 | ✅ 发送 | ✅ |
| Error | ❌ | ✅ 发送 | ✅ |
| Warning | ❌ | ✅ 发送 | ✅ |
| Info | ❌ | ❌ | ✅ |
叠加智能收敛:抖动静默 + 同源合并 + 凌晨 P2/P3 延迟到早 8 点推送。
### 📋 每日巡检报告
每天早上 8 点(可配置),把过去 24 小时的服务器状况推到你手上:健康评分与趋势、资源峰值、网站存活性、证书到期清单、**磁盘容量预测**、未解决告警 Top5、自愈动作汇总(含成功率)、**重复问题根治建议**(同一告警 7 天内出现 3 次以上 → 提醒根因未除,别只救火)。支持面板在线预览、一键立即发送。
### 📈 Prometheus 集成
`GET /metrics` 输出标准 Prometheus 格式:健康评分、CPU/内存/磁盘、网站存活性、证书剩余天数、未解决告警数、维护窗口状态。可设置 token 保护。接入 Grafana 大盘零成本。
### 🛠️ 维护窗口
系统升级/迁移前开一个维护窗口:窗口期内**只监控告警、不执行任何自动修复**,避免"你刚停服务它又拉起来"。面板顶部常驻"维护中"横幅防止遗忘,到期自动恢复。
---
## 🆕 v0.3.0 能力清单(V4.0 — 根因链推理 + DevOps + 数据治理)
展开查看:APM-lite / 网络质量 / 故障知识库 / 智能报告 / 变更窗口推荐
#### Nginx 日志智能分析(APM-lite)
- **实时访问日志分析**:自动发现并解析 Nginx/Apache access.log,统计 PV/UV、错误率(4xx/5xx)、慢请求率(>1s)
- **热门 URI/IP/UA 排行**:快速定位高频请求路径、异常 IP 和爬虫流量
- **爬虫识别**:内置 20+ 爬虫 UA 正则库(Googlebot/Baidu/Bytespider 等),自动统计爬虫流量占比
- **异常告警**:错误率 >10%、慢请求率 >20%、爬虫流量 >50% 时自动告警
- **API**:`GET /api/apm/nginx` 获取最近分析结果,`POST /api/apm/nginx/analyze` 手动触发分析
#### MySQL/PostgreSQL 慢查询自治
- **慢查询日志采集**:自动发现并解析 MySQL slow log / PostgreSQL 日志,提取查询耗时、扫描行数、锁等待
- **查询指纹去重**:将 SQL 参数化后生成指纹,相同模式的查询自动聚合统计出现次数和平均耗时
- **智能优化建议**:检测全表扫描(扫描行数/返回行数 >100)、SELECT *、无 WHERE 条件、LIKE '%xxx' 前缀通配符、ORDER BY 无索引等常见问题,自动生成优化建议
- **严重级别分级**:high(>5s 或全表扫描)/ medium / low,面板直观展示
- **API**:`GET /api/apm/slow-query`、`POST /api/apm/slow-query/analyze`
#### Redis 大 Key / 热 Key 治理
- **自动大 Key 扫描**:定时执行 `redis-cli --bigkeys` 采样,识别 String >1MB、List/Hash/Set/ZSet >10000 元素的大 Key
- **内存占用分析**:对每个大 Key 调用 `MEMORY USAGE` 获取实际内存占用
- **拆分建议**:根据 Key 类型和大小给出针对性建议(Hash 分桶、分页、分片 Set、时间窗口 ZSet 等)
- **API**:`GET /api/apm/redis`、`POST /api/apm/redis/analyze`
#### 端到端网络质量地图
- **多目标探测**:自动 ping 网关/DNS(114/8.8.8.8)/百度/阿里云/GitHub 等目标,记录延迟(min/avg/max)和丢包率
- **路由跳数**:自动 traceroute/mtr 统计到每个目标的网络跳数
- **异常告警**:目标不可达、丢包 >50%、延迟 >500ms 时自动告警
- **API**:`GET /api/netquality`、`POST /api/netquality/probe`、`GET /api/netquality/targets`
#### 私有故障知识库
- **自动记录**:每次自动修复执行时,自动记录"症状 → 根因 → 修复动作 → 效果"到 SQLite 知识库
- **指纹去重**:相同症状的故障自动累加出现次数,避免知识库膨胀
- **相似检索**:新故障出现时,自动搜索历史相似故障的解决方案,提示历史修复经验
- **统计分析**:按来源模块统计故障分布,识别反复出现的根因
- **API**:`GET /api/knowledge`、`GET /api/knowledge/stats`、`GET /api/knowledge/search?symptom=xxx`
#### 运维日报/周报自动生成
- **周报增强**:每周一早 8:00 自动生成 Markdown 周报,包含健康评分趋势、资源峰值、故障统计、网站可用性、证书状态、安全发现、磁盘预测
- **日报增强**:每日巡检报告已包含根因分析、重复问题根治建议、磁盘容量预测
- **全渠道推送**:复用已有的通知渠道(微信/钉钉/飞书/邮件等)
- **API**:`GET /api/report/weekly`、`POST /api/report/weekly/send`、`GET /api/report/daily`、`POST /api/report/daily/send`
#### 智能变更窗口推荐
- **30 天负载分析**:按"周几 × 小时"分桶统计 CPU/内存均值和峰值,找出负载最低的时段
- **推荐理由**:"基于近 30 天 N 个采样点分析,负载最低的时段是周四 02:00-03:00(CPU 均值 12%,峰值 18%)"
- **备选时段**:提供 Top 5 最佳窗口,支持夜间优先筛选
- **API**:`GET /api/maintenance-window/recommend`
#### 故障复盘自动纪要生成
- **时间线还原**:自动读取故障期间的告警记录、修复动作、审计日志,按时间排序生成事件时间线
- **根因推测**:从监控数据中推测 CPU 峰值、内存 OOM、磁盘满等可能的根因
- **经验教训**:根据故障类型和修复结果自动生成经验教训和建议
- **一键推送**:面板点击即可生成复盘报告并推送到企业微信群
- **API**:`GET /api/report/postmortem?start=...&end=...`、`POST /api/report/postmortem/generate`
---
## 🆕 V4.0-V4.1 新增模块
展开查看:态势感知 / 数据治理 / DevOps 闭环 / 反弹Shell / 源码审计 / 实时挂马拦截 / 幽灵文件 / 进程爆炸
#### 全局态势感知引擎
系统级"大脑"——根据资源状态和威胁态势动态调节 Agent 自身行为:
- **5 档态势**:空闲(Idle)→ 常规(Normal)→ 繁忙(Busy)→ 危急(Crisis)→ 战时(Combat)
- **空闲窗口**:CPU/内存宽裕时安全扫描加密跑、预测类任务提前执行
- **战时模式**:检测到持续攻击信号后安全扫描提频 3 倍,非安全任务全部让路;攻击平息后自动退出
- **自动处置偏置**:战时对低风险安全动作自动提级(攻击不等人),危急时只告警不动作
#### 数据治理守护(V4.1)
9 项数据库安全与治理能力:
- **数据库自动备份管家**:定时 mysqldump/pg_dump,备份保留策略,备份文件权限校验
- **敏感数据泄露扫描**:扫描数据库中的明文密码、身份证、手机号等敏感信息
- **大表增长预警**:监控表大小增长趋势,超阈值告警并给归档建议
- **备份完整性校验**:定期验证备份文件可恢复性
- **数据库死锁自动猎杀**:检测长时间死锁并自动终止死锁进程
- **连接池泄漏诊断**:检测 Sleep 连接过多并定位来源进程(MySQL 连接按 Host 分组统计)
- **缓存雪崩预防器**:监控 Redis 大 Key 过期时间分布,防止同时批量过期
#### DevOps 守护(V4.0)
8 项 DevOps 闭环能力:
- **Git Webhook 部署守护**:接收 GitHub/Gitee Webhook,自动拉取部署
- **环境一致性漂移检测**:对比多环境配置差异,发现配置漂移
- **构建产物自动清理**:定时清理 CI/CD 构建目录中的旧产物
- **定时任务死锁检测**:检测 cron 任务冲突和长时间未执行的定时任务
- **批处理作业守护**:监控定时批处理任务执行状态,失败自动告警
- **文件传输守护**:监控重要文件传输任务的完成状态
- **第三方 API 健康度**:定时检测关键第三方 API 可用性
#### 反弹 Shell 检测
检测服务器上运行的可疑反弹 Shell 进程:
- `bash -i >& /dev/tcp/` 类特征匹配
- Python/Perl 一行反弹 Shell 模式
- socat/ncat 反弹连接
- 进程异常外部端口连接(排除内网 IP 后告警)
#### 源码漏洞审计(W12-W18)
静态分析 PHP/JSP/Python/Node 源码中的安全漏洞:
- SQL 注入漏洞(用户输入拼接 SQL)
- XSS 跨站脚本漏洞(未转义输出)
- 文件上传漏洞(未校验文件类型)
- 命令注入漏洞(用户输入拼接系统命令)
- 路径遍历漏洞(用户输入拼接文件路径)
- 不安全的反序列化
- SSRF 服务端请求伪造
- 硬编码凭证检测
#### 实时挂马拦截
定时轮询 Web 目录文件变更,检测到新增可疑文件时自动隔离 + 告警:
- 新增 PHP/JSP/ASP 文件自动扫描恶意特征
- 已知文件的 mtime 变更触发重新扫描
- 可疑文件自动移入隔离目录(可恢复)
- 兼容无 inotify 的环境(轮询模式)
#### 幽灵文件检测
"已删除但句柄未释放"的隐形空间杀手:
- 检测 `/proc/*/fd` 中指向已删除文件的句柄
- 识别 Java/Python 进程持有已删除日志文件句柄的场景
- 计算幽灵文件实际磁盘占用
- 告警并建议重启对应进程释放句柄
#### 进程爆炸检测(A6)
防止程序无限循环启动大量进程实例耗尽系统资源:
- 按进程名 + 命令行分组统计
- 同一程序超过 30 个实例 → 触发进程爆炸告警
- 保留最早启动的 3 个进程,SIGTERM 终止多余实例
- 完整安全检查链(白名单/宝塔保护/Kill 预算/熔断器)
#### MySQL 连接耗尽定位
增强 MySQL 连接数检测,按来源 Host 分组统计:
- 查询 `information_schema.processlist` 按 Host 分组
- 显示 Top 5 来源 IP 和连接数
- 单个来源占用超过 50% 连接时给出强提示
- 与进程爆炸检测联动:定位是哪个程序耗尽了连接池
---
## 🆕 v0.1.0 能力清单
展开查看:证书守护 / 安全防护 / 攻击预警 / 漏洞扫描 / 存储生命周期 / sgctl
#### 证书守护增强
- **错峰续期**:`staggeredDeadline = notAfter - 14d + rand(0,7d)`,避免集中续期触发 ACME 限流
- **多 CA 降级链**:Let's Encrypt → ZeroSSL → TrustAsia,任一 CA 失败自动切换下一个
- **失败队列重试**:续期失败入队列,指数退避重试(`24h * 2^retryCount`,最多 5 次)
- **续期后验证**:自动 reload Nginx/Apache + HTTPS 探测验证新证书生效,失败自动回滚
#### 安全防护增强
- **渐进式封禁**:首次→限速,5min 内 5 次→短期 1h,封禁期间再攻击→升级 24h
- **SSH 失联紧急回滚**:封禁后 5s 检测 SSH 连接=0 且无法 ping 网关→自动清除所有 iptables 规则
- **封禁振荡熔断器**:10min 内解封 3 次自动暂停封禁 1h,防止反复封禁/解封
- **Kill 后系统评估**:Kill 前记录系统快照,5min 后对比,系统更差则触发紧急停止
#### 攻击预警增强
- **攻击关联引擎**:5min 窗口内同源 IP 跨模块事件聚合打分,生成攻击画像
- **周期性攻击识别**:自相关函数检测周期性攻击模式(periodic/burst/sustained)
- **分级联动响应**:置信度>0.8 联动封禁 1h,>0.5 联动限速,否则仅记录
- **低速慢攻击检测**:per-IP 请求速率滑动窗口,检测"持续低速率但模式异常"
#### 漏洞扫描增强
- **CVE 实时监控**:每 6 小时自动从 NVD(美国国家漏洞数据库)拉取近 7 天的新 CVE,与本机已安装的 Nginx/OpenSSL/OpenSSH/MySQL/Redis 等软件版本交叉匹配,发现真正影响本机的漏洞立即告警(严重漏洞 P0 级告警),不自动升级,生成修复建议
- **安全补丁检测**:自动检查系统待安装的安全补丁(CentOS/RHEL 用 `dnf/yum updateinfo --security`,Debian/Ubuntu 用 `apt list --upgradable` 过滤 security 源),面板直观展示补丁列表和严重级别,支持手动触发检查
- **Dashboard 安全更新卡片**:有漏洞或补丁时自动显示提醒卡片,按严重级别颜色区分(红色=严重/高危,橙色=重要),点击可查看 CVE 详情链接
- **YARA webshell 检测**:加载 3000+ 特征规则集,扫描 PHP/JSP/ASP 文件
- **依赖漏洞扫描**:解析 composer.lock / requirements.txt / package-lock.json / pom.xml / go.mod,匹配 OSV 数据库
- **CIS Benchmark 合规**:检查 SSH 配置、系统用户、文件权限、内核参数,输出合规报告
#### 存储与数据生命周期
- **差异化保留策略**:指标原始 1h / 聚合 90d / 告警 180d / 审计 WORM 365d+ / 攻击事件 90d / 画像 365d
- **磁盘水位联动**:磁盘>80% 加速降采样,>90% 删冷数据只保留 7 天
- **DB 体积硬约束**:超过 200MB 拒绝写入新指标并触发告警
#### 告警推送增强
- **P0 告警升级**:5min 未确认→升级全渠道再推送,30min 未确认→通知第二联系人
- **时区感知延迟**:凌晨 0-6 点 P2/P3 告警入延迟队列,8 点统一推送
#### sgctl 命令
```bash
sgctl import monit|supervisor|systemd|baota|pm2 # 从其他工具配置导入
sgctl db vacuum|cleanup # 数据库维护
sgctl export metrics|alerts|audit # 数据导出
sgctl security-check # 依赖漏洞 + CIS 合规自检
sgctl config-version tag|export|import # 配置版本管理
```
---
## 支持的操作系统
| 操作系统 | 架构 | 状态 |
|---|---|---|
| CentOS 7/8 | x86_64 | ✅ 完全支持 |
| Kylin V10 | x86_64 / aarch64 | ✅ 完全支持 |
| Ubuntu 20.04/22.04 | x86_64 / aarch64 | ✅ 完全支持 |
| Debian 10/11/12 | x86_64 | ✅ 完全支持 |
| Windows Server 2012/2016/2019/2022 | x86_64 | ✅ 完全支持 |
| Rocky Linux / AlmaLinux | x86_64 | ✅ 完全支持 |
**资源占用**:
- 内存:~30-50MB(限制上限80MB)
- CPU:< 1%(限制上限5%)
- 磁盘:二进制16MB + 数据库(通常<100MB,超200MB自动拒写并告警)
---
## 首次使用指南
### 1. 修改密码
登录后 → 系统设置 → 面板密码 → 修改默认密码
### 2. 配置告警通知
系统设置 → 通知设置 → 填入推送渠道。
最简单的 **Server酱**(免费推到微信):访问 https://sct.ftqq.com/ 扫码登录 → 获取 SendKey → 填入设置页 → 保存 → 发送测试通知。
### 3. 添加守护进程
守护管理 → 添加守护 → 选择模板(Nginx/MySQL/Redis/SSH/IIS)→ 添加。挂了自动重启。
### 4. 添加网站监控
网站监控 → 扫描服务器(自动发现 Nginx/Apache/IIS/宝塔站点)→ 一键导入。或手动填 URL,每 30 秒 HTTP 探针检测。
### 5. 查看健康评分
仪表盘 → 健康评分 + 扣分明细。评分规则:
- CPU > 70% 扣5分,> 80% 扣10分,> 90% 扣15分
- 内存 > 70% 扣5分,> 80% 扣10分,> 90% 扣15分
- 磁盘 > 80% 扣5分,> 90% 扣10分,> 95% 扣15分
- 网站宕机 每个扣15分(上限40分)
- 未解决告警 每条扣5分(上限30分)
---
## 自愈规则说明
内置规则开箱即用:
| 规则 | 触发条件 | 执行动作 | 学习模式 |
|---|---|---|---|
| CPU超限保护 | 单进程CPU > 80% 持续60s(连续3次触发) | 降权 → SIGTERM → SIGKILL | ✅ 默认只告警 |
| 内存泄漏拦截 | 进程内存 > 30% | 快照 → 重启 | ✅ 默认只告警 |
| 磁盘空间守护 | 磁盘 > 95% | 清理旧日志压缩文件 | ❌ 直接执行(只清30天+的.gz/.1/.old) |
| 日志暴涨防护 | 单文件 > 500MB | 轮转压缩 | ❌ 直接执行(排除web服务日志) |
| SSH暴力破解 | 5min内30次失败 | 渐进式封禁IP(限速→1h→24h) | ❌ 直接执行(不封私有IP) |
| 进程爆炸拦截 | 同一程序 > 30个实例 | 保留3个,SIGTERM终止多余 | ✅ 默认只告警 |
| SSL证书续期 | 剩余 < 14天(错峰触发) | 多CA降级续期 → reload → 验证 | ❌ 直接执行 |
| 僵尸进程清理 | 僵尸 > 10个 | SIGCHLD清理 | ✅ 默认只告警 |
| 依赖链隔离 | 上游服务宕机 | 标记下游为 isolated,暂停监控 | ❌ 直接执行 |
| 依赖链恢复 | 上游服务恢复 | 按拓扑序逐个拉起下游 | ❌ 直接执行 |
### 🧠 智能自动检测
启动时自动检测并守护正在运行的服务,无需手动配置:
- **自动守护(Linux)**:Nginx、Apache、MySQL、MariaDB、Redis、PostgreSQL、MongoDB、PHP-FPM、SSH、宝塔面板、Pure-FTPd、vsftpd
- **自动守护(Windows)**:IIS、MySQL、Redis、Nginx、PostgreSQL
- **自动检测数据库**:MySQL(3306)、PostgreSQL(5432)、Redis(6379)、MongoDB(27017) — 端口探测 + Redis PING 深度检测
- **自动监控系统文件**:/etc/passwd、/etc/shadow、/etc/sudoers、sshd_config、crontab 等 14 个关键文件
- **自动扫描Web根目录**:/www/wwwroot、/var/www/html、/var/www、/usr/share/nginx/html、/home/wwwroot
### 安全控制
安全控制页面提供:
- **紧急停止**:一键暂停所有自动修复(只监控不操作)
- **Kill预算**:限制每小时/每天最多杀多少进程
- **熔断器**:某类操作连续失败3次自动暂停(防止越修越坏)
- **白名单**:永远不会被杀的系统进程列表
- **操作记录**:最近24小时所有自动修复操作的详细日志
---
## 常用运维命令
```bash
# 查看服务状态
systemctl status serverguard-agent
# 重启服务
systemctl restart serverguard-agent
# 查看实时日志
journalctl -u serverguard-agent -f
# 修改配置
vim /opt/serverguard/config.yaml
systemctl restart serverguard-agent
# 升级版本
sudo cp serverguard-agent /opt/serverguard/serverguard-agent
sudo chmod +x /opt/serverguard/serverguard-agent
sudo systemctl restart serverguard-agent
# 卸载
sudo bash /opt/serverguard/uninstall.sh
```
---
## 架构设计
```
┌─────────────────────────────────────────────────────────┐
│ Web 面板 (Vue 3 + Element Plus) │
│ 仪表盘 │ 告警中心 │ 守护管理 │ 证书管理 │ 网站监控 │ 设置 │
└──────────────────────┬──────────────────────────────────┘
│ HTTP API (Gin)
┌──────────────────────┴──────────────────────────────────┐
│ Agent 核心 (Go) │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌─────────┐ │
│ │ Collector │ │ Guards │ │ RuleEng │ │ Decider │ │
│ │ 指标采集 │→│ 守护模块 │→│ 规则匹配 │→│ 安全决策 │ │
│ └──────────┘ └──────────┘ └──────────┘ └────┬────┘ │
│ │ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───┴─────┐ │
│ │ Executor │ │ Safety │ │ EventBus │ │Notifier │ │
│ │ 动作执行 │←│ 安全管理 │ │ 事件总线 │←│ 告警通知 │ │
│ └──────────┘ └──────────┘ └──────────┘ └─────────┘ │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌─────────┐ │
│ │ Probe │ │ CertGuard│ │Discovery │ │ Storage │ │
│ │ 网站探针 │ │ 证书守护 │ │ 站点发现 │ │ SQLite │ │
│ └──────────┘ └──────────┘ └──────────┘ └─────────┘ │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌─────────┐ │
│ │ Database │ │ Security │ │ Log │ │ Anomaly │ │
│ │ 数据库监控│ │ 安全检测 │ │ 日志分析 │ │ 基线检测│ │
│ └──────────┘ └──────────┘ └──────────┘ └─────────┘ │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌─────────┐ │
│ │Correlate │ │ Forecast │ │RootCause │ │ VulnScan│ │
│ │ 告警收敛 │ │ 容量预测 │ │ 根因分析 │ │ 漏洞/CIS│ │
│ └──────────┘ └──────────┘ └──────────┘ └─────────┘ │
│ │
│ ┌──────────┐ │
│ │FeedMon │ 每6h拉取NVD最新CVE+检查安全补丁 │
│ │ 漏洞监控 │ 匹配本机软件→告警+修复建议 │
│ └──────────┘ │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌─────────┐ │
│ │ NginxApm │ │ SlowQuery│ │ RedisApm │ │NetQualit│ │
│ │日志分析 │ │ 慢查询 │ │ 大Key │ │网络质量 │ │
│ └──────────┘ └──────────┘ └──────────┘ └─────────┘ │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │Knowledge │ │ WindowRec│ │PostMortem│ V3.9新增 │
│ │故障知识库│ │变更窗口 │ │复盘报告 │ APM+知识 │
│ └──────────┘ └──────────┘ └──────────┘ │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌─────────┐ │
│ │ Posture │ │DataGovern│ │ DevOps │ │RevShell │ │
│ │态势感知 │ │数据治理 │ │DevOps │ │反弹Shell│ │
│ └──────────┘ └──────────┘ └──────────┘ └─────────┘ │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌─────────┐ │
│ │CodeAudit │ │RealtimeG │ │GhostFile │ │ProcExplod│ │
│ │源码审计 │ │实时挂马 │ │幽灵文件 │ │进程爆炸 │ │
│ └──────────┘ └──────────┘ └──────────┘ └─────────┘ │
└─────────────────────────────────────────────────────────┘
```
**数据流**:
```
Collector采集指标 → Guards检测异常 → RuleEngine匹配规则
→ Decider执行11点安全检查 → Executor执行修复动作(同步根因快照)
→ ObservePostAction观察60秒 → EventBus分发事件
→ Notifier收敛降噪后发送微信/钉钉通知 → Storage持久化到SQLite
→ Web面板实时展示
```
---
## 技术栈
| 组件 | 技术 |
|---|---|
| Agent | Go 1.25+,gopsutil v3,Gin,SQLite,YARA(纯 Go) |
| 前端 | Vue 3 + TypeScript + Element Plus + Vite |
| 嵌入 | 前端编译后通过 Go embed 嵌入二进制,单文件部署 |
| 依赖 | 零运行时依赖,单二进制文件,不需要安装任何东西 |
> 📋 **变更日志**:v0.3.0 新增根因链推理引擎 + DevOps 闭环 + 数据治理 + 幽灵文件检测 + 反弹Shell检测 + 源码漏洞审计 + 实时挂马拦截 + 进程爆炸检测 + MySQL连接耗尽定位 + 全局态势感知引擎(V4.0-V4.1),详见上方能力清单。v0.1.0 功能变更记录见 [docs/CHANGELOG_v3.8.md](docs/CHANGELOG_v3.8.md)
---
## 🗺️ Roadmap
- [ ] Helm Chart / K8s DaemonSet 部署
- [ ] 插件体系(自定义检测与自愈规则)
- [ ] Hub 多租户 / RBAC 完善
- [ ] 英文文档
---
## 🤝 参与贡献
欢迎任何形式的贡献!
1. Fork 本仓库,创建你的分支:`git checkout -b feature/your-feature`
2. 提交变更:`git commit -m "feat: add your feature"`
3. 推送分支:`git push origin feature/your-feature`
4. 提交 [Pull Request](https://github.com/suoten/ServerGuard/compare)
提交 Issue 前请先搜索是否已有重复;报告 Bug 请附上操作系统版本、Agent 版本和相关日志。安全漏洞请勿公开 Issue,请联系 maintainer(见下方社区)。
## 💬 社区与交流
- 🐛 问题反馈:[GitHub Issues](https://github.com/suoten/ServerGuard/issues) / [Gitee Issues](https://gitee.com/suoten/serverguard/issues)
- 💡 功能建议与讨论:[GitHub Discussions](https://github.com/suoten/ServerGuard/discussions)
- ⭐ 觉得有用的话,点个 Star 就是最大的支持——更新第一时间收到通知!
## ❤️ 赞助支持
如果 ServerGuard 帮你省下了凌晨爬起来救服务器的次数,欢迎请作者喝杯咖啡 ☕
---
## FAQ
**Q: ServerGuard 会影响服务器性能吗?**
A: 不会。Agent 内存限制80MB,CPU限制5%,采集间隔5秒。实测内存占用30-50MB,CPU < 1%。基线统计和磁盘预测都是一条 SQL 聚合完成,不加载全量时序到内存。
**Q: ServerGuard 会误杀进程吗?**
A: 不会。五层安全机制 + 三级安全策略:
1. 系统进程白名单(45+个进程永不杀:nginx/mysql/bt-panel/php-fpm/sshd等)
2. Kill预算限制(每小时最多15次)
3. 熔断器(连续失败3次暂停)
4. 级联防护(操作后系统变差则停止)
5. 学习模式(可先只观察不操作)
**三级安全策略**:
- ✅ 自动执行:OOM杀非白名单进程、磁盘清理旧日志、封IP(不封私有IP)、杀木马/挖矿进程、证书续期、服务重启
- ⚠️ 只告警:网络异常、Swap过高、WebShell检测、Cron篡改、文件完整性变化
- 🚫 永不触碰:杀nginx/IIS/MySQL/宝塔、删/tmp、删/www、yum/apt clean、重启NetworkManager
**Q: 自动重启会不会把能跑的服务搞挂?**
A: 有三道闸:① 重启前自动配置预检(`nginx -t`/`apachectl configtest`/`sshd -t`),配置有错拒绝重启——能跑就不动;② 支持平滑重载的服务优先 reload,不断开现有连接;③ 反复重启不恢复会自动放弃并附诊断报告(端口占用者、服务日志尾部),不会机械重试把系统拖垮。
**Q: "智能"是真 AI 吗?**
A: 不是大模型,是确定性统计算法:基线检测用"周几×小时"分桶的均值/标准差(3σ 偏离),磁盘预测用 14 天日均值的最小二乘线性回归,告警收敛用滑动窗口计数,根因分析用启发式规则。优点是可解释、零依赖、不占资源、不会幻觉——每个告警都能说清"为什么触发"。
**Q: 数据存在哪里?重启会丢失吗?**
A: SQLite 数据库(/var/lib/serverguard/serverguard.db),重启不丢失。网站监控配置也持久化,重启自动恢复。
**Q: Windows Server 支持哪些功能?**
A: 全部支持。Windows上用 `sc query` 检测服务、`net start` 重启服务、`netsh` 封禁IP、清理Temp目录,功能与Linux完全对等。
**Q: 可以监控多台服务器吗?**
A: 支持多机集中管控(Hub)。每台服务器装一个 Agent,通过 Hub 统一纳管:聚合服务器列表、查看跨机告警、集中下发命令(见"多机集中管控"章节)。单机部署模式完全兼容。
---
## Star History
[](https://star-history.com/#suoten/ServerGuard&Date)
---
## License
本项目基于 [Apache License 2.0](LICENSE) 开源。
Copyright © 2026 硕腾网络 (Suoten Network)