You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is your feature request related to a problem? Please describe.
Podman receiver uses the official Podman library to interact with Podman daemon and extract metrics from it. The library is quite heavy and pulls in a lot of dependencies that the podman receiver does not really need. It depends on things like btrfs, gpgme, devicemapper, etc which make it inconvenient to build the collector on Linux and much harder (impossible?) to build it on other platforms. Luckily, we can use some build tags to exclude most of these dependencies as done here.
This does allow the collector to be built without pulling in those dependencies but it still causes some inconvenience.
The collector build system needs to have special knowledge about build tags required by a specific component (podman receiver). We don't have a mechanism to auto-discover such component requirements today. We should arguably add it regardless as other components may require it in future but still, not having such requirements in the first place would be better/simpler.
Describe the solution you'd like
Remove libpodman and replace it with a custom REST API client that does only as much as the receiver requires. It should still support all communication and auth mechanisms that the official library supports e.g, ssh.
Additional context
Podman has been requested to split their Go API bindings out of the core repo which should alleviate some of these problems but looks like it is not a priority at the moment. containers/podman#6866
The text was updated successfully, but these errors were encountered:
owais
changed the title
Podman receiver: Replace libpodman with custom REST client to monitor podman
Podman receiver: Replace official Podman bindings with custom REST client to monitor podman
Sep 15, 2021
podmanreceiver uses the official Go podman bindings but the bindings
pull in all of the podman codebase and it's dependencies. We are
essentially embedding podman into the collector. This causes a number of
problems both at compile and run time.
This commit ditches the podman library and uses net/http to consume the
podman v3 REST API instead.
Fixes#5244Fixes#5414Fixes#5241Fixes#5245
Is your feature request related to a problem? Please describe.
Podman receiver uses the official Podman library to interact with Podman daemon and extract metrics from it. The library is quite heavy and pulls in a lot of dependencies that the podman receiver does not really need. It depends on things like btrfs, gpgme, devicemapper, etc which make it inconvenient to build the collector on Linux and much harder (impossible?) to build it on other platforms. Luckily, we can use some build tags to exclude most of these dependencies as done here.
This does allow the collector to be built without pulling in those dependencies but it still causes some inconvenience.
Describe the solution you'd like
Remove libpodman and replace it with a custom REST API client that does only as much as the receiver requires. It should still support all communication and auth mechanisms that the official library supports e.g, ssh.
Additional context
Podman has been requested to split their Go API bindings out of the core repo which should alleviate some of these problems but looks like it is not a priority at the moment. containers/podman#6866
This would also solve issues like this: #5414
The text was updated successfully, but these errors were encountered: