ebpf_vfs.h 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. #ifndef NETDATA_EBPF_VFS_H
  3. #define NETDATA_EBPF_VFS_H 1
  4. // Module name
  5. #define NETDATA_EBPF_MODULE_NAME_VFS "vfs"
  6. #define NETDATA_DIRECTORY_VFS_CONFIG_FILE "vfs.conf"
  7. // Global chart name
  8. #define NETDATA_VFS_FILE_CLEAN_COUNT "vfs_deleted_objects"
  9. #define NETDATA_VFS_FILE_IO_COUNT "vfs_io"
  10. #define NETDATA_VFS_FILE_ERR_COUNT "vfs_io_error"
  11. #define NETDATA_VFS_IO_FILE_BYTES "vfs_io_bytes"
  12. #define NETDATA_VFS_FSYNC "vfs_fsync"
  13. #define NETDATA_VFS_FSYNC_ERR "vfs_fsync_error"
  14. #define NETDATA_VFS_OPEN "vfs_open"
  15. #define NETDATA_VFS_OPEN_ERR "vfs_open_error"
  16. #define NETDATA_VFS_CREATE "vfs_create"
  17. #define NETDATA_VFS_CREATE_ERR "vfs_create_error"
  18. // Charts created on Apps submenu
  19. #define NETDATA_SYSCALL_APPS_FILE_DELETED "file_deleted"
  20. #define NETDATA_SYSCALL_APPS_VFS_WRITE_CALLS "vfs_write_call"
  21. #define NETDATA_SYSCALL_APPS_VFS_READ_CALLS "vfs_read_call"
  22. #define NETDATA_SYSCALL_APPS_VFS_WRITE_BYTES "vfs_write_bytes"
  23. #define NETDATA_SYSCALL_APPS_VFS_READ_BYTES "vfs_read_bytes"
  24. #define NETDATA_SYSCALL_APPS_VFS_FSYNC "vfs_fsync"
  25. #define NETDATA_SYSCALL_APPS_VFS_OPEN "vfs_open"
  26. #define NETDATA_SYSCALL_APPS_VFS_CREATE "vfs_create"
  27. #define NETDATA_SYSCALL_APPS_VFS_WRITE_CALLS_ERROR "vfs_write_error"
  28. #define NETDATA_SYSCALL_APPS_VFS_READ_CALLS_ERROR "vfs_read_error"
  29. #define NETDATA_SYSCALL_APPS_VFS_FSYNC_CALLS_ERROR "vfs_fsync_error"
  30. #define NETDATA_SYSCALL_APPS_VFS_OPEN_CALLS_ERROR "vfs_open_error"
  31. #define NETDATA_SYSCALL_APPS_VFS_CREATE_CALLS_ERROR "vfs_create_error"
  32. // Group used on Dashboard
  33. #define NETDATA_VFS_GROUP "vfs"
  34. #define NETDATA_VFS_CGROUP_GROUP "vfs (eBPF)"
  35. // Contexts
  36. #define NETDATA_CGROUP_VFS_UNLINK_CONTEXT "cgroup.vfs_unlink"
  37. #define NETDATA_CGROUP_VFS_WRITE_CONTEXT "cgroup.vfs_write"
  38. #define NETDATA_CGROUP_VFS_WRITE_ERROR_CONTEXT "cgroup.vfs_write_error"
  39. #define NETDATA_CGROUP_VFS_READ_CONTEXT "cgroup.vfs_read"
  40. #define NETDATA_CGROUP_VFS_READ_ERROR_CONTEXT "cgroup.vfs_read_error"
  41. #define NETDATA_CGROUP_VFS_WRITE_BYTES_CONTEXT "cgroup.vfs_write_bytes"
  42. #define NETDATA_CGROUP_VFS_READ_BYTES_CONTEXT "cgroup.vfs_read_bytes"
  43. #define NETDATA_CGROUP_VFS_CREATE_CONTEXT "cgroup.vfs_create"
  44. #define NETDATA_CGROUP_VFS_CREATE_ERROR_CONTEXT "cgroup.vfs_create_error"
  45. #define NETDATA_CGROUP_VFS_OPEN_CONTEXT "cgroup.vfs_open"
  46. #define NETDATA_CGROUP_VFS_OPEN_ERROR_CONTEXT "cgroup.vfs_open_error"
  47. #define NETDATA_CGROUP_VFS_FSYNC_CONTEXT "cgroup.vfs_fsync"
  48. #define NETDATA_CGROUP_VFS_FSYNC_ERROR_CONTEXT "cgroup.vfs_fsync_error"
  49. #define NETDATA_SYSTEMD_VFS_UNLINK_CONTEXT "services.vfs_unlink"
  50. #define NETDATA_SYSTEMD_VFS_WRITE_CONTEXT "services.vfs_write"
  51. #define NETDATA_SYSTEMD_VFS_WRITE_ERROR_CONTEXT "services.vfs_write_error"
  52. #define NETDATA_SYSTEMD_VFS_READ_CONTEXT "services.vfs_read"
  53. #define NETDATA_SYSTEMD_VFS_READ_ERROR_CONTEXT "services.vfs_read_error"
  54. #define NETDATA_SYSTEMD_VFS_WRITE_BYTES_CONTEXT "services.vfs_write_bytes"
  55. #define NETDATA_SYSTEMD_VFS_READ_BYTES_CONTEXT "services.vfs_read_bytes"
  56. #define NETDATA_SYSTEMD_VFS_CREATE_CONTEXT "services.vfs_create"
  57. #define NETDATA_SYSTEMD_VFS_CREATE_ERROR_CONTEXT "services.vfs_create_error"
  58. #define NETDATA_SYSTEMD_VFS_OPEN_CONTEXT "services.vfs_open"
  59. #define NETDATA_SYSTEMD_VFS_OPEN_ERROR_CONTEXT "services.vfs_open_error"
  60. #define NETDATA_SYSTEMD_VFS_FSYNC_CONTEXT "services.vfs_fsync"
  61. #define NETDATA_SYSTEMD_VFS_FSYNC_ERROR_CONTEXT "services.vfs_fsync_error"
  62. typedef struct netdata_publish_vfs {
  63. uint64_t pid_tgid;
  64. uint32_t pid;
  65. uint32_t pad;
  66. //Counter
  67. uint32_t write_call;
  68. uint32_t writev_call;
  69. uint32_t read_call;
  70. uint32_t readv_call;
  71. uint32_t unlink_call;
  72. uint32_t fsync_call;
  73. uint32_t open_call;
  74. uint32_t create_call;
  75. //Accumulator
  76. uint64_t write_bytes;
  77. uint64_t writev_bytes;
  78. uint64_t readv_bytes;
  79. uint64_t read_bytes;
  80. //Counter
  81. uint32_t write_err;
  82. uint32_t writev_err;
  83. uint32_t read_err;
  84. uint32_t readv_err;
  85. uint32_t unlink_err;
  86. uint32_t fsync_err;
  87. uint32_t open_err;
  88. uint32_t create_err;
  89. } netdata_publish_vfs_t;
  90. enum netdata_publish_vfs_list {
  91. NETDATA_KEY_PUBLISH_VFS_UNLINK,
  92. NETDATA_KEY_PUBLISH_VFS_READ,
  93. NETDATA_KEY_PUBLISH_VFS_WRITE,
  94. NETDATA_KEY_PUBLISH_VFS_FSYNC,
  95. NETDATA_KEY_PUBLISH_VFS_OPEN,
  96. NETDATA_KEY_PUBLISH_VFS_CREATE,
  97. NETDATA_KEY_PUBLISH_VFS_END
  98. };
  99. enum vfs_counters {
  100. NETDATA_KEY_CALLS_VFS_WRITE,
  101. NETDATA_KEY_ERROR_VFS_WRITE,
  102. NETDATA_KEY_BYTES_VFS_WRITE,
  103. NETDATA_KEY_CALLS_VFS_WRITEV,
  104. NETDATA_KEY_ERROR_VFS_WRITEV,
  105. NETDATA_KEY_BYTES_VFS_WRITEV,
  106. NETDATA_KEY_CALLS_VFS_READ,
  107. NETDATA_KEY_ERROR_VFS_READ,
  108. NETDATA_KEY_BYTES_VFS_READ,
  109. NETDATA_KEY_CALLS_VFS_READV,
  110. NETDATA_KEY_ERROR_VFS_READV,
  111. NETDATA_KEY_BYTES_VFS_READV,
  112. NETDATA_KEY_CALLS_VFS_UNLINK,
  113. NETDATA_KEY_ERROR_VFS_UNLINK,
  114. NETDATA_KEY_CALLS_VFS_FSYNC,
  115. NETDATA_KEY_ERROR_VFS_FSYNC,
  116. NETDATA_KEY_CALLS_VFS_OPEN,
  117. NETDATA_KEY_ERROR_VFS_OPEN,
  118. NETDATA_KEY_CALLS_VFS_CREATE,
  119. NETDATA_KEY_ERROR_VFS_CREATE,
  120. // Keep this as last and don't skip numbers as it is used as element counter
  121. NETDATA_VFS_COUNTER
  122. };
  123. enum netdata_vfs_tables {
  124. NETDATA_VFS_PID,
  125. NETDATA_VFS_ALL,
  126. NETDATA_VFS_CTRL
  127. };
  128. enum netdata_vfs_calls_name {
  129. NETDATA_EBPF_VFS_WRITE,
  130. NETDATA_EBPF_VFS_WRITEV,
  131. NETDATA_EBPF_VFS_READ,
  132. NETDATA_EBPF_VFS_READV,
  133. NETDATA_EBPF_VFS_UNLINK,
  134. NETDATA_EBPF_VFS_FSYNC,
  135. NETDATA_EBPF_VFS_OPEN,
  136. NETDATA_EBPF_VFS_CREATE,
  137. NETDATA_VFS_END_LIST
  138. };
  139. extern netdata_publish_vfs_t **vfs_pid;
  140. void *ebpf_vfs_thread(void *ptr);
  141. void ebpf_vfs_create_apps_charts(struct ebpf_module *em, void *ptr);
  142. extern netdata_ebpf_targets_t vfs_targets[];
  143. extern struct config vfs_config;
  144. #endif /* NETDATA_EBPF_VFS_H */