mirror of
https://github.com/moghtech/komodo.git
synced 2026-04-30 01:10:31 -05:00
get system component temps etc
This commit is contained in:
@@ -181,6 +181,7 @@ export interface SystemStats {
|
||||
mem_total_gb: number;
|
||||
disk: DiskUsage;
|
||||
networks: SystemNetwork[];
|
||||
components: SystemComponent[];
|
||||
polling_rate: Timelength;
|
||||
}
|
||||
|
||||
@@ -204,6 +205,13 @@ export interface SystemNetwork {
|
||||
transmitted_kb: number;
|
||||
}
|
||||
|
||||
export interface SystemComponent {
|
||||
label: string;
|
||||
temp: number;
|
||||
max: number;
|
||||
critical?: number;
|
||||
}
|
||||
|
||||
export interface Update {
|
||||
_id?: string;
|
||||
target: UpdateTarget;
|
||||
|
||||
@@ -28,12 +28,6 @@ export interface CreateGroupBody {
|
||||
name: string;
|
||||
}
|
||||
|
||||
export interface LoginOptions {
|
||||
local: boolean;
|
||||
github: boolean;
|
||||
google: boolean;
|
||||
}
|
||||
|
||||
export interface PermissionsUpdateBody {
|
||||
user_id: string;
|
||||
permission: PermissionLevel;
|
||||
@@ -60,6 +54,12 @@ export interface CreateServerBody {
|
||||
address: string;
|
||||
}
|
||||
|
||||
export interface LoginOptions {
|
||||
local: boolean;
|
||||
github: boolean;
|
||||
google: boolean;
|
||||
}
|
||||
|
||||
export interface TokenExchangeBody {
|
||||
token: string;
|
||||
}
|
||||
|
||||
@@ -136,6 +136,7 @@ pub struct SystemStats {
|
||||
pub mem_total_gb: f64, // in GB
|
||||
pub disk: DiskUsage,
|
||||
pub networks: Vec<SystemNetwork>,
|
||||
pub components: Vec<SystemComponent>,
|
||||
pub polling_rate: Timelength,
|
||||
}
|
||||
|
||||
@@ -164,3 +165,13 @@ pub struct SystemNetwork {
|
||||
pub recieved_kb: f64, // in kB
|
||||
pub transmitted_kb: f64, // in kB
|
||||
}
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug)]
|
||||
pub struct SystemComponent {
|
||||
pub label: String,
|
||||
pub temp: f32,
|
||||
pub max: f32,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub critical: Option<f32>,
|
||||
}
|
||||
@@ -2,8 +2,8 @@ use std::sync::{Arc, RwLock};
|
||||
|
||||
use async_timing_util::wait_until_timelength;
|
||||
use axum::{routing::get, Extension, Json, Router};
|
||||
use sysinfo::{CpuExt, DiskExt, NetworkExt, ProcessExt, ProcessRefreshKind, SystemExt};
|
||||
use types::{DiskUsage, SingleDiskUsage, SystemNetwork, SystemStats, Timelength};
|
||||
use sysinfo::{CpuExt, DiskExt, NetworkExt, ProcessExt, ProcessRefreshKind, SystemExt, ComponentExt};
|
||||
use types::{DiskUsage, SingleDiskUsage, SystemNetwork, SystemStats, Timelength, SystemComponent};
|
||||
|
||||
pub fn router(stats_polling_rate: Timelength) -> Router {
|
||||
Router::new()
|
||||
@@ -50,10 +50,14 @@ impl StatsClient {
|
||||
pub fn refresh(&mut self) {
|
||||
self.sys.refresh_cpu();
|
||||
self.sys.refresh_memory();
|
||||
self.sys.refresh_networks_list();
|
||||
self.sys.refresh_networks();
|
||||
self.sys.refresh_disks_list();
|
||||
self.sys.refresh_disks();
|
||||
self.sys
|
||||
.refresh_processes_specifics(ProcessRefreshKind::new().with_disk_usage());
|
||||
self.sys.refresh_components_list();
|
||||
self.sys.refresh_components();
|
||||
}
|
||||
|
||||
pub fn get_stats(&self) -> SystemStats {
|
||||
@@ -63,6 +67,7 @@ impl StatsClient {
|
||||
mem_total_gb: self.sys.total_memory() as f64 / BYTES_PER_GB,
|
||||
disk: self.get_disk_usage(),
|
||||
networks: self.get_networks(),
|
||||
components: self.get_components(),
|
||||
polling_rate: self.polling_rate,
|
||||
}
|
||||
}
|
||||
@@ -115,4 +120,15 @@ impl StatsClient {
|
||||
disks,
|
||||
}
|
||||
}
|
||||
|
||||
fn get_components(&self) -> Vec<SystemComponent> {
|
||||
self.sys.components().into_iter().map(|c| {
|
||||
SystemComponent {
|
||||
label: c.label().to_string(),
|
||||
temp: c.temperature(),
|
||||
max: c.max(),
|
||||
critical: c.critical(),
|
||||
}
|
||||
}).collect()
|
||||
}
|
||||
}
|
||||
|
||||
+9
-9
@@ -19,17 +19,17 @@ async fn main() -> anyhow::Result<()> {
|
||||
|
||||
// let (server, deployment, build) = create_test_setup(&monitor, "test").await?;
|
||||
|
||||
// let server_stats = get_server_stats(&monitor).await?;
|
||||
// println!("server stats:\n{server_stats:#?}\n");
|
||||
let server_stats = get_server_stats(&monitor).await?;
|
||||
println!("server stats:\n{server_stats:#?}\n");
|
||||
|
||||
let (update, container) = deploy_mongo(&monitor).await?;
|
||||
println!(
|
||||
"mongo deploy update:\n{update:#?}\n\ncontainer: {:#?}\n",
|
||||
container.container
|
||||
);
|
||||
// let (update, container) = deploy_mongo(&monitor).await?;
|
||||
// println!(
|
||||
// "mongo deploy update:\n{update:#?}\n\ncontainer: {:#?}\n",
|
||||
// container.container
|
||||
// );
|
||||
|
||||
let update = test_build(&monitor).await?;
|
||||
println!("build update:\n{update:#?}");
|
||||
// let update = test_build(&monitor).await?;
|
||||
// println!("build update:\n{update:#?}");
|
||||
|
||||
// test_updates(&monitor).await.unwrap();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user