1、node_exporter 基础
监控节点(如服务器或者虚拟机)通常涉及收集硬件和操作系统层⾯的指标,⽐如 CPU 使⽤率、内存占⽤、磁盘 I/O、⽹络流量等。
但是这些指标并不能直接被Prometheus抓取,因此我们需要借助Node Exporter 将对应的指标转为Prometheus能够兼容的指标格式,并对外提供HTTP接⼝暴露给Prometheus进⾏指标抓取。
2、安装node_exporter
https://prometheus.io/download/
# wget https://ghp.ci/https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz
# tar xf node_exporter-1.8.2.linux-amd64.tar.gz
# ls -l node_exporter-1.8.2.linux-amd64
total 20040
-rw-r--r-- 1 1001 1002 11357 Jul 14 19:57 LICENSE
-rw-r--r-- 1 1001 1002 463 Jul 14 19:57 NOTICE
-rwxr-xr-x 1 1001 1002 20500541 Jul 14 19:54 node_exporter
3、配置node_exporter
启动 Node Exporter 即可开始进⾏指标采集,它默认启⽤了⼀些常⻅的收集器以监控 CPU、内存、⽹络等关键指标。
然⽽由于每个操作系统对收集器的⽀持程度不同,Node Exporter 也提供了⼀些 "默认未启⽤的收集器"。我们可以根据监控需求,通过特定的参数来启⽤这些收集器。
- 要禁⽤默认激活的收集器,可以使⽤参数
--no-collector.<name>
- 要启⽤默认未激活的收集器,可以使⽤参数
--collector.<name>
- 如果只想启动某些特定的收集器,可以使⽤
--collector.disable-defaults
标志禁⽤所有默认的,然后在指定具体要启⽤收集器--collector.<name>
来进⾏收集。
默认关闭⼀些收集器的原因在于,有些指标采集需要占⽤过多资源开销、太重、太慢;所以谨慎开启
1、禁⽤arp收集器,就看不到了
# /etc/node_exporter/node_exporter --no-collector.arp
2、启⽤tcpstat
# /etc/node_exporter/node_exporter --collector.tcpstat
3、禁⽤所有收集器,仅启⽤那些只想启⽤的收集器
# /etc/node_exporter/node_exporter --collector.disable-defaults --collector.cpu --collector.meminfo --collector.diskstats --collector.netstat
默认开启的未开启的收集器清单参见:
https://github.com/prometheus/node_exporter
https://hub.docker.com/r/prom/node-exporter
4、配置system管理Prometheus启动和停⽌
# cat /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
After=network.target
[Service]
ExecStart=/etc/node_exporter/node_exporter \
--web.listen-address=:9100 \
--web.max-requests=40 \
--collector.mountstats \
--collector.systemd \
--collector.ethtool \
--collector.tcpstat
ExecReload=/bin/kill -HUP
TimeoutStopSec=20s
Restart=always
[Install]
WantedBy=multi-user.target
# systemctl daemon-reload
# systemctl enable node_exporter --now
# netstat -lntup|grep 9100
# curl -s http://localhost:9100/metrics # 访问对应的metrics,验证是否能采集到数据
5、docker部署node_exporter
https://hub.docker.com/r/prom/node-exporter
docker pull prom/node-exporter:latest
docker pull quay.io/prometheus/node-exporter:latest
docker run -d \
--net="host" \
--pid="host" \
-v "/:/host:ro,rslave" \
quay.io/prometheus/node-exporter:latest \
--collector.systemd \
--collector.ethtool \
--path.rootfs=/host
# cat docker-compose.yaml
version: '3.8'
services:
node_exporter:
image: quay.io/prometheus/node-exporter:latest
container_name: node_exporter
command:
- '--path.rootfs=/host'
- '--collector.systemd'
- '--collector.ethtool'
- '--collector.tcpstat'
network_mode: host
pid: host
restart: unless-stopped
volumes:
- '/:/host:ro,rslave'
6、配置Prometheus
修改Prometheus配置,添加新的Job分组,然后将对应的节点纳⼊监控中
# cat prometheus.yml
global:
scrape_interval:
evaluation_interval: 1m
rule_files:
- /prometheus/rules/*.rules
scrape_configs:
- job_name: 'prometheus'
metrics_path: "/metrics"
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
metrics_path: "/metrics"
static_configs:
- targets: ['10.0.10.80:9100']
# 重新加载Prometheus
curl -vv -X POST http://localhost:9090/-/reload
7、导入Grafana模版
https://grafana.com/grafana/dashboards/
在Grafana的官⽅插件库中,有很多Node-exporter模板。其中相对受欢的模板的ID是: 11074、1860 。