Tags: google/cadvisor
Tags
lib/manager: allow disabling container discovery When Kubelet has CRI stats enabled, the container runtime handles container tracking and cAdvisor is only queried for the root container stats. Discovering and watching all containers at startup is unnecessary overhead in that mode. Add a DisableContainerDiscovery option to HousekeepingConfig that skips plugin initialization, cgroup watchers, subcontainer scanning, and the global housekeeping loop. The root container is still created at startup to serve node-level resource and filesystem stats. Other containers are created lazily via getContainer() on first query. Signed-off-by: Damien Grisonnet <dgrisonn@redhat.com>
lib/manager: allow disabling container discovery When Kubelet has CRI stats enabled, the container runtime handles container tracking and cAdvisor is only queried for the root container stats. Discovering and watching all containers at startup is unnecessary overhead in that mode. Add a DisableContainerDiscovery option to HousekeepingConfig that skips plugin initialization, cgroup watchers, subcontainer scanning, and the global housekeeping loop. The root container is still created at startup to serve node-level resource and filesystem stats. Other containers are created lazily via getContainer() on first query. Signed-off-by: Damien Grisonnet <dgrisonn@redhat.com>
build(deps): bump golang.org/x/crypto Updates `golang.org/x/crypto` from 0.51.0 to 0.54.0 - [Commits](golang/crypto@v0.51.0...v0.54.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-version: 0.54.0 dependency-type: indirect dependency-group: go_modules ... Signed-off-by: dependabot[bot] <support@github.com>
build(deps): bump golang.org/x/crypto Updates `golang.org/x/crypto` from 0.51.0 to 0.54.0 - [Commits](golang/crypto@v0.51.0...v0.54.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-version: 0.54.0 dependency-type: indirect dependency-group: go_modules ... Signed-off-by: dependabot[bot] <support@github.com>
Move OOM watching out of the lib module into the binary The lib module is the subset of cAdvisor that the kubelet vendors, and the kubelet does not need cAdvisor to watch for OOMs. It reads /dev/kmsg itself and supplies container_oom_events_total on its own, so the OOM machinery does not belong in lib. Remove watchForNewOoms and the per-container OOM counter from lib/manager, and move the kmsg reader (utils/oomparser) from lib to the root module, which the binary depends on. lib no longer imports github.com/euank/go-kmsg-parser. The cAdvisor binary keeps its OOM events and the container_oom_events_total metric. cmd/internal/api now runs the OOM watcher, feeds OOM and OOM-kill events to the event manager, and wraps the manager so the prometheus collector reports the per-container OOM count. Signed-off-by: Davanum Srinivas <davanum@gmail.com>
Move OOM watching out of the lib module into the binary The lib module is the subset of cAdvisor that the kubelet vendors, and the kubelet does not need cAdvisor to watch for OOMs. It reads /dev/kmsg itself and supplies container_oom_events_total on its own, so the OOM machinery does not belong in lib. Remove watchForNewOoms and the per-container OOM counter from lib/manager, and move the kmsg reader (utils/oomparser) from lib to the root module, which the binary depends on. lib no longer imports github.com/euank/go-kmsg-parser. The cAdvisor binary keeps its OOM events and the container_oom_events_total metric. cmd/internal/api now runs the OOM watcher, feeds OOM and OOM-kill events to the event manager, and wraps the manager so the prometheus collector reports the per-container OOM count. Signed-off-by: Davanum Srinivas <davanum@gmail.com>
lib/model: make ContainerStats sub-stats pointers to convey collectio… …n presence The collapsed model used value types for the per-subsystem stats (Cpu, Memory, Network, DiskIo, Processes), which cannot express "not collected" versus "collected and zero". Restore pointer fields so a nil signals the subsystem was not collected, matching the info/v2 shape the kubelet relies on. Handlers allocate each pointer when they collect the subsystem; the metrics collector and the v1/v2 REST converters nil-guard their reads. Signed-off-by: Davanum Srinivas <davanum@gmail.com>
lib/model: make ContainerStats sub-stats pointers to convey collectio… …n presence The collapsed model used value types for the per-subsystem stats (Cpu, Memory, Network, DiskIo, Processes), which cannot express "not collected" versus "collected and zero". Restore pointer fields so a nil signals the subsystem was not collected, matching the info/v2 shape the kubelet relies on. Handlers allocate each pointer when they collect the subsystem; the metrics collector and the v1/v2 REST converters nil-guard their reads. Signed-off-by: Davanum Srinivas <davanum@gmail.com>
deploy: add lib/go.mod to the image build's dependency cache The root go.mod replaces github.com/google/cadvisor/lib => ./lib, so the dependency-cache `go mod download` needs lib/go.mod present. The cmd submodule was handled but lib was not, so the container image build failed with "reading lib/go.mod: no such file or directory". Signed-off-by: Davanum Srinivas <davanum@gmail.com>
cmd: build the binary against lib + register the injection seams cmd builds the cAdvisor binary and v1/v2 REST API against lib, registering the perf/resctrl factories, summary reader, process-list and app-metrics providers, the cpu-load reader, and the events.EventManager (via the library's EventSink) into the manager's seams. Signed-off-by: Davanum Srinivas <davanum@gmail.com>
PreviousNext