Implement per-service disk usage monitoring
Replaced system-wide disk usage with accurate per-service tracking by scanning service-specific directories. Services like sshd now correctly show minimal disk usage instead of misleading system totals. - Rename storage widget and add drive capacity/usage columns - Move host display to main dashboard title for cleaner layout - Replace separate alert displays with color-coded row highlighting - Add per-service disk usage collection using du command - Update services widget formatting to handle small disk values - Restructure into workspace with dedicated agent and dashboard packages
This commit is contained in:
49
agent/src/collectors/mod.rs
Normal file
49
agent/src/collectors/mod.rs
Normal file
@@ -0,0 +1,49 @@
|
||||
use async_trait::async_trait;
|
||||
use chrono::{DateTime, Utc};
|
||||
use serde_json::Value;
|
||||
use std::time::Duration;
|
||||
|
||||
pub mod backup;
|
||||
pub mod error;
|
||||
pub mod service;
|
||||
pub mod smart;
|
||||
|
||||
pub use error::CollectorError;
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub enum AgentType {
|
||||
Smart,
|
||||
Service,
|
||||
Backup,
|
||||
}
|
||||
|
||||
impl AgentType {
|
||||
pub fn as_str(&self) -> &'static str {
|
||||
match self {
|
||||
AgentType::Smart => "smart",
|
||||
AgentType::Service => "service",
|
||||
AgentType::Backup => "backup",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct CollectorOutput {
|
||||
pub agent_type: AgentType,
|
||||
pub data: Value,
|
||||
pub timestamp: DateTime<Utc>,
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
pub trait Collector: Send + Sync {
|
||||
fn name(&self) -> &str;
|
||||
fn agent_type(&self) -> AgentType;
|
||||
fn collect_interval(&self) -> Duration;
|
||||
async fn collect(&self) -> Result<CollectorOutput, CollectorError>;
|
||||
fn is_enabled(&self) -> bool {
|
||||
true
|
||||
}
|
||||
fn requires_root(&self) -> bool {
|
||||
false
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user