是否有人为Prometheus提取`docker system df -v`数据或处理其输出监控Docker本地卷?
监控Docker本地卷磁盘使用的可行方案
优先用
--format输出JSON格式,降低处理难度:
直接执行以下命令,将docker system df -v的输出转为结构化JSON,不管是用Node.js编写exporter还是用文本工具处理都更高效:docker system df -v --format '{{json .}}'用awk处理纯文本输出提取指标:
如果偏好文本处理工具,可以用awk脚本提取卷名、已用空间和总容量,生成Prometheus兼容的指标格式。示例脚本如下:# 定位到本地卷使用情况的区块 /Local Volumes space usage/{flag=1; next} # 遇到分隔线时停止处理 flag && /^-{5}/{flag=0} # 提取有效行的指标 flag && NF>0 { split($3, used, "/") # 移除单位并转换为字节(默认处理GB,MB需额外调整) gsub(/GB/, "", used[1]) gsub(/GB/, "", $4) printf "docker_volume_used_bytes{name=\"%s\"} %.0f\n", $1, used[1] * 1024^3 printf "docker_volume_total_bytes{name=\"%s\"} %.0f\n", $1, $4 * 1024^3 }将脚本保存为
extract_docker_volumes.awk,执行命令即可输出指标:docker system df -v | awk -f extract_docker_volumes.awk基于该输出构建Node Exporter的思路完全可行:
可以用Node.js编写一个轻量服务,定时调用docker system df -v --format '{{json .}}',通过child_process模块执行命令并解析JSON输出,然后将数据拼接为Prometheus指标格式,暴露一个HTTP端口供Prometheus抓取。这种方式无需依赖额外工具,灵活性高。
内容的提问来源于stack exchange,提问作者Alan G Dixon
相关产品推荐
相关产品推荐

