Skip to content

Commit 7bb8b34

Browse files
viberanEugene Brusilovsky
authored andcommitted
add raw_cgroup_prefix_whitelist flag and fix issue #2129
1 parent 150629c commit 7bb8b34

File tree

2 files changed

+12
-7
lines changed

2 files changed

+12
-7
lines changed

cadvisor.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ var whitelistedContainerLabels = flag.String("whitelisted_container_labels", "",
6565

6666
var urlBasePrefix = flag.String("url_base_prefix", "", "prefix path that will be prepended to all paths to support some reverse proxies")
6767

68+
var rawCgroupPrefixWhiteList = flag.String("raw_cgroup_prefix_whitelist", "", "A comma-separated list of cgroup path prefix that needs to be collected even when -docker_only is specified")
69+
6870
var (
6971
// Metrics to be ignored.
7072
// Tcp metrics are ignored by default.
@@ -145,7 +147,7 @@ func main() {
145147

146148
collectorHttpClient := createCollectorHttpClient(*collectorCert, *collectorKey)
147149

148-
containerManager, err := manager.New(memoryStorage, sysFs, *maxHousekeepingInterval, *allowDynamicHousekeeping, includedMetrics, &collectorHttpClient, []string{"/"})
150+
containerManager, err := manager.New(memoryStorage, sysFs, *maxHousekeepingInterval, *allowDynamicHousekeeping, includedMetrics, &collectorHttpClient, strings.Split(*rawCgroupPrefixWhiteList,","))
149151
if err != nil {
150152
klog.Fatalf("Failed to create a Container Manager: %s", err)
151153
}

container/raw/factory.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,17 +63,20 @@ func (self *rawFactory) NewContainerHandler(name string, inHostNamespace bool) (
6363
return newRawContainerHandler(name, self.cgroupSubsystems, self.machineInfoFactory, self.fsInfo, self.watcher, rootFs, self.includedMetrics)
6464
}
6565

66-
// The raw factory can handle any container. If --docker_only is set to false, non-docker containers are ignored.
66+
// The raw factory can handle any container. If --docker_only is set to true, non-docker containers are ignored except for "/" and those whitelisted by raw_cgroup_prefix_whitelist flag.
6767
func (self *rawFactory) CanHandleAndAccept(name string) (bool, bool, error) {
68-
accept := name == "/" || !*dockerOnly
69-
68+
if name == "/" {
69+
return true, true, nil
70+
}
71+
if *dockerOnly && self.rawPrefixWhiteList[0] == "" {
72+
return true, false, nil
73+
}
7074
for _, prefix := range self.rawPrefixWhiteList {
7175
if strings.HasPrefix(name, prefix) {
72-
accept = true
73-
break
76+
return true, true, nil
7477
}
7578
}
76-
return true, accept, nil
79+
return true, false, nil
7780
}
7881

7982
func (self *rawFactory) DebugInfo() map[string][]string {

0 commit comments

Comments
 (0)