prometheus-02 node-exporter部署及使用
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
现在去掉diskstats指标,查看prometheus抓取的数据就不包含disk相关的指标了。。。。。
# /etc/prometheus.yml配置信息如下
- job_name: 'node'
sttic_configs:
- targets: ['192.168.1.121:9090']
params:
collect[]: # 限制只收集这五种指标
- cpu
- meminfo
# - diskstats
- netdev
- systemd