目录

  • node_exporter安装及部署
  • 1.二进制安装node_exporter
  • node-exporter常用选项
  • 2.容器安装node_exporter
  • node_exporter使用案例
  • 1.textfile收集器
  • 2.systemd收集器
  • 3.Node Exporter修改如下
  • 4.prometheus配置
  • 5.过滤收集器

node_exporter安装及部署

Prometheus使用exporter工具来暴露主机和应用程序上的指标。有很多中类型的exporter。node_exporter下载地址

1.二进制安装node_exporter

1.添加新的系统用户
useradd --system node_exporter
2. 进行解压缩下载的软件,然后拷贝node_exporter文件到/usr/bin目录中。
tar zxvf node_exporter-1.2.2.linux-amd64.tar.gz -C /usr/bin --strip-components=1 --wildcards */node_exporter

3.添加systemd unit文件
vim node-exporter.service 
    [Unit]
    Description=Node Exporter
    Documentation=https://github.com/prometheus/node_exporter
    After=network.target

    [Service]
    User=node_exporter
    ExecStart=/usr/bin/node_exporter
    Restart=on-failure

    [Install]
    WantedBy=multi-user.target

install -m 0644 ./node-exporter.service /etc/systemd/system/

4. 启动服务
systemctl daemon-reload
systemctl enable node-exporter
systemctl start node-exporter

node-exporter常用选项

默认情况下,node_exporter 在端口9100上运行,并在路径/metrics上暴露指标。可以通过 --web.listen-address和 --web.telemetry-path参数来设置端口和路径。

node_exporter --web.listen-address=":9222"  --web.telemetry-path="/node_metrics"

以上的定义就是监听端口为9222,暴露的路径为node_metrics。

很多收集器默认都是启用的,如果不想启用某些收集器,可以通过使用no-前缀来修改状态。

如:不要收集CPU相关信息

--no-collector.cpu

2.容器安装node_exporter

参考node_exporter具体选项使用:https://github.com/prometheus/node_exporter

docker pull prom/node-exporter
# 
# 容器启动node-exporter:
docker run -d \
  --net="host" \
  --pid="host" \
  -v "/:/host:ro,rslave" \
  quay.io/prometheus/node-exporter:latest \
  --path.rootfs=/host

# 编写docker-compose启动node-exporter容器文件:
vim docker-compse.yml
networks:
  monitor:
    driver: bridge
    
services:
  node_exporter:
     image: prom/node-exporter:latest
     container_name: node_exporter
     command: 
       - '--path.rootfs=/host'
       #- '--web.telemetry-path=/node_metrics' # 修改默认的uri(/metrics)
     network_mode: host
     pid: host
     hostname: node_exporter
     restart: always
     user: root
     volumes: 
       - '/:/host:ro,rslave'
     ports:
       - "9100:9100"
     networks:
       - monitor

node_exporter使用案例

1.textfile收集器

textfile收集器在暴露自定义指标时特别有用。这些自定义指标可能是批处理或cron作业等无法抓取的,可能是没有exporter的源,甚至可能是为主机提供上下文的静态指标

收集器通过扫描指定目录中的文件,提取所有格式为Prometheus指标的字符串,然后暴露它们以便抓取。

1.创建一个目录来保存指标定义文件

mkdir -p /var/lib/node_exporter/textfile_collector

2.创建一个文件

echo "metadata{role='docker_server',datacenter='SH'} 1" > /var/lib/node_exporter/textfile_collector/metadata.prom

[注意]如果要启用textfile收集器,由于它默认会被加载,所以可能需要我们指定它的加载目录。 --collector.textfile.directory

2.systemd收集器

systemd收集器默认收集了众多指标,如果只想收集某些服务的话,可以把他们加入白名单。使用 --collector.systemd.unit-whitelist 参数配置

docker.service
sshd.service
rsyslog.service

3.Node Exporter修改如下

vim /etc/systemd/system/node-exporter.service

[Unit]
Description=Node Exporter
Documentation=https://github.com/prometheus/node_exporter
After=network.target

[Service]
User=node_exporter
ExecStart=/usr/bin/node_exporter --collector.textfile.directory /var/lib/node_exporter/textfile_collector --collector.systemd --collector.systemd.unit-whitelist="(docker|sshd|rsyslog).service"  # 在命令行直接执行node_exporter命令可以只抓取到自定义的这三个服务,但是写到systemd,node_exporter就抓取不到了。尝试把我们自定义收集的systemd(-collector.systemd.unit-whitelist="(docker|sshd|rsyslog).service" )给删除掉,使用systemd(node_exporter.service),抓取所有的systemd,就可以了。
Restart=on-failure

[Install]
WantedBy=multi-user.target

systemctl daemon-reload
systemctl restart node-exporter

4.prometheus配置

# /etc/prometheus.yml配置中增加如下:
- job_name: 'node'
  static_configs:
    - targets: ["192.168.1.121:9100"]

5.过滤收集器

Node Exporter可以返回很多指标。除了使用Node Exporter 控制运行哪些收集器之外,Prometheus还提供一种方式来限制收集器从服务器端实际抓取的数据。

修改配置如下:

# /etc/prometheus.yml配置信息如下
- job_name: 'node'
  sttic_configs:
    - targets: ['192.168.1.121:9090']
  params:
      collect[]:  # 限制只收集这五种指标
       - cpu
       - meminfo
       - diskstats
       - netdev 
       - systemd

将nodeexporter增加到prometheus node exporter配置_自定义

现在去掉diskstats指标,查看prometheus抓取的数据就不包含disk相关的指标了。。。。。

# /etc/prometheus.yml配置信息如下
- job_name: 'node'
  sttic_configs:
    - targets: ['192.168.1.121:9090']
  params:
      collect[]:  # 限制只收集这五种指标
       - cpu
       - meminfo
       # - diskstats
       - netdev 
       - systemd