如何通过Prometheus node_exporter获取CentOS精确版本号?
获取CentOS精确OS版本号(带小数点)的解决方法
针对node_exporter默认指标仅返回主版本号的问题,有两种可行的解决思路:
方法一:自定义textfile指标(推荐)
通过node_exporter的textfile collector功能,自定义脚本提取精确版本号并生成指标文件:
- 编写获取版本的shell脚本(比如
/usr/local/bin/get_centos_exact_version.sh):
#!/bin/bash # 从/etc/redhat-release提取带小数点的版本号 CENTOS_VERSION=$(grep -oP '(?<=release )\d+\.\d+' /etc/redhat-release) # 生成符合Prometheus格式的指标文件 echo "node_centos_exact_version{version=\"${CENTOS_VERSION}\"} 1" > /var/lib/node_exporter/centos_version.prom
- 给脚本添加执行权限:
chmod +x /usr/local/bin/get_centos_exact_version.sh
- 设置定时任务定期更新指标,避免版本更新后指标失效:
crontab -e # 添加一行:每小时执行一次 0 * * * * /usr/local/bin/get_centos_exact_version.sh
- 修改node_exporter启动参数,指定textfile目录:
# 假设node_exporter的启动脚本在/etc/systemd/system/node_exporter.service # 在ExecStart行末尾添加 --collector.textfile.directory=/var/lib/node_exporter # 示例:ExecStart=/usr/local/bin/node_exporter --collector.textfile.directory=/var/lib/node_exporter
- 重启node_exporter服务:
systemctl daemon-reload systemctl restart node_exporter
完成后,就能通过node_centos_exact_version指标直接获取带小数点的版本号,Grafana中可直接调用该指标。
方法二:用PromQL直接提取现有指标
利用node_exporter的node_file_contents指标读取/etc/redhat-release文件内容,再通过正则提取版本号,无需额外配置:
regex_replace(node_file_contents{path="/etc/redhat-release"}, "^.*release ([0-9]+\\.[0-9]+).*$", "$1")
此方法适合临时查询或快速验证,但PromQL相对复杂,若系统版本文件格式变更可能失效。
内容的提问来源于stack exchange,提问作者bobs
相关产品推荐
相关产品推荐

