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-compose
启动
docker-compose
通过文本的方式,把要处理的容器按照顺序执行,如果是多容器也就是通过一个docker-compose.yml就搞定了
-
Docker Compose 是命令行Docker管理工具
-
通过yml文件定义多容器的docker应用
-
一条命令就可以根据yml文件的定义去创建或者管理这多个容器
version版本统一用3,3是兼容2版本的,版本1已经废弃了,就不要用了。3比2强大很多,3支持多机和单机,2仅支持单机。
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以及黑盒监控的域名等