master
h 117 lines 3.82 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 #ifndef NETDATA_EBPF_PROCESS_H
4 #define NETDATA_EBPF_PROCESS_H 1
5
6 // Module name & description
7 #define NETDATA_EBPF_MODULE_NAME_PROCESS "process"
8 #define NETDATA_EBPF_MODULE_PROCESS_DESC \
9 "Monitor information about process life. This thread is integrated with apps and cgroup."
10
11 // Groups used on Dashboard
12 #define NETDATA_PROCESS_GROUP "processes"
13
14 // Global chart name
15 #define NETDATA_EXIT_SYSCALL "exit"
16 #define NETDATA_PROCESS_SYSCALL "process_thread"
17 #define NETDATA_PROCESS_ERROR_NAME "task_error"
18 #define NETDATA_PROCESS_STATUS_NAME "process_status"
19
20 // Charts created on Apps submenu
21 #define NETDATA_SYSCALL_APPS_TASK_PROCESS "process_create"
22 #define NETDATA_SYSCALL_APPS_TASK_THREAD "thread_create"
23 #define NETDATA_SYSCALL_APPS_TASK_EXIT "task_exit"
24 #define NETDATA_SYSCALL_APPS_TASK_CLOSE "task_close"
25 #define NETDATA_SYSCALL_APPS_TASK_ERROR "task_error"
26
27 // Process configuration name
28 #define NETDATA_PROCESS_CONFIG_FILE "process.conf"
29
30 // Contexts
31 #define NETDATA_CGROUP_PROCESS_CREATE_CONTEXT "cgroup.process_create"
32 #define NETDATA_CGROUP_THREAD_CREATE_CONTEXT "cgroup.thread_create"
33 #define NETDATA_CGROUP_PROCESS_CLOSE_CONTEXT "cgroup.task_close"
34 #define NETDATA_CGROUP_PROCESS_EXIT_CONTEXT "cgroup.task_exit"
35 #define NETDATA_CGROUP_PROCESS_ERROR_CONTEXT "cgroup.task_error"
36
37 #define NETDATA_SYSTEMD_PROCESS_CREATE_CONTEXT "systemd.service.process_create"
38 #define NETDATA_SYSTEMD_THREAD_CREATE_CONTEXT "systemd.service.thread_create"
39 #define NETDATA_SYSTEMD_PROCESS_CLOSE_CONTEXT "systemd.service.task_close"
40 #define NETDATA_SYSTEMD_PROCESS_EXIT_CONTEXT "systemd.service.task_exit"
41 #define NETDATA_SYSTEMD_PROCESS_ERROR_CONTEXT "systemd.service.task_error"
42
43 #define NETDATA_EBPF_CGROUP_UPDATE 30
44
45 enum netdata_ebpf_stats_order {
46 NETDATA_EBPF_ORDER_STAT_THREADS = 140000,
47 NETDATA_EBPF_ORDER_PIDS,
48 NETDATA_EBPF_ORDER_PIDS_IPC,
49 NETDATA_EBPF_ORDER_STAT_LIFE_TIME,
50 NETDATA_EBPF_ORDER_STAT_LOAD_METHOD,
51 NETDATA_EBPF_ORDER_STAT_KERNEL_MEMORY,
52 NETDATA_EBPF_ORDER_STAT_HASH_TABLES,
53 NETDATA_EBPF_ORDER_STAT_HASH_CORE,
54 NETDATA_EBPF_ORDER_STAT_HASH_GLOBAL_TABLE_TOTAL,
55 NETDATA_EBPF_ORDER_STAT_HASH_PID_TABLE_ADDED,
56 NETDATA_EBPF_ORDER_STAT_HASH_PID_TABLE_REMOVED,
57 NETDATA_EBPF_ORDER_STAT_ARAL_BEGIN,
58 NETDATA_EBPF_ORDER_FUNCTION_PER_THREAD,
59 };
60
61 enum netdata_ebpf_load_mode_stats {
62 NETDATA_EBPF_LOAD_STAT_LEGACY,
63 NETDATA_EBPF_LOAD_STAT_CORE,
64
65 NETDATA_EBPF_LOAD_STAT_END
66 };
67
68 enum netdata_ebpf_thread_per_core {
69 NETDATA_EBPF_THREAD_PER_CORE,
70 NETDATA_EBPF_THREAD_UNIQUE,
71
72 NETDATA_EBPF_PER_CORE_END
73 };
74
75 // Index from kernel
76 typedef enum ebpf_process_index {
77 NETDATA_KEY_CALLS_DO_EXIT,
78
79 NETDATA_KEY_CALLS_RELEASE_TASK,
80
81 NETDATA_KEY_CALLS_DO_FORK,
82 NETDATA_KEY_ERROR_DO_FORK,
83
84 NETDATA_KEY_CALLS_SYS_CLONE,
85 NETDATA_KEY_ERROR_SYS_CLONE,
86
87 NETDATA_KEY_END_VECTOR
88 } ebpf_process_index_t;
89
90 // This enum acts as an index for publish vector.
91 // Do not change the enum order because we use
92 // different algorithms to make charts with incremental
93 // values (the three initial positions) and absolute values
94 // (the remaining charts).
95 typedef enum netdata_publish_process {
96 NETDATA_KEY_PUBLISH_PROCESS_EXIT,
97 NETDATA_KEY_PUBLISH_PROCESS_RELEASE_TASK,
98 NETDATA_KEY_PUBLISH_PROCESS_FORK,
99 NETDATA_KEY_PUBLISH_PROCESS_CLONE,
100
101 NETDATA_KEY_PUBLISH_PROCESS_END
102 } netdata_publish_process_t;
103
104 enum netdata_core_process {
105 PROCESS_RELEASE_TASK_NAME,
106 PROCESS_SYS_CLONE,
107 PROCESS_SYS_CLONE3,
108 PROCESS_SYS_FORK,
109 PROCESS_KERNEL_CLONE,
110 };
111
112 enum ebpf_process_tables { NETDATA_PROCESS_PID_TABLE, NETDATA_PROCESS_GLOBAL_TABLE, NETDATA_PROCESS_CTRL_TABLE };
113
114 extern netdata_ebpf_targets_t process_targets[];
115 extern struct config process_config;
116
117 #endif /* NETDATA_EBPF_PROCESS_H */