ebpf_vfs.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. #ifndef NETDATA_EBPF_VFS_H
  3. #define NETDATA_EBPF_VFS_H 1
  4. #define NETDATA_DIRECTORY_VFS_CONFIG_FILE "vfs.conf"
  5. #define NETDATA_LATENCY_VFS_SLEEP_MS 750000ULL
  6. // Global chart name
  7. #define NETDATA_VFS_FILE_CLEAN_COUNT "vfs_deleted_objects"
  8. #define NETDATA_VFS_FILE_IO_COUNT "vfs_io"
  9. #define NETDATA_VFS_FILE_ERR_COUNT "vfs_io_error"
  10. #define NETDATA_VFS_IO_FILE_BYTES "vfs_io_bytes"
  11. #define NETDATA_VFS_FSYNC "vfs_fsync"
  12. #define NETDATA_VFS_FSYNC_ERR "vfs_fsync_error"
  13. #define NETDATA_VFS_OPEN "vfs_open"
  14. #define NETDATA_VFS_OPEN_ERR "vfs_open_error"
  15. #define NETDATA_VFS_CREATE "vfs_create"
  16. #define NETDATA_VFS_CREATE_ERR "vfs_create_error"
  17. // Charts created on Apps submenu
  18. #define NETDATA_SYSCALL_APPS_FILE_DELETED "file_deleted"
  19. #define NETDATA_SYSCALL_APPS_VFS_WRITE_CALLS "vfs_write_call"
  20. #define NETDATA_SYSCALL_APPS_VFS_READ_CALLS "vfs_read_call"
  21. #define NETDATA_SYSCALL_APPS_VFS_WRITE_BYTES "vfs_write_bytes"
  22. #define NETDATA_SYSCALL_APPS_VFS_READ_BYTES "vfs_read_bytes"
  23. #define NETDATA_SYSCALL_APPS_VFS_FSYNC "vfs_fsync"
  24. #define NETDATA_SYSCALL_APPS_VFS_OPEN "vfs_open"
  25. #define NETDATA_SYSCALL_APPS_VFS_CREATE "vfs_create"
  26. #define NETDATA_SYSCALL_APPS_VFS_WRITE_CALLS_ERROR "vfs_write_error"
  27. #define NETDATA_SYSCALL_APPS_VFS_READ_CALLS_ERROR "vfs_read_error"
  28. #define NETDATA_SYSCALL_APPS_VFS_FSYNC_CALLS_ERROR "vfs_fsync_error"
  29. #define NETDATA_SYSCALL_APPS_VFS_OPEN_CALLS_ERROR "vfs_open_error"
  30. #define NETDATA_SYSCALL_APPS_VFS_CREATE_CALLS_ERROR "vfs_create_error"
  31. // Group used on Dashboard
  32. #define NETDATA_VFS_GROUP "VFS (eBPF)"
  33. typedef struct netdata_publish_vfs {
  34. uint64_t pid_tgid;
  35. uint32_t pid;
  36. uint32_t pad;
  37. //Counter
  38. uint32_t write_call;
  39. uint32_t writev_call;
  40. uint32_t read_call;
  41. uint32_t readv_call;
  42. uint32_t unlink_call;
  43. uint32_t fsync_call;
  44. uint32_t open_call;
  45. uint32_t create_call;
  46. //Accumulator
  47. uint64_t write_bytes;
  48. uint64_t writev_bytes;
  49. uint64_t readv_bytes;
  50. uint64_t read_bytes;
  51. //Counter
  52. uint32_t write_err;
  53. uint32_t writev_err;
  54. uint32_t read_err;
  55. uint32_t readv_err;
  56. uint32_t unlink_err;
  57. uint32_t fsync_err;
  58. uint32_t open_err;
  59. uint32_t create_err;
  60. } netdata_publish_vfs_t;
  61. enum netdata_publish_vfs_list {
  62. NETDATA_KEY_PUBLISH_VFS_UNLINK,
  63. NETDATA_KEY_PUBLISH_VFS_READ,
  64. NETDATA_KEY_PUBLISH_VFS_WRITE,
  65. NETDATA_KEY_PUBLISH_VFS_FSYNC,
  66. NETDATA_KEY_PUBLISH_VFS_OPEN,
  67. NETDATA_KEY_PUBLISH_VFS_CREATE,
  68. NETDATA_KEY_PUBLISH_VFS_END
  69. };
  70. enum vfs_counters {
  71. NETDATA_KEY_CALLS_VFS_WRITE,
  72. NETDATA_KEY_ERROR_VFS_WRITE,
  73. NETDATA_KEY_BYTES_VFS_WRITE,
  74. NETDATA_KEY_CALLS_VFS_WRITEV,
  75. NETDATA_KEY_ERROR_VFS_WRITEV,
  76. NETDATA_KEY_BYTES_VFS_WRITEV,
  77. NETDATA_KEY_CALLS_VFS_READ,
  78. NETDATA_KEY_ERROR_VFS_READ,
  79. NETDATA_KEY_BYTES_VFS_READ,
  80. NETDATA_KEY_CALLS_VFS_READV,
  81. NETDATA_KEY_ERROR_VFS_READV,
  82. NETDATA_KEY_BYTES_VFS_READV,
  83. NETDATA_KEY_CALLS_VFS_UNLINK,
  84. NETDATA_KEY_ERROR_VFS_UNLINK,
  85. NETDATA_KEY_CALLS_VFS_FSYNC,
  86. NETDATA_KEY_ERROR_VFS_FSYNC,
  87. NETDATA_KEY_CALLS_VFS_OPEN,
  88. NETDATA_KEY_ERROR_VFS_OPEN,
  89. NETDATA_KEY_CALLS_VFS_CREATE,
  90. NETDATA_KEY_ERROR_VFS_CREATE,
  91. // Keep this as last and don't skip numbers as it is used as element counter
  92. NETDATA_VFS_COUNTER
  93. };
  94. enum netdata_vfs_tables {
  95. NETDATA_VFS_PID,
  96. NETDATA_VFS_ALL
  97. };
  98. extern netdata_publish_vfs_t **vfs_pid;
  99. extern void *ebpf_vfs_thread(void *ptr);
  100. extern void ebpf_vfs_create_apps_charts(struct ebpf_module *em, void *ptr);
  101. extern void clean_vfs_pid_structures();
  102. extern struct config vfs_config;
  103. #endif /* NETDATA_EBPF_VFS_H */