Ubuntu 22.04 安装 Performance Co-Pilot 7.2.2 指南
Ubuntu 22.04 服务器从零安装 Performance Co-Pilot 7.2.2 实战:Ubuntu 默认仓库/官方 Packagecloud 源/离线 deb 包三方案逐条实测,pmcd+pmlogger systemd 托管与验证、方案对比、配置要点、排障实录与卸载清理。
Ubuntu 22.04 安装 Performance Co-Pilot 7.2.2 指南
目标:在一台 Ubuntu 22.04 服务器上从零安装 Performance Co-Pilot(PCP)并跑起 pmcd / pmlogger 核心服务,覆盖 Ubuntu 默认仓库、官方 Packagecloud 仓库、离线 deb 包三条安装路径;全部命令与回显均已在 Ubuntu 22.04.5 LTS(x86_64)服务器实测通过。PCP 的架构、组件与选型论证见 《Performance Co-Pilot 介绍与选型指南》,本篇只解决"装起来、跑起来"。
一、环境信息
本篇实测环境的完整信息如下,均可在目标服务器上以对应命令复核:
| 项目 | 值 | 复核命令 |
|---|---|---|
| 操作系统 | Ubuntu 22.04.5 LTS(jammy) | cat /etc/os-release |
| CPU 架构 | x86_64 | uname -m |
| init 系统 | systemd 249(249.11-0ubuntu3.23) | systemctl --version | head -1 |
| apt 版本 | apt 2.4.14(amd64) | apt-get --version | head -1 |
| 目标版本 | Performance Co-Pilot 7.2.2-1(官方 Packagecloud 仓库,2026-10 发布的最新稳定版) | pcp --version |
| 备用版本 | 5.3.6-1build1(Ubuntu jammy/universe 系统包) | apt-cache policy pcp |
| 核心服务 | pmcd(指标采集,TCP 44321)、pmlogger(归档)、pmie(规则推理)、pmproxy(REST API,TCP 44322) | systemctl status pmcd |
| 全局配置 | /etc/pcp.conf、/etc/pcp/(按组件分子目录) | ls /etc/pcp/ |
| 运行目录 | /var/lib/pcp/(PMDA 与命名空间) | ls /var/lib/pcp/ |
| 归档目录 | /var/log/pcp/pmlogger/<主机名>/ | ls /var/log/pcp/pmlogger/ |
| 运行账号 | pcp(包安装自动创建) | id pcp |
⚠️ 网络渠道说明:本篇三个方案所依赖的
archive.ubuntu.com(Ubuntu 官方源)与packagecloud.io(PCP 官方仓库)在实测时均可直连访问,未发生降级;若你的环境访问packagecloud.io超时,可先走代理,或改用第六章的离线 deb 方案。
二、前置条件
安装前先确认四项基础条件。以下检查命令与回显均为实测:
# 1. 确认系统版本为 Ubuntu 22.04
cat /etc/os-release | head -2
PRETTY_NAME="Ubuntu 22.04.5 LTS"
NAME="Ubuntu"
# 2. 确认架构与 init 系统(PCP 的守护进程组依赖 systemd 托管)
uname -m
systemctl --version | head -1
x86_64
systemd 249 (249.11-0ubuntu3.23)
# 3. 确认 PCP 默认端口 44321 未被占用
# (44321 的十六进制为 AD21;无输出即空闲)
grep -i ":AD21" /proc/net/tcp
# 4. 确认 root 权限与时间同步(PCP 归档按时间戳组织,时钟漂移会扰乱历史分析)
whoami
timedatectl | grep "System clock synchronized"
root
System clock synchronized: yes
要点:
- 后续所有安装、配置命令均以 root 执行;
- 方案 B 需要服务器可访问
packagecloud.io与archive.ubuntu.com;方案 A 仅需archive.ubuntu.com;方案 C 面向断网机器,仅需一次性的软件包拷贝; - 若机器启用了防火墙,远程查询场景需放行 TCP 44321(详见第八章配置说明)。
三、版本选型说明
PCP 的版本获取渠道有两类,版本差距很大,选型先看这张实测对照表:
| 渠道 | 可装版本 | 时效 | 说明 |
|---|---|---|---|
| Ubuntu 22.04 官方仓库(jammy/universe) | 5.3.6-1build1 | 2022 年随发行版冻结 | apt install pcp 即得,零第三方源;但落后主线一个大版本线 |
| PCP 官方 Packagecloud 仓库 | 7.2.2-1(另有 7.2.1/7.2.0/7.1.5 等可选) | 跟随上游发布(7.2.2 为 2026-10 最新稳定版) | 官方下载页(pcp.io/download.html)给出的追新通道 |
实测两个渠道的版本候选(apt-cache policy pcp):
pcp:
Installed: (none)
Candidate: 5.3.6-1build1
Version table:
5.3.6-1build1 500
500 http://archive.ubuntu.com/ubuntu jammy/universe amd64 Packages
配置官方源之后:
pcp:
Installed: 7.2.2-1
Candidate: 7.2.2-1
Version table:
*** 7.2.2-1 500
500 https://packagecloud.io/performancecopilot/pcp/ubuntu jammy/main amd64 Packages
7.2.1-1 500
500 https://packagecloud.io/performancecopilot/pcp/ubuntu jammy/main amd64 Packages
7.2.0-1 500
500 https://packagecloud.io/performancecopilot/pcp/ubuntu jammy/main amd64 Packages
7.1.5-1 500
500 https://packagecloud.io/performancecopilot/pcp/ubuntu jammy/main amd64 Packages
解读:官方 Packagecloud 仓库保留完整的历史版本序列,可以精确锁定 7.2.2-1,也可以按需回退 =7.2.1-1;Ubuntu universe 只有单一的 5.x 老包。除非你有"绝不引入第三方源"的合规约束,否则生产环境直接选方案 B。5.x 与 7.x 的能力差距(OpenTelemetry 导出、追加式归档、pmsearch 独立运行等)见 《Performance Co-Pilot 介绍与选型指南》 第二、四章。
💡 技术拓展:Linux 服务器的监控类软件安装渠道不止 apt 一种,常见形态对比——
形态 特点 适用 发行版官方仓库(apt/yum) 版本随发行版冻结,签名与依赖全自动 求稳、不追新 上游自建仓库(Packagecloud/OBS) 版本最新、可锁小版本,需导入源与密钥 生产追新(本篇方案 B) 离线 deb/rpm 包 断网可用,依赖需自行补齐 隔离网段(本篇方案 C) 源码编译 完全可控,构建依赖多、周期长 特殊架构/定制 PCP 官方推荐前两种(发行版内置 + Packagecloud 追新),本篇以方案 B 为主线、A/C 为对照与兜底。
四、方案 A:Ubuntu 默认仓库安装(5.3.6,备用方案)
4.1 方案说明
不引入任何第三方源,直接用 Ubuntu 自带的 universe 仓库安装。适合"先快速体验 PCP、暂不动软件源"的场景;代价是版本停留在 5.3.6。
4.2 安装
DEBIAN_FRONTEND=noninteractive apt-get install -y pcp
输出节选(实测尾部):
Setting up libpcp3 (5.3.6-1build1) ...
Setting up libpcp-pmda3 (5.3.6-1build1) ...
Setting up libpcp-trace2 (5.3.6-1build1) ...
Setting up libpcp-gui2 (5.3.6-1build1) ...
Setting up perl (5.34.0-3ubuntu1.9) ...
Setting up libpcp-mmv1 (5.3.6-1build1) ...
Setting up libpcp-import1 (5.3.6-1build1) ...
Setting up libpcp-pmda-perl (5.3.6-1build1) ...
Setting up libpcp-web1 (5.3.6-1build1) ...
Setting up python3-pcp (5.3.6-1build1) ...
Setting up pcp (5.3.6-1build1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/pmcd.service → /lib/systemd/system/pmcd.service.
Created symlink /etc/systemd/system/multi-user.target.wants/pmlogger.service → /lib/systemd/system/pmlogger.service.
Created symlink /etc/systemd/system/pmlogger.service.requires/pmlogger_farm.service → /lib/systemd/system/pmlogger_farm.service.
Created symlink /etc/systemd/system/multi-user.target.wants/pmie.service → /lib/systemd/system/pmie.service.
Created symlink /etc/systemd/system/pmie.service.requires/pmie_farm.service → /lib/systemd/system/pmie_farm.service.
Created symlink /etc/systemd/system/multi-user.target.wants/pmproxy.service → /lib/systemd/system/pmproxy.service.
Processing triggers for libc-bin (2.35-0ubuntu3.15) ...
解读:pcp 主包自动带出全套 libpcp* 运行库与 python3-pcp 绑定;安装脚本已把 pmcd / pmlogger / pmie / pmproxy 四个服务全部 enable(开机自启),但不会立即启动,需要手动 start(见 4.3)。
4.3 systemd 托管:启动核心服务
systemctl start pmcd
systemctl start pmlogger
systemctl is-active pmcd
systemctl is-active pmlogger
active
active
💡 说明:pmie(规则推理)与 pmproxy(REST API)默认不启动也完全不影响采集与归档;pmie 需要先用
pmieconf生成规则配置,pmproxy 需要时序库配合,二者分别在本专栏配置篇与命令篇展开。
4.4 验证
pcp --version
pcp version 5.3.6
pminfo -f pmcd.version
pmcd.version
value "5.3.6"
systemctl status pmcd --no-pager
输出节选(实测头部):
● pmcd.service - Performance Metrics Collector Daemon
Loaded: loaded (/lib/systemd/system/pmcd.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2026-11-01 08:40:29 UTC; 9s ago
Docs: man:pmcd(1)
Main PID: 1118 (pmcd)
Tasks: 6 (limit: 2266)
Memory: 6.8M
CPU: 551ms
解读:pmcd 常驻内存仅 6.8M、任务数 6,印证了 PCP"轻量常驻采集"的定位;Loaded 行确认服务单元来自发行版包且已 enabled。至此方案 A 的采集链路(pmcd + PMDA)与归档链路(pmlogger)均已工作,用 pminfo 已可查询本机指标树。
五、方案 B:官方 Packagecloud 仓库安装(7.2.2,推荐)
5.1 方案说明
PCP 官方下载页给出的追新通道:导入 Packagecloud 的 performancecopilot/pcp 仓库后,apt install pcp 直接得到与上游同步的 7.2.2-1,且后续 apt upgrade 可平滑跟随新版本。生产环境推荐本方案。
5.2 配置官方软件源
Packagecloud 标准做法是执行其安装脚本(自动装依赖、导入 GPG 密钥、写源文件):
curl -s https://packagecloud.io/install/repositories/performancecopilot/pcp/script.deb.sh | bash
输出节选(实测尾部):
Detected apt version as 2.4.14
Running apt-get update... done.
Installing apt-transport-https... done.
Installing /etc/apt/sources.list.d/performancecopilot_pcp.list...done.
Importing packagecloud gpg key... Packagecloud gpg key imported to /etc/apt/keyrings/performancecopilot_pcp-archive-keyring.gpg
done.
Running apt-get update... done.
The repository is setup! You can now install packages.
脚本生成的源文件内容(实测 cat /etc/apt/sources.list.d/performancecopilot_pcp.list):
# this file was generated by packagecloud.io for
# the repository at https://packagecloud.io/performancecopilot/pcp
deb [signed-by=/etc/apt/keyrings/performancecopilot_pcp-archive-keyring.gpg] https://packagecloud.io/performancecopilot/pcp/ubuntu/ jammy main
deb-src [signed-by=/etc/apt/keyrings/performancecopilot/pcp/ubuntu/ jammy main
⚠️ 注意:
jammy对应 Ubuntu 22.04;脚本按/etc/os-release自动选择发行版代号。密钥采用signed-by方式隔离在/etc/apt/keyrings/,不污染全局 apt 信任链,这是现代 deb 源的标准姿势。
验证源已生效:
apt-cache policy pcp | head -8
pcp:
Installed: (none)
Candidate: 7.2.2-1
Version table:
7.2.2-1 500
500 https://packagecloud.io/performancecopilot/pcp/ubuntu jammy/main amd64 Packages
7.2.1-1 500
500 https://packagecloud.io/performancecopilot/pcp/ubuntu jammy/main amd64 Packages
5.3 安装
DEBIAN_FRONTEND=noninteractive apt-get install -y pcp
输出节选(实测尾部):
Setting up libpcp-gui2 (7.2.2-1) ...
Setting up libpcp-mmv1 (7.2.2-1) ...
Setting up pcp-htop (7.2.2-1) ...
Setting up libpcp-archive1 (7.2.2-1) ...
Setting up libpcp-import2 (7.2.2-1) ...
Setting up pcp-atop (7.2.2-1) ...
Setting up libpcp-import1 (7.2.2-1) ...
Setting up libpcp-web1 (7.2.2-1) ...
Setting up python3-pcp (7.2.2-1) ...
Setting up pcp-dstat (7.2.2-1) ...
Setting up pcp (7.2.2-1) ...
Processing triggers for libc-bin (2.35-0ubuntu3.15) ...
解读:与方案 A 相比,Packagecloud 的 pcp 包额外带出 pcp-htop、pcp-atop、pcp-dstat 三个"用 PCP 指标重写的经典工具",以及 libpcp-archive1(7.x 归档库独立成包);systemd 单元同样自动 enable。安装后共 16 个 PCP 相关包(实测 dpkg -l | grep -E "^ii +(pcp|libpcp|python3-pcp)"):
libpcp-archive1 7.2.2-1
libpcp-gui2 7.2.2-1
libpcp-import1 7.2.2-1
libpcp-import2 7.2.2-1
libpcp-mmv1 7.2.2-1
libpcp-pmda-perl 7.2.2-1
libpcp-pmda3 7.2.2-1
libpcp-trace2 7.2.2-1
libpcp-web1 7.2.2-1
libpcp4 7.2.2-1
pcp 7.2.2-1
pcp-atop 7.2.2-1
pcp-conf 7.2.2-1
pcp-dstat 7.2.2-1
pcp-htop 7.2.2-1
python3-pcp 7.2.2-1
5.4 systemd 托管与验证
systemctl start pmcd
systemctl start pmlogger
sleep 2
systemctl is-active pmcd
systemctl is-active pmlogger
active
active
pcp --version
pcp version 7.2.2
pminfo -f pmcd.version
pmcd.version
value "7.2.2"
systemctl status pmcd --no-pager
输出节选(实测头部):
● pmcd.service - Performance Metrics Collector Daemon
Loaded: loaded (/lib/systemd/system/pmcd.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2026-11-01 08:41:46 UTC; 1min 44s ago
Docs: man:pmcd(1)
Main PID: 6867 (pmcd)
Tasks: 6 (limit: 2266)
Memory: 8.0M
CPU: 608ms
四个服务的开机自启状态(实测):
systemctl is-enabled pmcd pmlogger pmie pmproxy
enabled
enabled
enabled
enabled
监听端口验证(44321 的十六进制为 AD21,0A 即 LISTEN):
grep -i ":AD21" /proc/net/tcp /proc/net/tcp6
/proc/net/tcp: 0: 0100007F:AD21 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 3960646 1 ffff8ad881b75f00 100 0 0 10 0
/proc/net/tcp6: 1: 00000000000000000000000001000000:AD21 00000000000000000000000000000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 3960647 1 ffff8ad678ae5000 100 0 0 10 0
解读:0100007F = 127.0.0.1、::1——7.2.2 的 pmcd 默认只监听回环地址,本机工具全部可用,但远程主机暂时查不了;需要开放远程采集时再调整监听与访问控制(见第八章与配置篇)。
归档链路验证——pmlogger 启动后已生成当日归档三件套(实测 ls /var/log/pcp/pmlogger/*/):
20261101.08.40.0
20261101.08.40.index
20261101.08.40.meta
20261101.08.41.0
20261101.08.41.index
20261101.08.41.meta
Latest
pmlogger.log
解读:.0(数据)、.meta(元数据)、.index(索引)三件套是 PCP 二进制归档的标准形态,Latest 软链指向当前活跃归档目录;目录名即主机名,按 YYYYMMDD.HH.MM 组织。
六、方案 C:离线 deb 包安装(断网环境)
6.1 方案说明
目标服务器完全断网(或无法访问 packagecloud.io)时,把 PCP 7.2.2-1 的 16 个 deb 包连同运行依赖一次性拷入,用 dpkg 手工安装。准备机要求:同版本系统(Ubuntu 22.04 jammy)且已按 5.2 配置好 Packagecloud 源。
6.2 在联网准备机上下载软件包
PCP 自身 16 个包(实测 apt-get download 清单与回显):
mkdir -p /root/deb && cd /root/deb
apt-get download pcp pcp-conf libpcp4 libpcp-archive1 libpcp-gui2 libpcp-import1 libpcp-import2 libpcp-mmv1 libpcp-pmda-perl libpcp-pmda3 libpcp-trace2 libpcp-web1 python3-pcp pcp-atop pcp-dstat pcp-htop
Get:16 https://packagecloud.io/performancecopilot/pcp/ubuntu jammy/main amd64 python3-pcp amd64 7.2.2-1 [85.0 kB]
Fetched 5635 kB in 3s (1779 kB/s)
PCP 包还依赖一批 Ubuntu 基础运行库(perl、gawk、libsasl2 等)。在准备机上用模拟安装列出依赖全集:
apt-get -f install -s | grep "^Inst" | awk '{print $2}' | sort -u
gawk libdrm-amdgpu1 libdrm-common libdrm2 libelf1 libgdbm-compat4 libgdbm6 libinih1 libmpfr6 libperl5.34 libpfm4 libsasl2-2 libsasl2-modules libsasl2-modules-db libsigsegv2 libuv1 netbase perl perl-modules-5.34 zstd
把这些依赖 deb 一并下载(目标机若已自带其中部分包,dpkg 会自动跳过):
apt-get download gawk libdrm-amdgpu1 libdrm-common libdrm2 libelf1 libgdbm-compat4 libgdbm6 libinih1 libmpfr6 libperl5.34 libpfm4 libsasl2-2 libsasl2-modules libsasl2-modules-db libsigsegv2 libuv1 netbase perl perl-modules-5.34 zstd libgmp10
Fetched 11.2 MB in 4s (3212 kB/s)
⚠️ 排障实录:
libgmp10不在-f install模拟清单里,但必须一起下载——它是gawk的 Pre-Depends(实测dpkg -I gawk_*.deb显示Pre-Depends: libc6 (>= 2.34), libgmp10 (>= 2:6.2.1+dfsg), libmpfr6 (>= 3.1.3), libreadline8 (>= 6.0), libsigsegv2 (>= 2.9)),漏掉它会在安装后期报pre-dependency problem - not installing gawk,而 gawk 是 pmlogger 日常维护脚本的依赖。稳妥做法是准备机上直接apt-get install --download-only -o Dir::Cache::archives=/root/deb pcp,让 apt 递归解析完整依赖闭包。
将 /root/deb 目录(共 37 个 deb)通过 U 盘/内网 scp 拷到目标服务器同路径。
6.3 目标机安装
dpkg -i /root/deb/*.deb
首次执行在缺少 perl 等基础依赖时必然部分失败(实测排障记录):
dpkg: dependency problems prevent configuration of libpcp-pmda-perl:
dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of libpcp-web1:
dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of libpcp4:
dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of pcp-atop:
dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of pcp-htop:
dependency problems - leaving unconfigured
定位缺失依赖(离线机上用模拟修复列出):
apt-get -f install -s | grep "^Inst" | awk '{print $2}' | sort -u
gawk libdrm-amdgpu1 libdrm-common libdrm2 libelf1 libgdbm-compat4 libgdbm6 libinih1 libmpfr6 libperl5.34 libpfm4 libsasl2-2 libsasl2-modules libsasl2-modules-db libsigsegv2 libuv1 netbase perl perl-modules-5.34 zstd
补齐依赖 deb 后重跑同一条命令,dpkg 会自动按依赖序完成全部配置:
dpkg -i /root/deb/*.deb 2>&1 | grep -E "dependency problems|error processing"
(无输出即全部成功)
dpkg -l | grep " pcp "
ii pcp 7.2.2-1 amd64 System level performance monitoring and performance management
6.4 服务启动与验证
systemctl start pmcd
systemctl start pmlogger
sleep 2
systemctl is-active pmcd
systemctl is-active pmlogger
active
active
pcp --version
pcp version 7.2.2
pminfo -f pmcd.version
pmcd.version
value "7.2.2"
至此离线机与方案 B 得到完全一致的功能状态。
七、方案对比与选择建议
| 维度 | 方案 A(Ubuntu 默认源) | 方案 B(Packagecloud 官方源) | 方案 C(离线 deb) |
|---|---|---|---|
| 得到版本 | 5.3.6-1build1 | 7.2.2-1(最新稳定) | 7.2.2-1 |
| 是否需联网 | 需(archive.ubuntu.com) | 需(packagecloud.io) | 目标机不需要 |
| 安装方式 | apt install pcp | 脚本配源 + apt install pcp | dpkg -i *.deb |
| systemd 单元来源 | 发行版包 | 上游包(同 A,另含 farm 单元) | 上游包 |
| 附带工具 | 基础 CLI | +pcp-htop / pcp-atop / pcp-dstat | +pcp-htop / pcp-atop / pcp-dstat |
| 升级体验 | 随发行版,极慢 | apt upgrade 平滑跟随上游 | 每次需重新攒包 |
| 主要缺点 | 版本落后、缺 7.x 新特性 | 引入第三方源 | 依赖闭包需自己保证 |
选择建议:
- 生产服务器、可访问外网 → 方案 B(唯一能持续获得安全更新与新特性的路径);
- 隔离网段/等保环境 → 方案 C,依赖闭包务必用
--download-only递归解析,别手抄清单; - 只想快速验证 PCP 是否适合业务 → 方案 A,接受 5.x 功能子集;
- 三方案装出来的 pmcd/pmlogger 数据面完全兼容,后续从 A 切 B 只需配源后
apt-get install -y pcp=7.2.2-1原地升级,配置与归档不丢。
八、配置说明
安装后需要知道的配置与路径要点(参数级详解见本专栏配置篇):
-
全局环境文件
/etc/pcp.conf:定义pcp_*全套路径变量(pcp_pf_dir、pcp_log_dir、pcp_var_dir等),所有 PCP 工具启动时都读取它;一般无需改动。 -
组件配置目录
/etc/pcp/:按组件分子目录——/etc/pcp/pmcd/(PMDA 注册表pmcd.conf)、/etc/pcp/pmlogger/(归档控制文件control与各主机配置)、/etc/pcp/pmie/(推理引擎控制与规则)、/etc/pcp/pmproxy/(REST 网关)、/etc/pcp/pmrep/、/etc/pcp/derived/(派生指标)等,实测ls /etc/pcp/可见 60+ 个子目录(含各 PMDA 的开关配置)。 -
PMDA 注册表
/etc/pcp/pmcd/pmcd.conf:每行注册一个指标域代理(实测节选):root 1 pipe binary /var/lib/pcp/pmdas/root/pmdaroot pmcd 2 dso pmcd_init /var/lib/pcp/pmdas/pmcd/pmda_pmcd.so proc 3 pipe binary /var/lib/pcp/pmdas/proc/pmdaproc -d 3 linux 60 pipe binary /var/lib/pcp/pmdas/linux/pmdalinux mmv 70 dso mmv_init /var/lib/pcp/pmdas/mmv/pmda_mmv.sopipe为独立进程代理、dso为共享库内嵌代理;增删 PMDA 用pmcdctl命令而非手改此文件。 -
网络暴露:7.2.2 默认仅监听
127.0.0.1:44321/::1:44321(见 5.4 实测)。需要被集中记录机远程采集时,要同时放开监听地址与访问控制,生产上建议用防火墙把 44321 限制到监控网段:ufw allow from 10.0.0.0/24 to any port 44321 proto tcp(示例网段按实际监控网替换;未启用 ufw 的机器用 iptables/nftables 等价规则。)
-
归档落盘:pmlogger 默认对 localhost 全量记录,归档写
/var/log/pcp/pmlogger/<主机名>/,每日由pmlogger_daily定时任务合并压缩;磁盘规划需按默认全量归档的增速预留(实测单机运行 1 小时即生成多组三件套归档,du -sh /var/log/pcp/pmlogger/*/查看增速,长期运行建议保留策略见配置篇)。 -
运行账号:包安装自动创建
pcp系统账号,守护进程均以其运行(实测):id pcp ps -ef | grep [p]mcd | head -1uid=999(pcp) gid=999(pcp) groups=999(pcp) pcp 6867 1 0 08:41 ? 00:00:00 /usr/lib/pcp/bin/pmcd -A无需额外授权。
九、常见问题(FAQ)
Q1:pminfo -f pmcd.version 报 No such host is known 或连接拒绝?
pmcd 未启动。systemctl is-active pmcd 若为 inactive,执行 systemctl start pmcd;仍失败看日志 journalctl -u pmcd -n 30,最常见原因是 44321 被占(见第二章端口检查命令)。
Q2:另一台机器上 pminfo -h <本机IP> kernel.all.load 超时?
这是默认行为而非故障:7.2.2 的 pmcd 只监听回环(5.4 实测)。需要远程查询时修改 pmcd 监听与访问控制配置并重启 pmcd,同时放行防火墙 44321。
Q3:方案 C dpkg -i 报 dependency problems - leaving unconfigured?
依赖闭包不完整。按 6.3 用 apt-get -f install -s 在离线机上列出仍缺失的包名,回到准备机补下对应 deb 再重跑 dpkg -i /root/deb/*.deb;特别注意 gawk 的 Pre-Depends libgmp10(6.2 排障实录)。
Q4:apt-get install pcp 提示 Unable to locate package 或 404?
方案 A 需确认已启用 universe 组件(apt-cache policy pcp 无 jammy/universe 行时执行 add-apt-repository universe);方案 B 检查 /etc/apt/sources.list.d/performancecopilot_pcp.list 中发行版代号是否为 jammy,以及 packagecloud.io 是否可达(可达性排查用 curl -sI https://packagecloud.io/performancecopilot/pcp/ubuntu/dists/jammy/main/binary-amd64/Packages | head -1,实测返回 HTTP/2 302——Packagecloud 会 302 重定向到对象存储签名 URL,能拿到状态行即源可达)。
Q5:purge 后仍有残留?
正常现象,见第十章实测:dpkg 会警告 directory '/var/lib/pcp/config/pmda' not empty so not removed,运行/归档数据目录需手工删除。
十、卸载与清理
systemctl stop pmlogger
systemctl stop pmcd
DEBIAN_FRONTEND=noninteractive apt-get purge -y pcp pcp-conf pcp-atop pcp-dstat pcp-htop python3-pcp libpcp4 libpcp-archive1 libpcp-gui2 libpcp-import1 libpcp-import2 libpcp-mmv1 libpcp-pmda-perl libpcp-pmda3 libpcp-trace2 libpcp-web1
输出节选(实测尾部):
dpkg: warning: while removing pcp, directory '/var/lib/pcp/config/pmda' not empty so not removed
Purging configuration files for pcp-conf (7.2.2-1) ...
dpkg: warning: while removing pcp-conf, directory '/var/lib/pcp/pmns' not empty so not removed
Purging configuration files for pcp-dstat (7.2.2-1) ...
Purging configuration files for pcp-atop (7.2.2-1) ...
DEBIAN_FRONTEND=noninteractive apt-get autoremove --purge -y
0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.
确认包已清零、再手工清理数据与归档目录(实测):
dpkg -l | grep -c " pcp "
0
rm -rf /var/log/pcp /var/lib/pcp
ls /var/lib/pcp
ls: cannot access '/var/lib/pcp': No such file or directory
⚠️ 注意:
/var/log/pcp里是历史性能归档,卸载前若还要复盘故障数据,先把/var/log/pcp/pmlogger/拷走;方案 B 用户还需按需删除/etc/apt/sources.list.d/performancecopilot_pcp.list与/etc/apt/keyrings/performancecopilot_pcp-archive-keyring.gpg并apt-get update。
十一、参考链接
- PCP 官方下载页(Packagecloud 仓库指引):https://pcp.io/download.html
- Packagecloud 仓库页:https://packagecloud.io/performancecopilot/pcp
- PCP 官方文档站:https://pcp.readthedocs.io/
- GitHub 仓库:https://github.com/performancecopilot/pcp
- Ubuntu 包索引(jammy/universe pcp):https://packages.ubuntu.com/jammy/pcp
- 本专栏认知选型篇:《Performance Co-Pilot 介绍与选型指南》
- 本专栏配置篇:《Performance Co-Pilot 7.2.2 配置参数详解》
- 本专栏 CLI 工具篇:《Performance Co-Pilot 7.2.2 常用 CLI 命令与工具详解》