首页软件使用教程Node Exporter服务器资源监控与PromQL查询教程

Node Exporter服务器资源监控与PromQL查询教程

2026-10-01 23

Node Exporter可以将Linux服务器的CPU、内存、磁盘和网络等资源指标暴露给Prometheus,再通过PromQL进行查询和分析。

本文整理Node Exporter常用监控指标及PromQL查询语句,适合用于Grafana服务器资源看板和基础故障排查。

一、监控目标

本文主要介绍以下监控内容:

  • CPU使用率。
  • 内存使用率。
  • 磁盘使用率。
  • 网络接收和发送流量。
  • Node Exporter采集状态。

整体数据链路如下:

Linux服务器 → Node Exporter → Prometheus → Grafana

Node Exporter负责采集服务器指标,Prometheus负责保存数据,Grafana负责将查询结果展示为图表。

二、验证Node Exporter服务

Node Exporter默认监听9100端口。

检查服务状态:

sudo systemctl is-active node_exporter

请求指标接口:

curl http://127.0.0.1:9100/metrics | head

如果能够看到类似以下指标内容,说明Node Exporter已经正常运行:

# HELP node_cpu_seconds_total Seconds the CPUs spent in each mode.
# TYPE node_cpu_seconds_total counter

Node Exporter服务器资源监控与PromQL查询教程

在Prometheus的Targets页面中,检查Node Exporter对应的node目标。

如果状态显示为UP,说明Prometheus能够正常采集Node Exporter指标。

Node Exporter服务器资源监控与PromQL查询教程

 

如果目标显示为DOWN,需要继续检查Node Exporter服务、9100端口和Prometheus配置。

三、查询CPU使用率

常用CPU使用率PromQL如下:

100 - (
  avg by (instance) (
    rate(node_cpu_seconds_total{mode="idle"}[5m])
  ) * 100
)

这条查询的计算逻辑如下:

  • node_cpu_seconds_total表示CPU各运行状态累计消耗的时间。
  • mode="idle"表示CPU处于空闲状态。
  • rate(...[5m])计算最近5分钟内的平均速率。
  • 使用100减去CPU空闲比例,得到CPU使用率。

执行查询时,avg by (instance)会按照服务器实例进行聚合,适合在多核服务器上查看整体CPU使用率。

不建议只关注瞬时CPU数值。服务器短时间出现高负载并不一定代表故障,可以结合5分钟或10分钟时间窗口观察趋势。

四、查询内存使用率

常用内存使用率PromQL如下:

(
  1 - (
    node_memory_MemAvailable_bytes
    / node_memory_MemTotal_bytes
  )
) * 100

其中:

  • node_memory_MemTotal_bytes表示服务器总内存。
  • node_memory_MemAvailable_bytes表示系统可以提供给应用使用的内存。
  • 用总内存减去可用内存,可以计算当前内存使用比例。

相比直接使用free指标,MemAvailable更适合用于估算系统当前可以分配给应用的内存。

如果内存使用率持续偏高,还需要继续检查:

  • 占用内存较高的进程。
  • Docker容器资源使用情况。
  • 数据库缓存和连接数。
  • 应用是否存在内存泄漏。
  • 系统日志中是否出现内存不足信息。

五、查询磁盘使用率

查看根目录磁盘使用率,可以使用:

(
  1 - (
    node_filesystem_avail_bytes{
      fstype!~"tmpfs|overlay|squashfs",
      mountpoint="/"
    }
    /
    node_filesystem_size_bytes{
      fstype!~"tmpfs|overlay|squashfs",
      mountpoint="/"
    }
  )
) * 100

这条查询通过文件系统类型和挂载点进行过滤:

  • 排除tmpfs临时文件系统。
  • 排除overlay容器文件系统。
  • 排除squashfs只读压缩文件系统。
  • 重点查看根目录/的使用情况。

如果服务器还挂载了独立数据盘、日志盘或数据库目录,应将对应挂载点加入单独的监控查询。

磁盘使用率过高时,应重点检查:

  • 网站和应用日志。
  • 数据库文件。
  • Docker镜像和容器数据。
  • Prometheus监控数据。
  • 临时文件和备份文件。

建议为磁盘使用率配置告警,避免磁盘写满后导致数据库停止、日志无法写入或应用无法正常运行。

六、查询网络流量

接收流量

rate(
  node_network_receive_bytes_total{device!="lo"}[5m]
)

发送流量

rate(
  node_network_transmit_bytes_total{device!="lo"}[5m]
)

其中:

  • node_network_receive_bytes_total表示网卡累计接收字节数。
  • node_network_transmit_bytes_total表示网卡累计发送字节数。
  • rate(...[5m])计算最近5分钟的平均速率。
  • device!="lo"用于排除本地回环网卡。

如果服务器有多个网络接口,可以按网卡名称进行区分:

rate(
  node_network_receive_bytes_total{
    device="eth0"
  }[5m]
)

实际网卡名称可能是eth0、ens3或其他名称,可以通过以下命令查看:

ip addr

网络流量图表的单位应设置为Bytes/sec或Bps,不要与bits/sec混淆。

七、检查Node Exporter采集状态

Prometheus提供up指标,可以检查采集目标是否正常:

up{job="node"}

返回值通常为:

1

表示Prometheus最近一次采集成功。

返回:

0

表示目标当前无法正常采集。

也可以直接查询所有目标状态:

up

在Grafana中,可以将该指标制作成状态面板,及时发现Node Exporter停止、端口不可访问或配置错误等问题。

八、在Grafana中展示服务器资源

服务器资源看板通常包含以下面板:

  • CPU使用率。
  • 内存使用率。
  • 根目录磁盘使用率。
  • 网络接收速率。
  • 网络发送速率。
  • Node Exporter采集状态。

Node Exporter服务器资源监控与PromQL查询教程

看板中的每个面板都对应一条或多条PromQL查询语句。

排查问题时,不要只查看图表结果,还应回到Prometheus中执行对应查询,确认:

  • 指标名称是否存在。
  • 标签筛选是否正确。
  • 时间范围是否合适。
  • 查询结果是否包含目标实例。
  • 数据采集间隔是否满足展示需求。

九、常见问题

问题一:Prometheus查不到Node Exporter指标

先检查指标接口:

curl http://127.0.0.1:9100/metrics

再检查服务状态:

sudo systemctl status node_exporter --no-pager

如果服务正常运行,但Prometheus仍然无法采集,需要检查Prometheus配置文件中的目标地址和端口。

问题二:Grafana面板没有数据

先确认Prometheus是否能够查询到数据:

curl "http://127.0.0.1:9090/api/v1/query?query=up"

如果Prometheus查询不到Node Exporter数据,应先处理采集链路,再检查Grafana数据源和面板配置。

问题三:磁盘指标数量太多

Node Exporter会采集多个文件系统,因此可能返回大量磁盘指标。

可以通过文件系统类型、挂载点和设备名称进行过滤,例如:

node_filesystem_avail_bytes{
  fstype!~"tmpfs|overlay|squashfs",
  mountpoint="/"
}

实际监控时,优先关注根目录、数据目录、日志目录和数据库所在挂载点。

问题四:CPU使用率与系统命令结果不一致

不同工具的统计时间窗口和计算方式可能不同。PromQL查询使用最近5分钟速率时,结果与top或其他命令的瞬时值出现差异属于正常情况。

排查时,应统一时间窗口,再对比相同实例和相同CPU范围的数据。

十、建议告警阈值

可以根据服务器规格和业务负载设置初始阈值:

  • CPU使用率连续10分钟超过85%。
  • 内存使用率连续10分钟超过90%。
  • 磁盘使用率持续超过85%。
  • Node Exporter连续2分钟无法被Prometheus采集。

示例规则中的阈值需要结合实际业务调整。数据库服务器、编译服务器和普通网站服务器的正常负载范围可能不同,不能直接使用同一组阈值。

十一、总结

Node Exporter是Linux服务器基础监控的重要组件。掌握CPU、内存、磁盘和网络流量的PromQL查询后,可以通过Prometheus验证数据,再由Grafana展示趋势和状态。

遇到服务器资源异常时,应按照以下顺序排查:

  1. 确认Node Exporter服务正常。
  2. 确认Prometheus Targets为UP。
  3. 在Prometheus中执行PromQL查询。
  4. 检查指标和标签是否正确。
  5. 最后检查Grafana数据源和面板配置。

这样,Grafana看板就不仅用于展示数据,也可以作为定位服务器问题的运维工具。

  • 广告合作

  • QQ群号:4114653

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。
服务器资源看板
下一篇:

已经没有下一篇了!

相关文章