跳到主要内容

认识

2024年12月24日
柏拉文
越努力,越幸运

一、认识


Node ExporterPrometheus 官方维护的一个指标采集工具,用于收集 操作系统和硬件级别 的监控指标。它可以运行在任何支持的主机上(如 LinuxWindows 等),将主机的硬件和操作系统数据暴露为 Prometheus 可抓取的格式(即 /metrics 接口)。Node Exporter 专注于主机的性能和状态指标,例如 CPU 使用率、内存使用情况、磁盘 I/O、网络流量等,是 Prometheus 监控系统中最常用的组件之一。Node ExporterPrometheus 生态系统中关键的组件,专注于主机层面的性能监控。结合 PrometheusGrafana,可以轻松实现操作系统级的可视化监控。

Node Exporter 提供了以下功能:

  1. 硬件相关指标: CPU 负载、内存使用情况(可用、已用、缓存、交换等)、磁盘使用和 I/O 性能、网络接口的流量统计(收发字节数、丢包率等)、文件系统的容量和状态

  2. 操作系统级指标: 系统启动时间、运行进程数量、系统负载平均值、虚拟内存和缓存的使用情况

  3. 可扩展性: 通过运行时参数启用/禁用特定的指标收集器(collector)。通过 Prometheus 的查询语言(PromQL)对数据进行过滤、计算和展示。

二、工作


Node Exporter 通过以下几个机制来采集、暴露和提供数据:

2.1 指标采集(Data Collection)

采集源Node Exporter 主要通过 /proc 文件系统 和 /sys 文件系统 等 Linux 系统提供的接口,来获取系统和硬件的实时指标。这些文件系统提供了大量关于系统状态、硬件性能、文件系统、网络接口等方面的信息。

监控指标

  • CPU:监控每个 CPU 核心的使用情况,包括用户态、系统态、空闲时间等。

  • 内存:监控系统内存的总量、使用量、剩余量、交换空间使用等。

  • 磁盘:监控磁盘的 I/O 活动、磁盘读写速率、磁盘空间使用情况等。

  • 网络:监控网络接口的吞吐量、数据包丢失、错误等。

  • 文件系统:监控文件系统的使用情况、挂载点等。

  • 硬盘:获取硬盘的健康状态、温度、SMART 状态等信息。

  • 系统负载:监控系统的负载、进程数、上下文切换等。

这些指标帮助运维人员全面了解宿主机的运行状态,及时发现潜在的瓶颈或问题。

2.2 数据暴露(Data Exposure)

HTTP APINode Exporter 会以 HTTP 协议暴露一个标准化的端点(默认是 http://<host>:9100/metrics),Prometheus 可以通过这个端点定期抓取系统性能数据。所有暴露的数据以 Prometheus 数据格式 输出,包含所有采集到的监控指标。

文本格式Node Exporter 输出的数据是文本格式,符合 Prometheus 的标准格式。每个指标都有一个唯一的名称和相关标签(labels),例如:

node_cpu_seconds_total{cpu="0",mode="idle"} 1234.56
node_memory_MemTotal_bytes 8589934592
node_disk_read_bytes_total{device="sda"} 123456789

这些指标可以被 Prometheus 定期拉取并存储到数据库中,进行后续的查询、分析和告警。

2.3 Prometheus 抓取(Scraping)

Prometheus 配置文件中指定 Node Exporter 的地址和端口(默认是 9100),然后它会定期抓取 Node Exporter 暴露的指标数据。

scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['<your-server-ip>:9100']

2.4 资源限制

Node Exporter 的主要优势是轻量级,它不依赖于任何特定的库或数据库,直接通过操作系统提供的接口进行数据采集。 它本身并不存储任何数据,只提供暴露指标的接口,所有的数据存储、查询和分析都交给 Prometheus 来完成。

三、cAdvisor Vs Node Exporter


cAdvisor: 专注于 容器级别的监控, cAdvisor 主要用于监控 Docker 容器 的资源使用情况,包括 CPU、内存、磁盘 I/O、网络等。它为每个容器提供详细的资源使用信息。

Node Exporter: 专注于 主机级别的监控,即监控 宿主机 的硬件和操作系统资源。Node Exporter 监控的是 宿主机器 上的各类资源,包括 CPU、内存、磁盘、网络、文件系统等,并且可以监控宿主机上运行的所有容器和进程。它不会单独关注容器的性能数据,而是提供宿主机级别的资源数据。

cAdvisorNode Exporter 可以配合使用,分别监控 容器宿主机。通过这种方式,您可以全面监控整个容器化环境,不仅关注每个容器的资源使用情况,还能监控宿主机的性能和资源健康状态。

  • cAdvisor:专注容器内的资源(如 CPU、内存、磁盘 I/O、网络)。

  • Node Exporter:监控宿主机层级的资源(如硬件性能、操作系统资源)。

通过这种方式,Prometheus 可以从这两个数据源(cAdvisorNode Exporter)抓取数据,从而提供全方位的监控和告警功能。