get system component temps etc

This commit is contained in:
mbecker20
2022-12-30 05:56:16 +00:00
parent 80ced82131
commit b042494b44
5 changed files with 52 additions and 17 deletions
+8
View File
@@ -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;
+6 -6
View File
@@ -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;
}
+11
View File
@@ -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>,
}
+18 -2
View File
@@ -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
View File
@@ -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();