认识
一、认识
Node Exporter
是 Prometheus
官方维护的一个指标采集工具,用于收集 操作系统和硬件级别 的监控指标。它可以运行在任何支持的主机上(如 Linux
、Windows
等),将主机的硬件和操作系统数据暴露为 Prometheus
可抓取的格式(即 /metrics
接口)。Node Exporter
专注于主机的性能和状态指标,例如 CPU
使用率、内存使用情况、磁盘 I/O
、网络流量等,是 Prometheus
监控系统中最常用的组件之一。Node Exporter
是 Prometheus
生态系统中关键的组件,专注于主机层面的性能监控。结合 Prometheus
和 Grafana
,可以轻松实现操作系统级的可视化监控。
Node Exporter
提供了以下功能:
-
硬件相关指标:
CPU
负载、内存使用情况(可用、已用、缓存、交换等)、磁盘使用和I/O
性能、网络接口的流量统计(收发字节数、丢包率等)、文件系统的容量和状态 -
操作系统级指标: 系统启动时间、运行进程数量、系统负载平均值、虚拟内存和缓存的使用情况
-
可扩展性: 通过运行时参数启用/禁用特定的指标收集器(
collector
)。通过Prometheus
的查询语言(PromQL
)对数据进行过滤、计算和展示。
二、工作
Node Exporter
通过以下几个机制来采集、暴露和提供数据:
2.1 指标采集(Data Collection)
采集源:Node Exporter
主要通过 /proc
文件系统 和 /sys
文件系统 等 Linux
系统提供的接口,来获取系统和硬件的实时指标。这些文件系统提供了大量关于系统状态、硬件性能、文件系统、网络接口等方面的信息。
监控指标:
-
CPU
:监控每个CPU
核心的使用情况,包括用户态、系统态、空闲时间等。 -
内存:监控系统内存的总量、使用量、剩余量、交换空间使用等。
-
磁盘:监控磁盘的
I/O
活动、磁盘读写速率、磁盘空间使用情况等。 -
网络:监控网络接口的吞吐量、数据包丢失、错误等。
-
文件系统:监控文件系统的使用情况、挂载点等。
-
硬盘:获取硬盘的健康状态、温度、SMART 状态等信息。
-
系统负载:监控系统的负载、进程数、上下文切换等。
这些指标帮助运维人员全面了解宿主机的运行状态,及时发现潜在的瓶颈或问题。
2.2 数据暴露(Data Exposure)
HTTP API
:Node 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
、内存、磁盘、网络、文件系统等,并且可以监控宿主机上运行的所有容器和进程。它不会单独关注容器的性能数据,而是提供宿主机级别的资源数据。
cAdvisor
和 Node Exporter
可以配合使用,分别监控 容器 和 宿主机。通过这种方式,您可以全面监控整个容器化环境,不仅关注每个容器的资源使用情况,还能监控宿主机的性能和资源健康状态。
-
cAdvisor
:专注容器内的资源(如CPU
、内存、磁盘I/O
、网络)。 -
Node Exporter
:监控宿主机层级的资源(如硬件性能、操作系统资源)。
通过这种方式,Prometheus
可以从这两个数据源(cAdvisor
和 Node Exporter
)抓取数据,从而提供全方位的监控和告警功能。