编译Intel PCM

编译

  • clone CPM代码仓库以及子模块:

编译CPM的简单步骤
git clone --recursive https://github.com/opcm/pcm.git
# 或者clone之后执行 git submodule update --init --recursive

mkdir build
cd build
cmake ..
# 使用 --parallel 参数可以加快编译
cmake --build . --parallel

# 所有编译后的二进制执行文件在 build/bin 目录下,这里执行 make install 会安装到 /usr/local/sbin 目录
sudo make install

在CentOS 7,2平台编译

生产环境使用了古老的(类)CentOS 7.2环境,在这个旧OS中编译会比较折腾(无力吐糟)

文件打包

为了方便安装,根据 make install 列出文件,记录到 files.txt 中,然后执行以下命令打包成 cpm.tar.gz (参考 Tar archiving that takes input from a list of files ,此外同时打包 pcm-exporter :Intel Performance Counter Monitor (Intel PCM) Prometheus exporter/etc/systemd/system/pcm-exporter.service ):

根据文件列表打包pcm安装文件
# 这里参数 -T 表示 --files-from 可以从文件中读取需要打包的文件列表
tar -cvf pcm.tar -T files.txt

然后在目标服务器上只需要执行以下命令就能快速运行 pcm-exporter 服务:

快速部署自己编译的pcm-exporter
tar xfz pcm.tar.gz
systemctl daemon-reload
systemctl enable --now pcm-exporter

也可以通过类似 Homebrew 方法执行脚本安装:

快速在被监控节点部署安装 Intel PCM 的脚本 install_pcm.sh
curl https://onesre.cloud-atlas.io/download/pcm.tar.gz -o /pcm.tar.gz
cd /
tar xfz pcm.tar.gz
systemctl daemon-reload
systemctl enable --now pcm-exporter
rm /pcm.tar.gz
crul 执行安装 脚本 intall_pcm.sh
/bin/bash -c "$(curl -fsSL https://onesre.cloud-atlas.io/download/install_pcm.sh)"

问题排查

遇到一个问题,使用 pcm-exporter :Intel Performance Counter Monitor (Intel PCM) Prometheus exporterSystemd进程管理器 配置方式启动 pcm-sensor-server 失败:

使用 systemd 启动自己编译的 pcm-sensor-server 失败
● pcm-exporter.service - pcm-exporter
   Loaded: loaded (/etc/systemd/system/pcm-exporter.service; disabled; vendor preset: disabled)
   Active: activating (auto-restart) (Result: exit-code) since Sun 2023-07-16 16:00:41 CST; 864ms ago
  Process: 373807 ExecStart=/usr/local/sbin/pcm-sensor-server -p 9738 --real-time (code=exited, status=6)
 Main PID: 373807 (code=exited, status=6)

Jul 16 16:00:41 sqaappxdn006002124157.sa127 systemd[1]: Unit pcm-exporter.service entered failed state.
Jul 16 16:00:41 sqaappxdn006002124157.sa127 systemd[1]: pcm-exporter.service failed.

我发现是参数 --real-time 导致,原因未明,通过取消该参数恢复

参考