ebpf_cgroup.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. #ifndef NETDATA_EBPF_CGROUP_H
  3. #define NETDATA_EBPF_CGROUP_H 1
  4. #define NETDATA_EBPF_CGROUP_MAX_TRIES 3
  5. #define NETDATA_EBPF_CGROUP_NEXT_TRY_SEC 30
  6. #include "ebpf.h"
  7. #include "ebpf_apps.h"
  8. #define NETDATA_SERVICE_FAMILY "services"
  9. struct pid_on_target2 {
  10. int32_t pid;
  11. int updated;
  12. netdata_publish_swap_t swap;
  13. netdata_fd_stat_t fd;
  14. netdata_publish_vfs_t vfs;
  15. ebpf_process_stat_t ps;
  16. netdata_dcstat_pid_t dc;
  17. netdata_publish_shm_t shm;
  18. netdata_socket_t socket;
  19. netdata_cachestat_pid_t cachestat;
  20. struct pid_on_target2 *next;
  21. };
  22. enum ebpf_cgroup_flags {
  23. NETDATA_EBPF_CGROUP_HAS_PROCESS_CHART = 1,
  24. NETDATA_EBPF_CGROUP_HAS_SWAP_CHART = 1<<2,
  25. NETDATA_EBPF_CGROUP_HAS_SOCKET_CHART = 1<<3,
  26. NETDATA_EBPF_CGROUP_HAS_FD_CHART = 1<<4,
  27. NETDATA_EBPF_CGROUP_HAS_VFS_CHART = 1<<5,
  28. NETDATA_EBPF_CGROUP_HAS_OOMKILL_CHART = 1<<6,
  29. NETDATA_EBPF_CGROUP_HAS_CACHESTAT_CHART = 1<<7,
  30. NETDATA_EBPF_CGROUP_HAS_DC_CHART = 1<<8,
  31. NETDATA_EBPF_CGROUP_HAS_SHM_CHART = 1<<9
  32. };
  33. typedef struct ebpf_cgroup_target {
  34. char name[256]; // title
  35. uint32_t hash;
  36. uint32_t flags;
  37. uint32_t systemd;
  38. uint32_t updated;
  39. netdata_publish_swap_t publish_systemd_swap;
  40. netdata_fd_stat_t publish_systemd_fd;
  41. netdata_publish_vfs_t publish_systemd_vfs;
  42. ebpf_process_stat_t publish_systemd_ps;
  43. netdata_publish_dcstat_t publish_dc;
  44. int oomkill;
  45. netdata_publish_shm_t publish_shm;
  46. ebpf_socket_publish_apps_t publish_socket;
  47. netdata_publish_cachestat_t publish_cachestat;
  48. struct pid_on_target2 *pids;
  49. struct ebpf_cgroup_target *next;
  50. } ebpf_cgroup_target_t;
  51. void ebpf_map_cgroup_shared_memory();
  52. void ebpf_parse_cgroup_shm_data();
  53. void ebpf_create_charts_on_systemd(char *id, char *title, char *units, char *family, char *charttype, int order,
  54. char *algorithm, char *context, char *module, int update_every);
  55. void *ebpf_cgroup_integration(void *ptr);
  56. void ebpf_unmap_cgroup_shared_memory();
  57. extern int send_cgroup_chart;
  58. #endif /* NETDATA_EBPF_CGROUP_H */