一遇风云变化龙

配置prometheus监控Node节点

作者头像
空青、 本文作者

2024-10-11 阅读 149 约 10分钟读完

评论0

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 。

  • 11074 :模板包括了CPU、内存、磁盘、⽹络、温度传感器等指标(常⽤)。
  • 1860 :模板包括CPU、内存、磁盘、⽹络等运⾏状况,及时发现潜在问题并进⾏调优。


上一篇 备份日志、数据定时备份删除并检查告警 下一篇 Grafana-v10.4.10 快速部署
评论