node exporter + prometheus + alertmanager 组合实现零脚本、无数据库的快速监控:node exporter 暴露服务器指标,prometheus 拉取存储并执行规则,alertmanager 负责通知;通过配置 targets、rules 和告警阈值,可精准触发 cpu、内存等告警。

直接上手装好就能用,重点是 Node Exporter + Prometheus + Alertmanager 这套组合,不用写脚本、不依赖数据库,部署快、规则清晰、告警准。
装好数据采集器:Node Exporter
它负责把服务器的 CPU、内存、磁盘、网络等原始指标暴露成 HTTP 接口,Prometheus 才能拉取。
- 下载最新稳定版(如 v1.6.1),解压后把
node_exporter二进制文件放进/usr/local/bin/ - 创建专用用户:
sudo useradd -rs /bin/false node_exporter - 用 systemd 管理服务:写一个
/etc/systemd/system/node_exporter.service,确保监听0.0.0.0:9100 - 启动并设为开机自启:
sudo systemctl daemon-reload && sudo systemctl enable --now node_exporter - 验证:访问
http://服务器IP:9100/metrics,能看到一堆以node_cpu_seconds_total、node_memory_MemAvailable_bytes开头的指标
配好监控中枢:Prometheus Server
Prometheus 是核心,它定时从 Node Exporter 拉数据、存时序库、执行告警规则。
- 下载 Prometheus 二进制包(如 v2.47.0),解压后编辑
prometheus.yml - 在
scrape_configs下加一个 job:
static_configs:
- targets: ['localhost:9100']
- 启动 Prometheus:
./prometheus --config.file=prometheus.yml --storage.tsdb.path=data/ - 访问
http://服务器IP:9090/targets,确认状态是 UP;访问http://服务器IP:9090/graph,输入100 - (avg by(instance)(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)能查到当前 CPU 使用率
加上告警逻辑:Alertmanager + 告警规则
光有数据不够,得让系统“说话”。Alertmanager 不负责判断,只管发通知;判断逻辑写在 Prometheus 的 rules 文件里。
- 在
prometheus.yml中启用规则文件:rule_files: ["alerts.yml"] - 新建
alerts.yml,写几条基础告警(示例):
- name: server_alerts
rules:
- alert: HighCPUUsage
expr: 100 - (avg by(instance)(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 85
for: 3m
labels:
severity: warning
annotations:
summary: "CPU 使用率过高"
description: "实例 {{ $labels.instance }} CPU 使用率持续 3 分钟超过 85%"
- alert: MemoryUsageHigh
expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100 > 90
for: 2m
labels:
severity: warning
- 下载并运行 Alertmanager,配置邮件或钉钉 Webhook(参考其
alertmanager.yml) - 在 Prometheus 配置中指向 Alertmanager:
alerting: alertmanagers: - static_configs: - targets: ['localhost:9093']
验证和调阈值
告警不是设完就完事,得看它是否真能触发、是否太敏感或太迟钝。
- 故意制造负载测试:运行
stress-ng --cpu 4 --timeout 300s模拟高 CPU,观察是否触发HighCPUUsage - 查看 Alertmanager UI(
:9093)确认告警已接收、未被抑制 - 根据实际业务节奏调整
for时长和阈值:比如生产数据库服务器 CPU 阈值可设为 75%,而跳板机可放宽到 90% - 内存告警建议用
MemAvailable而非MemFree,更反映真实可用内存











