master
h 97 lines 2.53 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 #ifndef NETDATA_EBPF_FILESYSTEM_H
4 #define NETDATA_EBPF_FILESYSTEM_H 1
5
6 // Module name & description
7 #define NETDATA_EBPF_MODULE_NAME_FILESYSTEM "filesystem"
8 #define NETDATA_EBPF_FS_MODULE_DESC "Monitor filesystem latency for: btrfs, ext4, nfs, xfs and zfs."
9
10 #include "libnetdata/libnetdata.h"
11
12 // Forward declaration to avoid circular dependency
13 struct ebpf_module;
14
15 // Constants
16 #define NETDATA_FS_MAX_DIST_NAME 64UL
17 #define NETDATA_FS_TEMP_MAP_SIZE 4192
18 #define NETDATA_FS_HISTOGRAM_BINS 24
19 #define NETDATA_PARTITION_UPDATE_INTERVAL_MULTIPLIER 5
20
21 // Configuration section and file names
22 #define NETDATA_FILESYSTEM_CONFIG_NAME "filesystem"
23 #define NETDATA_FILESYSTEM_CONFIG_FILE "filesystem.conf"
24
25 enum filesystem_limit {
26 NETDATA_KEY_CALLS_READ = 24,
27 NETDATA_KEY_CALLS_WRITE = 48,
28 NETDATA_KEY_CALLS_OPEN = 72,
29 NETDATA_KEY_CALLS_SYNC = 96
30 };
31
32 enum netdata_filesystem_flags {
33 // Flags indicating filesystem module state and operations
34 NETDATA_FILESYSTEM_FLAG_NO_PARTITION,
35 NETDATA_FILESYSTEM_LOAD_EBPF_PROGRAM = 1,
36 NETDATA_FILESYSTEM_FLAG_HAS_PARTITION = 2,
37 NETDATA_FILESYSTEM_FLAG_CHART_CREATED = 4,
38 NETDATA_FILESYSTEM_FILL_ADDRESS_TABLE = 8,
39 NETDATA_FILESYSTEM_REMOVE_CHARTS = 16,
40 NETDATA_FILESYSTEM_ATTR_CHARTS = 32
41 };
42
43 enum netdata_filesystem_table { NETDATA_MAIN_FS_TABLE, NETDATA_ADDR_FS_TABLE };
44
45 enum netdata_filesystem_localfs_idx {
46 NETDATA_FS_LOCALFS_EXT4,
47 NETDATA_FS_LOCALFS_XFS,
48 NETDATA_FS_LOCALFS_NFS,
49 NETDATA_FS_LOCALFS_ZFS,
50 NETDATA_FS_LOCALFS_BTRFS,
51
52 NETDATA_FS_LOCALFS_END,
53 };
54
55 /**
56 * Filesystem eBPF collector thread
57 *
58 * Main thread function that monitors filesystem operations (btrfs, ext4, nfs, xfs, zfs)
59 * and collects latency metrics using eBPF.
60 *
61 * @param ptr Pointer to module data (struct ebpf_module *)
62 */
63 void ebpf_filesystem_thread(void *ptr);
64
65 /**
66 * Initialize eBPF data
67 *
68 * @param em Main thread structure
69 *
70 * @return 0 on success, -1 on error
71 */
72 int ebpf_filesystem_initialize_ebpf_data(struct ebpf_module *em);
73
74 /**
75 * Cleanup eBPF data
76 *
77 * Frees allocated resources and cleans up filesystem partitions
78 */
79 void ebpf_filesystem_cleanup_ebpf_data(void);
80
81 /**
82 * Read filesystem hash
83 *
84 * Reads histogram data from filesystem eBPF maps
85 *
86 * @param em Pointer to module structure
87 */
88 void ebpf_filesystem_read_hash(struct ebpf_module *em);
89
90 /**
91 * Filesystem module configuration
92 *
93 * Stores configuration parameters for the filesystem eBPF collector
94 */
95 extern struct config fs_config;
96
97 #endif /* NETDATA_EBPF_FILESYSTEM_H */