Node Exporter ipmitool 文本插件

通过 Node Exporter的Textfile Collector扩展 可以将几乎所有文本转换成Prometheus的metrics,也包括 IPMI 。这种方式可以帮助我们监控服务器的硬件:

准备工作

备注

由于 IPMI工具ipmitool 工具命令执行需要 root 权限,所以类似 Node Exporter smartctl 文本插件 完成配置

  • 创建一个 /var/lib/node_exporter/textfile_collector/ 用于存放 --collector.textfile.directory 对应的 *.prom 文件,以便转换成metrics:

准备 /var/lib/node_exporter/textfile_collector/ 目录
sudo mkdir -p /var/lib/node_exporter/textfile_collector

# 目录属主按照 node_exporter 运行进程的owner设置
# 这里设置按 systemd 配置 node_exporter.service 的User/Group 以便 node_exporter 进程能够读取目录下文件
sudo chown prometheus:promethus /var/lib/node_exporter/textfile_collector
下载 node-exporter-textfile-collector-scripts 到本地( /etc/prometheus )
git clone git@github.com:prometheus-community/node-exporter-textfile-collector-scripts.git
sudo mv node-exporter-textfile-collector-scripts /etc/prometheus/

这里将使用 /etc/prometheus/node-exporter-textfile-collector-scripts/ipmitool 脚本 来转换服务器的 ipmitool sensor 命令输出成 Node Exporter的Textfile Collector扩展 可处理的兼容格式

执行脚本

社区推荐使用 sponge 来自动写输出,所以先切换到 root 执行以下命令生成一个案例检查(详见 Node Exporter smartctl 文本插件 ):

# 注意这条命令是切换到root用户身份执行的
sudo su -
ipmitool sensor |  sudo -u prometheus /etc/prometheus/node-exporter-textfile-collector-scripts/ipmitool | sudo -u prometheus sponge /var/lib/node_exporter/textfile_collector/ipmitool.prom

然后检查输出内容 /var/lib/node_exporter/textfile_collector/ipmitool.prom 可以看到类似:

# HELP node_ipmi_temperature_celsius Temperature sensor reading from ipmitool
# TYPE node_ipmi_temperature_celsius gauge
node_ipmi_temperature_celsius{sensor="37-Fuse"} 38.000000
node_ipmi_temperature_celsius{sensor="15-VR P1 Mem"} 34.000000
node_ipmi_temperature_celsius{sensor="02-CPU 1"} 40.000000
node_ipmi_temperature_celsius{sensor="16-VR P1 Mem"} 35.000000
...

这个文件就是 Node Exporter的Textfile Collector扩展 可以处理的标准格式

  • 检查 /var/lib/node_exporter/textfile_collector/ipmitool.prom 内容无误之后,在 /etc/cron.d 目录下添加配置文件 node_exporter_textfile_collector :

配置定时执行 node_exportertextfile Collectors
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

* * * * * root ipmitool sensor | sudo -u prometheus /etc/prometheus/node-exporter-textfile-collector-scripts/ipmitool | sudo -u prometheus sponge /var/lib/node_exporter/textfile_collector/ipmitool.prom

* * * * * root /etc/prometheus/node-exporter-textfile-collector-scripts/smartmon.sh | sudo -u prometheus sponge /var/lib/node_exporter/textfile_collector/smartmon.prom

备注

上述配置详情参考 Node Exporter smartctl 文本插件

配置 node_exporter

按照 Node ExporterSystemd进程管理器 运行服务配置,修订 /etc/systemd/system/node_exporter.service :

/etc/systemd/system/node_exporter.service 添加 textfile Collector 输出数据目录
ExecStart=/usr/local/bin/node_exporter \
    --collector.textfile.directory=/var/lib/node_exporter/textfile_collector

重启 node_exporter 服务

配置 Grafana Dashboard

Grafana通用可视分析平台import Grafana Dashboard 13177: IPMI for Prometheus

完成后Dashboard:

../../../../_images/node_exporter_with_ipmitool_text_plugin.png

Grafana通用可视分析平台import Grafana Dashboard 15765: IPMI Exporter (这个面板看起来更清晰,不过温度显示我比较喜欢 Time series 表现方式,所以我添加了一个视图)

完成后Dashboard:

../../../../_images/node_exporter_with_ipmitool_text_plugin_1.png