Skip to content

Commit b642369

Browse files
committed
feat: Add disk usage percentage and warn on high usage
Add `usage_percent` field to disk collection output. When a disk exceeds 85% usage, log at WARN level instead of INFO so it stands out in log aggregation systems.
1 parent 465deca commit b642369

File tree

1 file changed

+32
-9
lines changed

1 file changed

+32
-9
lines changed

src/system_information/disk.rs

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ pub struct Disk {
66
pub mount_point: String,
77
pub total_space: u64,
88
pub available_space: u64,
9+
pub usage_percent: f64,
910
}
1011

1112
impl Disk {
@@ -21,19 +22,41 @@ impl Disk {
2122

2223
impl From<&sysinfo::Disk> for Disk {
2324
fn from(sysinfo_disk: &sysinfo::Disk) -> Self {
25+
let total_space = sysinfo_disk.total_space();
26+
let available_space = sysinfo_disk.available_space();
27+
let usage_percent = if total_space > 0 {
28+
(total_space - available_space) as f64 / total_space as f64 * 100.0
29+
} else {
30+
0.0
31+
};
32+
2433
let disk = Disk {
2534
name: sysinfo_disk.name().to_string_lossy().into_owned(),
2635
mount_point: sysinfo_disk.mount_point().to_string_lossy().into_owned(),
27-
total_space: sysinfo_disk.total_space(),
28-
available_space: sysinfo_disk.available_space(),
36+
total_space,
37+
available_space,
38+
usage_percent,
2939
};
30-
tracing::info!(
31-
disk.mount_point,
32-
disk.name,
33-
disk.space.total = disk.total_space,
34-
disk.space.available = disk.available_space,
35-
"found disk"
36-
);
40+
41+
if usage_percent >= 85.0 {
42+
tracing::warn!(
43+
disk.mount_point,
44+
disk.name,
45+
disk.space.total = disk.total_space,
46+
disk.space.available = disk.available_space,
47+
disk.space.usage_percent = format!("{:.1}%", disk.usage_percent),
48+
"disk usage high"
49+
);
50+
} else {
51+
tracing::info!(
52+
disk.mount_point,
53+
disk.name,
54+
disk.space.total = disk.total_space,
55+
disk.space.available = disk.available_space,
56+
disk.space.usage_percent = format!("{:.1}%", disk.usage_percent),
57+
"found disk"
58+
);
59+
}
3760
disk
3861
}
3962
}

0 commit comments

Comments
 (0)