@@ -21,7 +21,7 @@ import (
2121 "strings"
2222 "sync"
2323
24- "github.com/containerd/cgroups"
24+ "github.com/containerd/cgroups/v3/cgroup1 "
2525 "github.com/go-kit/log"
2626 "github.com/go-kit/log/level"
2727)
@@ -30,10 +30,10 @@ func NewCgroupV1Collector(paths []string, logger log.Logger) Collector {
3030 return NewExporter (paths , logger , false )
3131}
3232
33- func subsystem () ([]cgroups .Subsystem , error ) {
34- s := []cgroups .Subsystem {
35- cgroups .NewCpuacct (* CgroupRoot ),
36- cgroups .NewMemory (* CgroupRoot ),
33+ func subsystem () ([]cgroup1 .Subsystem , error ) {
34+ s := []cgroup1 .Subsystem {
35+ cgroup1 .NewCpuacct (* CgroupRoot ),
36+ cgroup1 .NewMemory (* CgroupRoot ),
3737 }
3838 return s , nil
3939}
@@ -75,7 +75,7 @@ func getInfov1(name string, metric *CgroupMetric, logger log.Logger) {
7575 }
7676}
7777
78- func getNamev1 (p cgroups .Process , path string , logger log.Logger ) (string , error ) {
78+ func getNamev1 (p cgroup1 .Process , logger log.Logger ) (string , error ) {
7979 cpuacctPath := filepath .Join (* CgroupRoot , "cpuacct" )
8080 name := strings .TrimPrefix (p .Path , cpuacctPath )
8181 name = strings .TrimSuffix (name , "/" )
@@ -103,15 +103,13 @@ func getNamev1(p cgroups.Process, path string, logger log.Logger) (string, error
103103func (e * Exporter ) getMetricsv1 (name string , pids map [string ][]int ) (CgroupMetric , error ) {
104104 metric := CgroupMetric {name : name }
105105 level .Debug (e .logger ).Log ("msg" , "Loading cgroup" , "root" , * CgroupRoot , "path" , name )
106- ctrl , err := cgroups .Load (subsystem , func (subsystem cgroups.Name ) (string , error ) {
107- return name , nil
108- })
106+ ctrl , err := cgroup1 .Load (cgroup1 .StaticPath (name ), cgroup1 .WithHiearchy (subsystem ))
109107 if err != nil {
110108 level .Error (e .logger ).Log ("msg" , "Failed to load cgroups" , "path" , name , "err" , err )
111109 metric .err = true
112110 return metric , err
113111 }
114- stats , err := ctrl .Stat (cgroups .IgnoreNotExist )
112+ stats , err := ctrl .Stat (cgroup1 .IgnoreNotExist )
115113 if err != nil {
116114 level .Error (e .logger ).Log ("msg" , "Failed to stat cgroups" , "path" , name , "err" , err )
117115 metric .err = true
@@ -166,14 +164,14 @@ func (e *Exporter) collectv1() ([]CgroupMetric, error) {
166164 var metrics []CgroupMetric
167165 for _ , path := range e .paths {
168166 level .Debug (e .logger ).Log ("msg" , "Loading cgroup" , "root" , * CgroupRoot , "path" , path )
169- control , err := cgroups .Load (subsystem , cgroups .StaticPath (path ))
167+ control , err := cgroup1 .Load (cgroup1 .StaticPath (path ), cgroup1 . WithHiearchy ( subsystem ))
170168 if err != nil {
171169 level .Error (e .logger ).Log ("msg" , "Error loading cgroup subsystem" , "root" , * CgroupRoot , "path" , path , "err" , err )
172170 metric := CgroupMetric {name : path , err : true }
173171 metrics = append (metrics , metric )
174172 continue
175173 }
176- processes , err := control .Processes (cgroups .Cpuacct , true )
174+ processes , err := control .Processes (cgroup1 .Cpuacct , true )
177175 if err != nil {
178176 level .Error (e .logger ).Log ("msg" , "Error loading cgroup processes" , "path" , path , "err" , err )
179177 metric := CgroupMetric {name : path , err : true }
@@ -184,7 +182,7 @@ func (e *Exporter) collectv1() ([]CgroupMetric, error) {
184182 pids := make (map [string ][]int )
185183 for _ , p := range processes {
186184 level .Debug (e .logger ).Log ("msg" , "Get Name" , "process" , p .Path , "pid" , p .Pid , "path" , path )
187- name , err := getNamev1 (p , path , e .logger )
185+ name , err := getNamev1 (p , e .logger )
188186 if err != nil {
189187 level .Error (e .logger ).Log ("msg" , "Error getting cgroup name for process" , "process" , p .Path , "path" , path , "err" , err )
190188 continue
0 commit comments