| 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 */ |