Prometheus监控之node_exporter

时间:2022-11-28 11:01:25

一、概述

Prometheus监控之node_exporter

1、概述
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。

2、功能
node-exporter用于采集类UNIX内核的硬件以及系统指标
Windows系统使用 WMI-exporter
如果是采集NVIDIA的GPU指标,可以使用 prometheus-dcgm
根据不同的类UNIX操作系统,node-exporter采集指标的支持也是不一样的,如:
diskstats 支持 Darwin, Linux
cpu 支持 Darwin, Dragonfly, FreeBSD, Linux, Solaris等,
GitHub地址:https://github.com/prometheus/node_exporter#enabled-by-default
--collectors.enabled 指定node_exporter收集的功能模块
--no-collector 指定不需要的模块

二、下载安装

1、下载

https://prometheus.io/download/ #几乎所有的exporter都可以在这个地址下载

2、安装配置

#上传软件包
ll /opt/node_exporter-0.18.1.linux-amd64.tar.gz
#解压缩
tar -zxvf node_exporter-0.18.1.linux-amd64.tar.gz
cp -rf node_exporter-0.18.1.linux-amd64 /usr/local/node_exporter
#启动
cd /usr/local/node_exporter/
./node_exporter --web.listen-address="192.168.10.131:9100" --log.level=warn &

curl -g -X GET http://192.168.10.131:9100/metrics?collect[]=cpu

go_代表goruntime信息等
curl http://192.168.10.131:9100/metrics|grep go_
process_代表进程信息等
curl http://192.168.10.131:9100/metrics|grep

3、prometheus配置

- job_name: node_exporter
honor_timestamps: true
scrape_interval: 5s
scrape_timeout: 5s
metrics_path: /metrics
scheme: http
follow_redirects: true
static_configs:
- targets:
- 192.168.10.131:9100
labels:
instance: mynode
mylabel: hello,world
otherLabel: other
params:
collect[]: #node_exporter可以传递一个可选的收集器列表来过滤指标。该collect[]参数可以多次使用。
- cpu
- meminfo

4、加入systemd管理

#写一个启动脚本
[root@localhost ~]# cat /usr/lib/systemd/system/node_exporter.service
[Unit]
Descriptinotallow=node_exporter
Documentatinotallow=https://prometheus.io/
After=network-online.target

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

[Install]
WantedBy=multi-user.target

systemctl daemon-reload
systemctl stop node_exporter
systemctl start node_exporter
systemctl restart node_exporter

三、配置node exporter

node_exporter 在端口 9100 上运行,并在路径 /metrics 上暴 露指标。
你可以通过--web.listen-address 和 --web.telemetry-path 参数来设置端口和路径,如下所示:
./node_exporter --web.listen-address="192.168.10.131:9100" --web.telemetry-path="node_metrics" --log.level=warn &

暴露/proc/net/arp统计信息的arp收集器默认是 启用的,由参数--collector.arp控制。
因此,要禁用此收集器,需要运行如下命令--no-collector.arp

配置textfile收集器
textfile收集器非常有用,因为它允许我们暴露自定义指标。这些自定义指标可能是批处理或cron作业等无法抓取的,可能是没有exporter
的源,甚至可能是为主机提供上下文的静态指标。
收集器通过扫描指定目录中的文件,提取所有格式为 Prometheus 指标的字符串,然后暴露它们以便抓取。
--collector.textfile.directory="/tmp/data"
cat /tmp/data/test.prom
my_data_entry{device="eth0"} 65535
curl http://192.168.10.131:9100/metrics|grep my_data_entry

启用systemd收集器
它记录systemd[1]中的服务和系统状态。这个收集器收集了很多指标,但我们并不想收集systemd管理的所有内容,而只想收集某些关键服务。
为了保持简洁,我们可以将特定服务列入白名单,只收集以下服务的指标
--collector.systemd --collector.systemd.unit-whitelist="(docker|ssh|rsyslog).service"

四、进行安全配置

跟Prometheus配置tls一样操作
1、签发秘钥
openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 -keyout node_exporter.key -out node_exporter.crt -subj \
"/C=CN/ST=Beijing/L=Beijing/O=Moelove.info/CN=localhost"

2、生成basic_auth秘钥
htpasswd -nBC 12 '' | tr -d ':\n'
New password: # 这里设置密码为123456,实际使用请按照自己的集群需求定义密码
Re-type new password:
#生成的密码信息
$2y$12$mMnPuKlOQ97ff4NjDsQTMukAtRS/ILpjxjEQrCN0vefs0CBLe/hi6

3、配置config.yml
cat config.yml
basic_auth_users:
# 当前设置的用户名为admin, 可以设置多个
admin: $2y$12$veyfyjOToC6rKekdnP3VeecUQUX1RHqioPUZgVR48KvLqwYCSLJKu
tls_server_config: # TLS加密
cert_file: node_exporter.crt
key_file: node_exporter.key

4、重启node_exporter
pkill node_exporter
./node_exporter --web.listen-address="192.168.10.131:9100" --web.cnotallow=config.yml &>node_exporter.log &
此时浏览https://192.168.10.131:9100/metrics 并输入admin/123456认证可以正常访问

5、prometheus.yml配置
- job_name: node_exporter
honor_timestamps: true
scrape_interval: 5s
scrape_timeout: 5s
metrics_path: /metrics
basic_auth: #账号密码认证
username: admin #账号
password: 123456 #密码
scheme: https #使用https认证
tls_config: #tls配置
ca_file: /data/node_exporter/node_exporter.crt #crt文件名
insecure_skip_verify: true # 跳过不安全认证
follow_redirects: true
static_configs:
- targets:
- 192.168.10.131:9100
labels:
instance: mynode
mylabel: hello,world
otherLabel: other
params:
collect[]:
- cpu
- meminfo

重启prometheus
killall -HUP prometheus