Grafana + Prometheus:把服务器状态变成一张能看懂图
两个组件分工明确:Prometheus 负责采集和存储时序数据,Grafana 负责展示。前者像数据库,后者像仪表盘。
一、最小可用组合
services:
prometheus:
image: prom/prometheus:latest
restart: unless-stopped
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- ./data:/prometheus
ports: ["9090:9090"]
node-exporter:
image: prom/node-exporter:latest
restart: unless-stopped
pid: host
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- '--path.procfs=/host/proc'
- '--path.sysfs=/host/sys'
- '--path.rootfs=/rootfs'
grafana:
image: grafana/grafana:latest
restart: unless-stopped
ports: ["3000:3000"]
volumes: ["./grafana:/var/lib/grafana"]
prometheus.yml 里加一行采集目标:
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['node-exporter:9100']
二、先看四个指标,别贪多
| 指标 | 看什么 | 异常信号 |
|---|---|---|
| CPU 使用率 | 按核看,不看总量 | 单核长期 100% 往往是某个进程死循环 |
| 内存可用量 | 看趋势而非瞬时值 | 缓慢单调下降 = 泄漏 |
| 磁盘使用率 | 加增长率告警 | 按当前速度 7 天内会满 |
| 磁盘 IO 等待 | iowait | 持续高说明瓶颈在盘不在 CPU |
这四个能覆盖八成「服务器变慢」的问题。其余的(网络、连接数、容器级指标)等真的需要时再加。
三、告警不要一上来就配
新手常见做法是给每个指标配阈值告警,结果一天几十条通知,最后全部无视。合理的顺序是:先观察两周,看清每天的正常波动范围,再定阈值。
定阈值时的三条经验:
- CPU 不用绝对值,用「持续 5 分钟超过 90%」;
- 内存优先配「可用内存低于总量 10%」,而不是使用率;
- 磁盘用「预测耗尽时间小于 3 天」,比「使用率超 85%」更实用。
四、数据保留多久
默认保留 15 天。调整保留期要考虑磁盘:指标越多、粒度越细、占用越大。个人服务器一般 30 天足够,再长就该做降采样(把分钟级聚合成小时级)。
五、Grafana 的几个实用面板
- 单值面板:当前 CPU/内存/磁盘,一眼看全局;
- 时间序列:看趋势,排查「什么时候开始变慢」;
- 表格 + 阈值着色:多台机器横向对比;
- 告警列表:把正在触发的告警放在首页顶部。
社区有大量现成面板模板可以直接导入,不用从零拼。
六、和轻量监控的区别
站内已经介绍过 Uptime Kuma——它解决的是「服务能不能访问」,一分钟探一次,出问题立刻通知。这套组合解决的是「资源用得怎么样」,看的是趋势。
两者不冲突:一个盯可用性,一个盯性能。先用前者,服务稳定了再上后者。
七、别把它当奢侈品
如果你的服务器只有一两个服务,装这套确实偏重(两个容器 + 一个数据库级别的存储)。但只要出现过一次「莫名变慢」,你就会庆幸有历史数据可查——没有基线,任何优化都是猜。
轻量监控见 Uptime Kuma;通知渠道见 Ntfy。
相关阅读
版权声明:如无特殊标注,文章均为本站原创,转载时请以链接形式注明文章出处。







评论