ebpf_exporter
36 строк · 701.0 Байт
1package cgroup
2
3import (
4"log"
5)
6
7type monitor interface {
8Resolve(int) string
9}
10
11// Monitor resolves cgroup ids into their respective paths
12type Monitor struct {
13inner monitor
14}
15
16// NewMonitor returns a new cgroup monitor for a given path
17func NewMonitor(path string) (*Monitor, error) {
18fm, err := newFanotifyMonitor(path)
19if err != nil {
20log.Printf("Using on-demand resolution for cgroups (fanotify not available)")
21
22wm, err := newWalkerMonitor(path)
23if err != nil {
24return nil, err
25}
26
27return &Monitor{inner: wm}, nil
28}
29
30return &Monitor{inner: fm}, nil
31}
32
33// Resolve resolves an id to a path for a cgroup
34func (m *Monitor) Resolve(id int) string {
35return m.inner.Resolve(id)
36}
37