PCPCOMPAT(1)
Okay bestie, welcome to PCPCOMPAT(1) from the General Commands Manual π this is basically the "what happened to my old PCP tools?" page and I'm so here for it π
β¨ NAME β¨
PCPCompat, pcp-collectl, pmmgr, pmwebd β backward-compatibility in the Performance Co-Pilot (PCP) π¦
πΈ INTRODUCTION πΈ
Okay so PCP is a toolkit for monitoring and managing system-level performance π The services are distributed and scalable, so they can handle the most complex system setups and the most chaotic performance problems π₯
To make all of that work, PCP keeps protocol and on-disk compatibility between versions. It's not just allowed, it's encouraged to use current PCP tools to poke at any remote, down-rev or up-rev pmcd(1), and to replay any historical PCP archive. The PCP testsuite has archives over 20 years old, no cap π
Every so often the PCP devs deprecate and remove utilities and swap them for new ones with comparable features. This page is your cheat sheet for finding the replacements for the old PCP tools π§
π PYTHON2 π
PCP gives you python(1) interfaces for the PMAPI(3) (Performance Metrics API), the PMDA(3) API (Performance Metrics Domain Agents), the mmv_stats_register(3) API (Memory-Mapped Values), and the PCP archive creation LOGIMPORT(3) API.
Python 2 hit end-of-life in 2020, so PCP removed all support for it starting with PCP version 7. All PCP APIs and python-based tools have supported python version 3 for several years now, so upgrading is strongly recommended β οΈ bestie, please don't be the one still on python 2 π
π¨ QT4 π¨
PCP has optional graphical user interfaces built on the cross-platform Qt library, especially pmchart(1) and pmtime(1) β¨
Qt v4 reached end-of-life in 2015, so PCP dropped support for every version before Qt v5. Some features that are now mandatory when building and using PCP Qt tools are missing from early versions of Qt v5, so the minimum for PCP v6 and beyond is now Qt 5.6 π
π NSS π
Before PCP v6, the encryption side of secure sockets used a mix of Mozilla NSS (Network Security Services) and OpenSSL. Starting with PCP v6, it's all OpenSSL, all the time π This changes how you configure optional features in pmcd(1) and in PMAPI(3) client tools that use secure sockets.
The vibe shift is that encryption is set up the same way everywhere, with the same certificates, across the HTTPS functionality in pmproxy(1) and across the encrypted PCP protocol between pmcd, pmproxy and PMAPI client tools π«Ά The key-value server used by pmseries(1) and pmproxy also uses only OpenSSL, in a way that's similar to PCP, which makes running these services way simpler π
π SAR2PCP, IOSTAT2PCP π
The sar2pcp(1) and iostat2pcp(1) utilities are deprecated and will be retired in a future version of PCP (v7) π₯² Their replacement is native support for making PCP archives inside the tools of the sysstat package. That includes sar itself, plus the sadf utility, which makes PCP archives through the -l option π
π οΈ PMLOGCONF-SETUP π οΈ
Earlier versions of PCP (prior to v5.1.1) shipped a shell script that pmlogconf(1) used internally. It lived in the PCP_BINADM_DIR directory and was named pmlogconf-setup. That script has been retired πͺ¦ The same functionality is still there in the unlikely event you need it, through the -s or --setup option to pmlogconf(1).
The version 1 pmlogconf-setup configuration file format (from IRIX) was also retired in this release. It had been automatically transitioned to version 2 format by pmlogconf for more than 10 years, so it was ready to go π
π PMMGR π
The stand-alone PCP daemon manager pmmgr has been retired from PCP v5.2.0 onward π’ It got phased out in favour of the simpler pmfind(1) service. Now you set up pmie(1) and pmlogger(1) "farms" of discovered PCP collector systems with pmfind_check(1) π§
The new mechanisms are giving main character energy. Especially when they're integrated with systemd, they don't need any extra daemons, and they fit in better with the pmie and pmlogger service management used everywhere else in PCP β
π§βπ» PCP-COLLECTL π§βπ»
The pcp-collectl utility has been superseded by pmrep(1) from PCP v5 onward π
The equivalent of pcp-collectl subsystem reporting is achieved like this:
pmrep :collectl-scβ the processor subsystem view π§pmrep :collectl-smβ the memory subsystem view πΎpmrep :collectl-sdβ the aggregate disks view πΏpmrep :collectl-sDβ the per-disk-device view πpmrep :collectl-dm-sDβ the device mapper view πΊοΈpmrep :collectl-snβ the network subsystem view π
π PCP-WEBAPPS π
The stand-alone web applications from older PCP versions have been superseded by grafana-server(1) with the grafana-pcp plugin, found at https://github.com/performancecopilot/grafana-pcp π
This plugin gives you an implementation of the Vector application, plus data sources for pmdabpftrace(1) (bpftrace(8) scripts) and pmseries(1) (fast, scalable, distributed time series analysis) π
π¦ PMWEBD π¦
The pmwebd daemon has been superseded by pmproxy(1) from PCP v5 onward π«§
By default, pmproxy now listens on both its original port (44322) and the PCP web API port (44323) when the time series support is built. Double the doors, double the vibes πͺβ¨
pmproxy provides a compatible implementation of the live PMWEBAPI(3) interfaces that the Vector web application traditionally used (see the "PCP-WEBAPPS" section). It also adds extensions to the original pmwebd REST APIs, like derived metrics, namespace lookups and instance domain profiles. You also get support for the HTTPS protocol, plus fast, scalable time series querying through the pmseries(1) REST API with a distributed key-value server such as https://valkey.io/ π₯
The partial Graphite API emulation that pmwebd provided has not been re-implemented. If your apps want similar services, they can use the scalable time series REST APIs described on PMWEBAPI(3) π§
π SEE ALSO π
pcp(1), pmcd(1), iostat2pcp(1), sar2pcp(1), pmrep(1), pmfind(1), pmfind_check(1), pmlogconf(1), pmproxy(1), pmseries(1), pmdabpftrace(1), python(1), grafana-server(1), mmv_stats_register(3), LOGIMPORT(3), PMAPI(3), PMDA(3) and PMWEBAPI(3) π
Bye bestie, that's the whole PCP compat tea β Source: Performance Co-Pilot Β· Version: PCP Β· Manual: PCPCOMPAT(1) π¦π
π¦ where this page comes from
- arch rolling: pcp 7.2.2-2 Β· GPL-2.0-or-later AND LGPL-2.1-or-later AND CC-BY-3.0
- centos-stream 10: pcp-doc 7.1.5-6.el10 Β· GPL-2.0-or-later AND CC-BY-3.0
- fedora 43: pcp-doc 7.0.1-1.fc43 Β· GPL-2.0-or-later AND CC-BY-3.0
- fedora 43: pcp-doc 7.2.1-1.fc43
- fedora 43: pcp-doc 7.2.2-1.fc43
- fedora 43: pcp-doc 7.2.2-2.fc43 Β· GPL-2.0-or-later AND CC-BY-3.0
- fedora 44: pcp-doc 7.1.0-6.fc44 Β· GPL-2.0-or-later AND CC-BY-3.0
- fedora 44: pcp-doc 7.2.1-1.fc44
- fedora 44: pcp-doc 7.2.2-1.fc44
- fedora 44: pcp-doc 7.2.2-2.fc44 Β· GPL-2.0-or-later AND CC-BY-3.0
- ubuntu resolute: pcp 7.1.1-1
- ubuntu stonking: pcp 7.2.1-2build1
- Copyright (c) 2019-2022 Red Hat
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms