Grafana + Prometheus:把服务器状态变成一张能看懂图

admin 开源软件 2026-10-24 7 0

两个组件分工明确: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 的几个实用面板

  1. 单值面板:当前 CPU/内存/磁盘,一眼看全局;
  2. 时间序列:看趋势,排查「什么时候开始变慢」;
  3. 表格 + 阈值着色:多台机器横向对比;
  4. 告警列表:把正在触发的告警放在首页顶部。

社区有大量现成面板模板可以直接导入,不用从零拼。

六、和轻量监控的区别

站内已经介绍过 Uptime Kuma——它解决的是「服务能不能访问」,一分钟探一次,出问题立刻通知。这套组合解决的是「资源用得怎么样」,看的是趋势。

两者不冲突:一个盯可用性,一个盯性能。先用前者,服务稳定了再上后者。

七、别把它当奢侈品

如果你的服务器只有一两个服务,装这套确实偏重(两个容器 + 一个数据库级别的存储)。但只要出现过一次「莫名变慢」,你就会庆幸有历史数据可查——没有基线,任何优化都是猜。

轻量监控见 Uptime Kuma;通知渠道见 Ntfy。

相关阅读

评论

访问统计