跳转至

node-exporter

概述

prom-node-exporter

Exporter是Prometheus的指标数据收集组件。它负责从目标Jobs收集数据,并把收集到的数据转换为Prometheus支持的时序数据格式。 和传统的指标数据收集组件不同的是,他只负责收集,并不向Server端发送数据,而是等待Prometheus Server 主动抓取,node-exporter 默认的抓取url地址:http://ip:9100/metrics 另外,如果因为环境原因,网络不可达的场景,Prometheus可以使用Pushgateway这个组件推送node-exporter的指标数据到远端Prometheus;

node-exporter用于采集node的运行指标,包括node的cpu、load、filesystem、meminfo、network等基础监控指标,类似于zabbix监控系统的的zabbix-agent;

node-export由Prometheus官方提供、维护,属于监控指标收集类UNIX内核操作系统的必备的exporter。

功能

node-exporter用于采集类UNIX内核的硬件以及系统指标

Windows系统使用 WMI-exporter

如果是采集NVIDIA的GPU指标,可以使用 prometheus-dcgm

根据不同的类UNIX操作系统,node-exporter采集指标的支持也是不一样的,如:

  • diskstats 支持 Darwin, Linux

  • cpu 支持 Darwin, Dragonfly, FreeBSD, Linux, Solaris等,

GitHub地址:node_exporter

--collectors.enabled 指定node_exporter收集的功能模块

--no-collector 指定不需要的模块

安装

二进制部署

现在官方最新的版本是0.18.x,我们使用0.18.0,下载完成后解压,在当前终端即可运行,为了方便启动,使用systemd管理。

wget https://github.com/prometheus/node_exporter/releases/download/v0.18.0/node_exporter-0.18.0.linux-amd64.tar.gz
tar xf node_exporter-0.18.0.linux-amd64.tar.gz
./node_exporter

# systemd配置文件
cat /lib/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
After=network.target

[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/node_exporter/node_exporter
Restart=on-failure

[Install]
WantedBy=multi-user.target

Docker部署

docker

使用docker-compose 启动

docker-compose

通过文本的方式,把要处理的容器按照顺序执行,如果是多容器也就是通过一个docker-compose.yml就搞定了

  • Docker Compose 是命令行Docker管理工具

  • 通过yml文件定义多容器的docker应用

  • 一条命令就可以根据yml文件的定义去创建或者管理这多个容器

version版本统一用3,3是兼容2版本的,版本1已经废弃了,就不要用了。3比2强大很多,3支持多机和单机,2仅支持单机。

Docker-Compose官方文档

cat <<EOF>> docker-compose.yml
version: "3"
services:
  nodeexporter:
    image: prom/node-exporter:v0.18.0
    container_name: nodeexporter
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - '--path.procfs=/host/proc'
      - '--path.rootfs=/rootfs'
      - '--path.sysfs=/host/sys'
      - '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)'
    restart: unless-stopped
    expose:
      - 9100
    ports:
      - 29100:9100
    labels:
      org.label-schema.group: "monitoring"
EOF

常用指标

CPU

node_load1 cpu一分钟负载

node_load5 cpu五分钟负载

node_load15 cpu十五分钟负载

内存

node_memory_MemTotal 内存总量

node_memory_MemTotal-node_memory_MemFree 占用内存(不准确)

node_memory_MemFree 可用内存

系统

node_filesystem_avail{device=~”/dev/.+”} 可用空间

node_filesystem_size{device=~”/dev/.+”} 总空间

node_filesystem_size{device=~”/dev/.+”}-node_filesystem_avail{device=~”/dev/.+”} 已用空间

系统IO

node_disk_read_bytes_total{device=~”sd.+”} IO读byte

node_disk_written_bytes_total{device=~”sd.+”} IO写byte

网络

node_network_receive_bytes{device=~”eth.+”} 接收流量统计

node_network_transmit_bytes{device=~”eth.+”} 发送流量统计

node_boot_time 运行时间

其他

up 当前Prometheus中所有Instance运行状态,包括监控的Instance以及黑盒监控的域名等