暴涨秒级抓现场
1 秒采样 + 滑动窗口阈值判定,CPU/内存越线瞬间抓取 top、/proc、火焰图、goroutine/heap,无需人守在终端前。
hawk 是一款 Linux 服务器 CPU/内存暴涨与泄漏自动诊断守护进程。 1 秒采样,异常瞬间抓取现场,直接告诉你是哪个进程、哪个服务、哪一行代码。
# CPU 越阈值触发,hawk 自动抓栈并提取最热函数
[W] pid=1659 service=eta_api TRIGGER process_cpu sys_cpu=95.2 ...
[W] pid=1659 service=eta_api hotspot(cpu): eta_api/services.(*Calc).Run services/calc.go:88 flat 78.3%
从暴涨抓现场到泄漏趋势判定、系统预警、安全查杀,全部内置于单个二进制,无外部服务依赖。
1 秒采样 + 滑动窗口阈值判定,CPU/内存越线瞬间抓取 top、/proc、火焰图、goroutine/heap,无需人守在终端前。
Go 走 pprof -lines、Python 走 py-spy、Native 走 gdb/pstack,直接给出「最热函数 + 文件:行号」,写进日志、告警与 Web。
对已登记服务做长时窗口最小二乘线性回归,斜率超阈值且 R² 达标即判为疑似泄漏,Web 概览标红预警。
纯 /proc·/sys 解析 CPU/内存/磁盘/网络/TCP/句柄/OOM,内置可改阈值,告警防抖 + 冷却,低开销不 fork。
启发式识别 xmrig/kinsing 等特征、矿池连接、/tmp 可执行、伪装内核线程、ld.so.preload 注入等,防御用途。
加载 .hdb/.hsb/.ndb 做哈希 + 特征匹配,无需 ClamAV 进程;配套 hawkdb 从公开来源更新病毒库。
钉钉(支持加签)、企业微信、SMTP 邮件、通用 Webhook。邮件正文附带自动生成的根因假设与修复步骤。
go:embed 打包进单二进制,离线无 CDN。实时折线、泄漏标红、事件详情(火焰图/栈)、小时报告、系统与安全页签。
每小时综合报告可在线浏览/手动生成;支持通过 rsync over SSH 将两节点日志汇聚到中心节点统一分析。
前端与运行时全部内嵌,systemd 托管。核心采集不调 shell、不 fork,缺少可选外部工具时自动降级不影响启动。
常态低开销采样,异常态高精度取证,全程自动。
纯读 /proc·/sys 采集系统与进程指标,滑动窗口比对 CPU/内存阈值,配合冷却与告警防抖,避免抖动误报。
并发采集 top / /proc 快照 / IO / 网络,并按语言选取工具生成 CPU 火焰图、goroutine、heap、native 栈等取证文件。
从 profile/栈提取最热函数与文件:行号,按「事件×语言×热点×profile×泄漏趋势」生成根因假设与处置步骤 repair.md。
写入按天轮转的 monitor.log 与现场目录,推送钉钉/企业微信/邮件/Webhook,Web 面板可回溯全部事件与报告。
meta.jsonl # 触发指标 + 嫌疑PID + 语言 + 服务名 + 状态
system.txt top.txt io.txt net.txt
proc-1659.txt # /proc 快照
threads-1659.txt
go-1659-cpu.svg # Go: CPU 火焰图
goroutine.txt heap.svg mutex.txt
repair.md # 自动生成的修复报告
net/http/pprof(绑 127.0.0.1),并在配置的 go_pprof_targets 登记;未开启则自动走 perf record + FlameGraph 兜底。详见
部署文档。
开箱即用的发行包,内含 hawk 二进制、配置模板、安装脚本、systemd 服务与全套文档。当前版本 v1.0.0。
sha256sum -c SHA256SUMS.txt 核对。
无预编译包需要的架构?可自行交叉编译:bash scripts/package.sh v1.0.0。
# 上传后解压
tar -xzf hawk-v1.0.0-linux-amd64.tar.gz
cd hawk-v1.0.0-linux-amd64
# 一键安装:依赖 + 二进制 + 配置 + systemd
sudo bash scripts/install.sh
# 扫描运行中的进程,自动登记到 config.yaml
sudo bash scripts/gen-services.sh
# 按需编辑:go_pprof_targets / notify / web 等
sudo vim /etc/hawk/config.yaml
sudo systemctl start hawk
sudo systemctl status hawk
# 实时日志(两种)
sudo journalctl -u hawk -f
sudo tail -f /var/log/hawk/monitor.log
# config.yaml
web:
enabled: true
addr: "0.0.0.0:8088" # 对外务必配 auth/防火墙
auth:
enabled: true
username: "admin"
password: "改成强密码"
http://<addr>,即可看到概览、系统指标、安全、事件、报告五个页签。