如何使用node_exporter获取指定文件的大小?
获取单个文件的Prometheus指标
要获取/var/lib/mysql/abcd这类单个文件的大小,node_exporter默认没有提供对应指标,需要通过textfile collector自定义生成指标,步骤如下:
配置node_exporter启用textfile采集器
启动node_exporter时添加参数,指定textfile文件存放目录(比如/var/lib/node_exporter):node_exporter --collector.textfile.directory=/var/lib/node_exporter如果是systemd管理的服务,修改服务配置文件(通常是
/etc/systemd/system/node_exporter.service)的ExecStart行,加入上述参数后重启服务:systemctl daemon-reload systemctl restart node_exporter编写脚本生成文件大小指标
创建一个脚本(比如/usr/local/bin/get_mysql_abcd_size.sh),内容如下:#!/bin/bash FILE_PATH="/var/lib/mysql/abcd" OUTPUT_FILE="/var/lib/node_exporter/mysql_abcd_size.prom" # 检查文件是否存在 if [ -f "$FILE_PATH" ]; then FILE_SIZE=$(stat -c "%s" "$FILE_PATH") echo "# HELP node_file_size_bytes Size of specified file" > "$OUTPUT_FILE" echo "# TYPE node_file_size_bytes gauge" >> "$OUTPUT_FILE" echo "node_file_size_bytes{path=\"$FILE_PATH\"} $FILE_SIZE" >> "$OUTPUT_FILE" else # 文件不存在时输出0或标记状态,根据需求调整 echo "# HELP node_file_size_bytes Size of specified file" > "$OUTPUT_FILE" echo "# TYPE node_file_size_bytes gauge" >> "$OUTPUT_FILE" echo "node_file_size_bytes{path=\"$FILE_PATH\",status=\"missing\"} 0" >> "$OUTPUT_FILE" fi给脚本添加执行权限:
chmod +x /usr/local/bin/get_mysql_abcd_size.sh定时执行脚本
通过cron定期运行脚本,确保指标实时更新。执行crontab -e添加一行:* * * * * /usr/local/bin/get_mysql_abcd_size.sh这会每分钟更新一次文件大小指标。
查询指标
完成配置后,在Prometheus中即可通过以下查询获取目标文件大小:node_file_size_bytes{path="/var/lib/mysql/abcd"}
内容的提问来源于stack exchange,提问作者Asuwini P
相关产品推荐
相关产品推荐

