ebpf_exporter

Форк
0
40 строк · 876.0 Байт
1
package decoder
2

3
import (
4
	"fmt"
5
	"strconv"
6

7
	"github.com/cloudflare/ebpf_exporter/v2/cgroup"
8
	"github.com/cloudflare/ebpf_exporter/v2/config"
9
)
10

11
// CGroup is a decoder that transforms cgroup id to path in cgroupfs
12
type CGroup struct {
13
	monitor *cgroup.Monitor
14
}
15

16
// NewCgroupDecoder creates a new cgroup decoder
17
func NewCgroupDecoder() (*CGroup, error) {
18
	monitor, err := cgroup.NewMonitor("/sys/fs/cgroup")
19
	if err != nil {
20
		return nil, fmt.Errorf("error creating cgroup monitor: %v", err)
21
	}
22

23
	return &CGroup{monitor}, nil
24
}
25

26
// Decode transforms cgroup id to path in cgroupfs
27
func (c *CGroup) Decode(in []byte, _ config.Decoder) ([]byte, error) {
28
	cgroupID, err := strconv.Atoi(string(in))
29
	if err != nil {
30
		return nil, err
31
	}
32

33
	path := c.monitor.Resolve(cgroupID)
34

35
	if path == "" {
36
		path = fmt.Sprintf("unknown_cgroup_id:%d", cgroupID)
37
	}
38

39
	return []byte(path), nil
40
}
41

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.