master
h 88 lines 2.53 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 #ifndef NETDATA_EBPF_CGROUP_H
4 #define NETDATA_EBPF_CGROUP_H 1
5
6 #include "ebpf.h"
7 #include "ebpf_apps.h"
8
9 struct pid_on_target2 {
10 int32_t pid;
11 int updated;
12
13 netdata_publish_swap_t swap;
14 netdata_publish_fd_stat_t fd;
15 netdata_publish_vfs_t vfs;
16 ebpf_publish_process_t ps;
17 netdata_dcstat_pid_t dc;
18 netdata_publish_shm_t shm;
19 netdata_socket_t socket;
20 netdata_publish_cachestat_t cachestat;
21
22 struct pid_on_target2 *next;
23 };
24
25 enum ebpf_cgroup_flags {
26 NETDATA_EBPF_CGROUP_HAS_PROCESS_CHART = 1,
27 NETDATA_EBPF_CGROUP_HAS_SWAP_CHART = 1 << 2,
28 NETDATA_EBPF_CGROUP_HAS_SOCKET_CHART = 1 << 3,
29 NETDATA_EBPF_CGROUP_HAS_FD_CHART = 1 << 4,
30 NETDATA_EBPF_CGROUP_HAS_VFS_CHART = 1 << 5,
31 NETDATA_EBPF_CGROUP_HAS_OOMKILL_CHART = 1 << 6,
32 NETDATA_EBPF_CGROUP_HAS_CACHESTAT_CHART = 1 << 7,
33 NETDATA_EBPF_CGROUP_HAS_DC_CHART = 1 << 8,
34 NETDATA_EBPF_CGROUP_HAS_SHM_CHART = 1 << 9,
35
36 NETDATA_EBPF_SERVICES_HAS_PROCESS_CHART = 1 << 16,
37 NETDATA_EBPF_SERVICES_HAS_SWAP_CHART = 1 << 17,
38 NETDATA_EBPF_SERVICES_HAS_SOCKET_CHART = 1 << 18,
39 NETDATA_EBPF_SERVICES_HAS_FD_CHART = 1 << 19,
40 NETDATA_EBPF_SERVICES_HAS_VFS_CHART = 1 << 20,
41 NETDATA_EBPF_SERVICES_HAS_OOMKILL_CHART = 1 << 21,
42 NETDATA_EBPF_SERVICES_HAS_CACHESTAT_CHART = 1 << 22,
43 NETDATA_EBPF_SERVICES_HAS_DC_CHART = 1 << 23,
44 NETDATA_EBPF_SERVICES_HAS_SHM_CHART = 1 << 24
45 };
46
47 typedef struct ebpf_cgroup_target {
48 char name[256]; // title
49 uint32_t hash;
50 uint32_t flags;
51 uint32_t systemd;
52 uint32_t updated;
53
54 netdata_publish_swap_t publish_systemd_swap;
55 netdata_publish_fd_stat_t publish_systemd_fd;
56 netdata_publish_vfs_t publish_systemd_vfs;
57 ebpf_publish_process_t publish_systemd_ps;
58 netdata_publish_dcstat_t publish_dc;
59 int oomkill;
60 netdata_publish_shm_t publish_shm;
61 ebpf_socket_publish_apps_t publish_socket;
62 netdata_publish_cachestat_t publish_cachestat;
63
64 struct pid_on_target2 *pids;
65 struct ebpf_cgroup_target *next;
66 } ebpf_cgroup_target_t;
67
68 typedef struct ebpf_systemd_args {
69 char *id;
70 char *title;
71 char *units;
72 char *family;
73 char *charttype;
74 int order;
75 char *algorithm;
76 char *context;
77 char *module;
78 int update_every;
79 char *suffix;
80 char *dimension;
81 } ebpf_systemd_args_t;
82
83 void ebpf_create_charts_on_systemd(ebpf_systemd_args_t *chart);
84 void ebpf_cgroup_integration(void *ptr);
85 void ebpf_cgroup_cache_cleanup(void);
86 extern _Atomic int send_cgroup_chart;
87
88 #endif /* NETDATA_EBPF_CGROUP_H */