Ubuntu 22.04 安装 Performance Co-Pilot 7.2.2 指南

Ubuntu 22.04 服务器从零安装 Performance Co-Pilot 7.2.2 实战:Ubuntu 默认仓库/官方 Packagecloud 源/离线 deb 包三方案逐条实测,pmcd+pmlogger systemd 托管与验证、方案对比、配置要点、排障实录与卸载清理。

Performance Co-PilotPerformance Co-PilotPCP监控2026/11/01

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_64uname -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-1build12022 年随发行版冻结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-1build17.2.2-1(最新稳定)7.2.2-1
是否需联网需(archive.ubuntu.com)需(packagecloud.io)目标机不需要
安装方式apt install pcp脚本配源 + apt install pcpdpkg -i *.deb
systemd 单元来源发行版包上游包(同 A,另含 farm 单元)上游包
附带工具基础 CLI+pcp-htop / pcp-atop / pcp-dstat+pcp-htop / pcp-atop / pcp-dstat
升级体验随发行版,极慢apt upgrade 平滑跟随上游每次需重新攒包
主要缺点版本落后、缺 7.x 新特性引入第三方源依赖闭包需自己保证

选择建议:

  1. 生产服务器、可访问外网 → 方案 B(唯一能持续获得安全更新与新特性的路径);
  2. 隔离网段/等保环境 → 方案 C,依赖闭包务必用 --download-only 递归解析,别手抄清单;
  3. 只想快速验证 PCP 是否适合业务 → 方案 A,接受 5.x 功能子集;
  4. 三方案装出来的 pmcd/pmlogger 数据面完全兼容,后续从 A 切 B 只需配源后 apt-get install -y pcp=7.2.2-1 原地升级,配置与归档不丢。

八、配置说明

安装后需要知道的配置与路径要点(参数级详解见本专栏配置篇):

  1. 全局环境文件 /etc/pcp.conf:定义 pcp_* 全套路径变量(pcp_pf_dir、pcp_log_dir、pcp_var_dir 等),所有 PCP 工具启动时都读取它;一般无需改动。

  2. 组件配置目录 /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 的开关配置)。

  3. 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.so
    

    pipe 为独立进程代理、dso 为共享库内嵌代理;增删 PMDA 用 pmcdctl 命令而非手改此文件。

  4. 网络暴露: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 等价规则。)

  5. 归档落盘:pmlogger 默认对 localhost 全量记录,归档写 /var/log/pcp/pmlogger/<主机名>/,每日由 pmlogger_daily 定时任务合并压缩;磁盘规划需按默认全量归档的增速预留(实测单机运行 1 小时即生成多组三件套归档,du -sh /var/log/pcp/pmlogger/*/ 查看增速,长期运行建议保留策略见配置篇)。

  6. 运行账号:包安装自动创建 pcp 系统账号,守护进程均以其运行(实测):

    id pcp
    ps -ef | grep [p]mcd | head -1
    
    uid=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。

十一、参考链接

  1. PCP 官方下载页(Packagecloud 仓库指引):https://pcp.io/download.html
  2. Packagecloud 仓库页:https://packagecloud.io/performancecopilot/pcp
  3. PCP 官方文档站:https://pcp.readthedocs.io/
  4. GitHub 仓库:https://github.com/performancecopilot/pcp
  5. Ubuntu 包索引(jammy/universe pcp):https://packages.ubuntu.com/jammy/pcp
  6. 本专栏认知选型篇:《Performance Co-Pilot 介绍与选型指南》
  7. 本专栏配置篇:《Performance Co-Pilot 7.2.2 配置参数详解》
  8. 本专栏 CLI 工具篇:《Performance Co-Pilot 7.2.2 常用 CLI 命令与工具详解》
Ubuntu 22.04 安装 Performance Co-Pilot 7.2.2 指南 - Quzuo