Podman metrics

The biggest difference of podman and docker is
that podman do not have any daemon, so collecting metrics could be a little bit difficult.
Find all containers
# podman info
store:
configFile: /home/xxxxxxxx/.config/containers/storage.conf
graphRoot: /home/xxxxxxxx/.local/share/containers/storage
runRoot: /run/user/1000/containers
volumePath: /home/xxxxxxxx/.local/share/containers/storage/volumesLike docker, podman stores its state on host
$graphRoot/overlay-containers/containers.json
[
{
"id": "57656b20fb883085861e0047f87e29302bfb811ca3e13ab9308650b7070f2fd5",
"names": [
"sleepy_ramanujan"
],
"image": "97662d24417b316f60607afbca9f226a2ba58f09d642f27b8e197a89859ddc8e",
"layer": "2115060fb7fe51dd2068d56ab4976450dd70f010051df5c5be7fd39fa98138a0",
"metadata": "{\"image-name\":\"docker.io/library/nginx:1.27.4\",\"image-id\":\"97662d24417b316f60607afbca9f226a2ba58f09d642f27b8e197a89859ddc8e\",\"name\":\"sleepy_ramanujan\",\"created-at\":1760200649}",
"created": "2025-10-11T16:37:29.214855063Z",
"flags": {
"MountLabel": "system_u:object_r:container_file_t:s0:c672,c910",
"ProcessLabel": "system_u:system_r:container_t:s0:c672,c910"
}
}
]$graphRoot/overlay-images/images.json
[
{
"id": "97662d24417b316f60607afbca9f226a2ba58f09d642f27b8e197a89859ddc8e",
"digest": "sha256:9e99f6cd0918df7f2798ae61eecaeadb0e946101035ae801d4070fc23edff6fa",
"names": [
"docker.io/library/nginx:1.27.4"
],
"names-history": [
"docker.io/library/nginx:1.27.4"
],
"layer": "d6013af268eea2ba682c4fa922187978220a59478aadc7e9a510b9e93f232470",
"metadata": "{}",
"big-data-names": [
"sha256:97662d24417b316f60607afbca9f226a2ba58f09d642f27b8e197a89859ddc8e",
"manifest-sha256:9e99f6cd0918df7f2798ae61eecaeadb0e946101035ae801d4070fc23edff6fa",
"manifest"
],
"big-data-sizes": {
"manifest": 1307,
"manifest-sha256:9e99f6cd0918df7f2798ae61eecaeadb0e946101035ae801d4070fc23edff6fa": 1307,
"sha256:97662d24417b316f60607afbca9f226a2ba58f09d642f27b8e197a89859ddc8e": 8582
},
"big-data-digests": {
"manifest": "sha256:9e99f6cd0918df7f2798ae61eecaeadb0e946101035ae801d4070fc23edff6fa",
"manifest-sha256:9e99f6cd0918df7f2798ae61eecaeadb0e946101035ae801d4070fc23edff6fa": "sha256:9e99f6cd0918df7f2798ae61eecaeadb0e946101035ae801d4070fc23edff6fa",
"sha256:97662d24417b316f60607afbca9f226a2ba58f09d642f27b8e197a89859ddc8e": "sha256:97662d24417b316f60607afbca9f226a2ba58f09d642f27b8e197a89859ddc8e"
},
"created": "2025-02-05T21:27:16Z"
}
]Now, we have got all information about images and containers
Finding out all running containers
All running containers must have a pidfile, for example
cat $runRoot/overlay-containers/6af17555490a1e9a2505b3128e5f1b2bc1243bf8b36e808b571b9686ca2cf7d0/userdata/pidfile
12345Then, get cgroup info
cat /proc/12345/cgroup
0::/user.slice/user-1000.slice/user@1000.service/user.slice/libpod-6af17555490a1e9a2505b3128e5f1b2bc1243bf8b36e808b571b9686ca2cf7d0.scope/containerNow, we got everything we need, but network stats
ls /sys/fs/cgroup/user.slice/user-1000.slice/user@1000.service/user.slice/libpod-6af17555490a1e9a2505b3128e5f1b2bc1243bf8b36e808b571b9686ca2cf7d0.scope/container/
cgroup.controllers cgroup.procs cpu.max.burst cpu.weight.nice io.weight memory.max memory.stat memory.zswap.max
cgroup.events cgroup.stat cpu.pressure io.bfq.weight irq.pressure memory.min memory.swap.current memory.zswap.writeback
cgroup.freeze cgroup.subtree_control cpu.stat io.latency memory.current memory.numa_stat memory.swap.events pids.current
cgroup.kill cgroup.threads cpu.stat.local io.max memory.events memory.oom.group memory.swap.high pids.events
cgroup.max.depth cgroup.type cpu.uclamp.max io.pressure memory.events.local memory.peak memory.swap.max pids.events.local
cgroup.max.descendants cpu.idle cpu.uclamp.min io.prio.class memory.high memory.pressure memory.swap.peak pids.max
cgroup.pressure cpu.max cpu.weight io.stat memory.low memory.reclaim memory.zswap.current pids.peak