2022-04-28 12:31:09 +00:00
# Performance Co-Pilot container
2024-05-07 19:11:09 +00:00

2022-04-28 12:31:09 +00:00
Performance Co-Pilot ([PCP ](https://pcp.io )) is a system performance analysis toolkit.
## Usage
```
$ podman run -d \
--name pcp \
--systemd always \
-p 44321:44321 \
-p 44322:44322 \
-v pcp-archives:/var/log/pcp/pmlogger \
2024-05-07 19:11:09 +00:00
registry.opensuse.org/opensuse/pcp:%%pcp_patch%%
2022-04-28 12:31:09 +00:00
```
**Note:** On SELinux enabled systems, the following boolean needs to be set: `sudo setsebool -P container_manage_cgroup true`
### Enabling host processes, network and container metrics
```
$ sudo podman run -d \
--name pcp \
--privileged \
--net host \
--systemd always \
-e HOST_MOUNT=/host \
-v pcp-archives:/var/log/pcp/pmlogger \
-v /:/host:ro,rslave \
2024-05-07 19:11:09 +00:00
registry.opensuse.org/opensuse/pcp:%%pcp_patch%%
2022-04-28 12:31:09 +00:00
```
## Configuration
### Environment Variables
#### `PCP_SERVICES`
Default: `pmcd,pmie,pmlogger,pmproxy`
Comma-separated list of PCP services to start.
#### `HOST_MOUNT`
Default: unset.
Path inside the container to the bind mount of `/` on the host.
#### `REDIS_SERVERS`
Default: `localhost:6379`
Redis connection spec(s) - could be any individual cluster host, and all hosts in the cluster will be automatically discovered.
Alternately, use comma-separated hostspecs (non-clustered setup)
### Configuration Files
For custom configuration options beyond the above environment variables, it is advised to use a bind mount with a configuration file on the host to the container.
Example command to run a pmlogger-only container:
```
$ podman run -d \
--name pmlogger \
--systemd always \
-e PCP_SERVICES=pmlogger \
-v $(pwd)/pmlogger.control:/etc/pcp/pmlogger/control.d/local:z \
-v pcp-archives:/var/log/pcp/pmlogger \
2024-05-07 19:11:09 +00:00
registry.opensuse.org/opensuse/pcp:%%pcp_patch%%
2022-04-28 12:31:09 +00:00
```
pmlogger.control:
```
$version=1.1
remote.pmcdhost.corp n n PCP_ARCHIVE_DIR/remote_pmcd -N -r -T24h10m -c config.default -v 100Mb
```
## Volumes
### `/var/log/pcp/pmlogger`
Performance Co-Pilot archive files with historical metrics.
## Ports
### `44321/tcp`
The pmcd daemon listens on this port and exposes the [PMAPI(3) ](https://man7.org/linux/man-pages/man3/pmapi.3.html ) to access metrics.
### `44322/tcp`
The pmproxy daemon listens on this port and exposes the REST [PMWEBAPI(3) ](https://man7.org/linux/man-pages/man3/pmwebapi.3.html ) to access metrics.
## Documentation
[PCP books ](https://pcp.readthedocs.io )
2024-05-02 07:41:37 +00:00
## Licensing
`SPDX-License-Identifier: (LGPL-2.1+ AND GPL-2.0+)`
The build recipe and this documentation is licensed as (LGPL-2.1+ AND GPL-2.0+).
The container itself contains various software components under various open source licenses listed in the associated
Software Bill of Materials (SBOM).
This image is based on [openSUSE Tumbleweed ](https://get.opensuse.org/tumbleweed/ ).