[8.x](backport #41889) Add support for podman metrics in docker module #41967
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Proposed commit message
Details
Podman offers a docker compatible API for metrics collection. So using docker module to collect podman metrics should be working out of the box.
In reality the memory metrics were not published at all and cpu usage percentage calculation was incorrect.
The reason is that the podman api returns zero values for
precpu_stats
. These stats refer to the latest's read cpu statistics, needed for cpu percentage calculation. Also due to these stats being zero, the memory metrics were not populated because of a sanity check in the code.beats/metricbeat/module/docker/memory/helper.go
Line 55 in 3f51793
For docker, the
precpu_stats
are returned every time.The solution in the Podman's case is to stream the api response. By default we had set the stream option to false as there was no need in case of docker.
As part of this PR we introduce a new configuration parameter named
podman
(by default false). If set to true, indicating that podman is used, then the stream parameter is set to true, only for the collection of cpu and memory stats.The reason is that for cpu and memory stats the
precpu_stats
are needed.From the streamed response, we get the second response as it was noticed during testing that the
precpu_stats
of the first response were incorrect and the cpu was miscalculated.Checklist
CHANGELOG.next.asciidoc
orCHANGELOG-developer.next.asciidoc
.Disruptive User Impact
There is no disruptive user impact.
How to test this PR locally
podman run -d -p 8080:80 --name mynginx nginx
a.
podman exec -ti mynginx bash
b.
while true; do :; done &
podman
parameter set to truepodman stats
command results.Related issues
Use cases
Screenshots
Podman Stats command (check for mynginx container)
This is an automatic backport of pull request #41889 done by [Mergify](https://mergify.com).