ebpf_process.h 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. #ifndef NETDATA_EBPF_PROCESS_H
  3. #define NETDATA_EBPF_PROCESS_H 1
  4. // Groups used on Dashboard
  5. #define NETDATA_FILE_GROUP "File"
  6. #define NETDATA_PROCESS_GROUP "Process"
  7. // Global chart name
  8. #define NETDATA_FILE_OPEN_CLOSE_COUNT "file_descriptor"
  9. #define NETDATA_FILE_OPEN_ERR_COUNT "file_error"
  10. #define NETDATA_EXIT_SYSCALL "exit"
  11. #define NETDATA_PROCESS_SYSCALL "process_thread"
  12. #define NETDATA_PROCESS_ERROR_NAME "task_error"
  13. #define NETDATA_PROCESS_STATUS_NAME "process_status"
  14. // Charts created on Apps submenu
  15. #define NETDATA_SYSCALL_APPS_FILE_OPEN "file_open"
  16. #define NETDATA_SYSCALL_APPS_FILE_CLOSED "file_closed"
  17. #define NETDATA_SYSCALL_APPS_TASK_PROCESS "process_create"
  18. #define NETDATA_SYSCALL_APPS_TASK_THREAD "thread_create"
  19. #define NETDATA_SYSCALL_APPS_TASK_CLOSE "task_close"
  20. // Charts created on Apps submenu, if and only if, the return mode is active
  21. #define NETDATA_SYSCALL_APPS_FILE_OPEN_ERROR "file_open_error"
  22. #define NETDATA_SYSCALL_APPS_FILE_CLOSE_ERROR "file_close_error"
  23. // Process configuration name
  24. #define NETDATA_PROCESS_CONFIG_FILE "process.conf"
  25. // Index from kernel
  26. typedef enum ebpf_process_index {
  27. NETDATA_KEY_CALLS_DO_SYS_OPEN,
  28. NETDATA_KEY_ERROR_DO_SYS_OPEN,
  29. NETDATA_KEY_CALLS_DO_EXIT,
  30. NETDATA_KEY_CALLS_RELEASE_TASK,
  31. NETDATA_KEY_CALLS_DO_FORK,
  32. NETDATA_KEY_ERROR_DO_FORK,
  33. NETDATA_KEY_CALLS_CLOSE_FD,
  34. NETDATA_KEY_ERROR_CLOSE_FD,
  35. NETDATA_KEY_CALLS_SYS_CLONE,
  36. NETDATA_KEY_ERROR_SYS_CLONE,
  37. NETDATA_KEY_END_VECTOR
  38. } ebpf_process_index_t;
  39. // This enum acts as an index for publish vector.
  40. // Do not change the enum order because we use
  41. // different algorithms to make charts with incremental
  42. // values (the three initial positions) and absolute values
  43. // (the remaining charts).
  44. typedef enum netdata_publish_process {
  45. NETDATA_KEY_PUBLISH_PROCESS_OPEN,
  46. NETDATA_KEY_PUBLISH_PROCESS_CLOSE,
  47. NETDATA_KEY_PUBLISH_PROCESS_EXIT,
  48. NETDATA_KEY_PUBLISH_PROCESS_RELEASE_TASK,
  49. NETDATA_KEY_PUBLISH_PROCESS_FORK,
  50. NETDATA_KEY_PUBLISH_PROCESS_CLONE,
  51. NETDATA_KEY_PUBLISH_PROCESS_END
  52. } netdata_publish_process_t;
  53. typedef struct ebpf_process_publish_apps {
  54. // Number of calls during the last read
  55. uint64_t call_sys_open;
  56. uint64_t call_close_fd;
  57. uint64_t call_do_exit;
  58. uint64_t call_release_task;
  59. uint64_t call_do_fork;
  60. uint64_t call_sys_clone;
  61. // Number of errors during the last read
  62. uint64_t ecall_sys_open;
  63. uint64_t ecall_close_fd;
  64. uint64_t ecall_do_fork;
  65. uint64_t ecall_sys_clone;
  66. } ebpf_process_publish_apps_t;
  67. enum ebpf_process_tables {
  68. NETDATA_PROCESS_PID_TABLE,
  69. NETDATA_PROCESS_GLOBAL_TABLE,
  70. NETDATA_PROCESS_CTRL_TABLE
  71. };
  72. extern struct config process_config;
  73. #endif /* NETDATA_EBPF_PROCESS_H */