From 9f5d6551ed0e584dcbb9de573c0aaa3b4369e350 Mon Sep 17 00:00:00 2001 From: Jorge Bolois Date: Sat, 3 Feb 2024 15:13:28 +0100 Subject: [PATCH] removing all related code to nohup/daemonize --- .gitignore | 1 - Cargo.toml | 1 - manage.sh | 38 ------------------ src/main.rs | 111 +++++++++++++++++++++++----------------------------- 4 files changed, 50 insertions(+), 101 deletions(-) delete mode 100644 manage.sh diff --git a/.gitignore b/.gitignore index 9ce9775..051c4ab 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,3 @@ Cargo.lock **/*.rs.bk *.pdb /target -output.log diff --git a/Cargo.toml b/Cargo.toml index 8f3b699..a32d5f8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,5 +7,4 @@ edition = "2021" tokio = { version = "1.35.1", features = ["full"]} kagiyama = "0.3.0" anyhow = "1.0.79" -daemonize = "0.5.0" mtemp = "0.1.21" diff --git a/manage.sh b/manage.sh deleted file mode 100644 index ecf656b..0000000 --- a/manage.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash - -start_monitor() { - nohup cargo run --release > output.log 2>&1 & - sleep 1 - echo "Monitor started" -} - -stop_monitor() { - if [ -f /tmp/mtemp-monitor.pid ]; then - pid=$(cat /tmp/mtemp-monitor.pid) - echo "Stopping monitor with PID $pid" - kill $pid - rm /tmp/mtemp-monitor.pid - echo "Monitor stopped" - else - echo "Monitor is not running (PID file not found)" - fi -} - -case "$1" in - start) - start_monitor - ;; - stop) - stop_monitor - ;; - restart) - stop_monitor - sleep 1 - start_monitor - ;; - *) - echo "Usage: $0 {start|stop|restart}" - exit 1 - ;; -esac - diff --git a/src/main.rs b/src/main.rs index a5f1a51..1acf3d7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,34 +1,16 @@ -use anyhow::{anyhow, Context, Result}; -use daemonize::Daemonize; +use anyhow::Result; use kagiyama::prometheus::metrics::gauge::Gauge; use kagiyama::{AlwaysReady, Watcher}; use mtemp::Mtemp; use std::env; -use std::fs::File; use std::sync::atomic::AtomicU64; +use tokio::signal::ctrl_c; +use tokio::spawn; use tokio::time::sleep; use tokio::time::Duration; -fn main() -> Result<()> { - let name = "mtemp-monitor"; - let stdout = File::create(format!("/tmp/{}.log", name)).context("Error creating log file")?; - let daemonize = Daemonize::new() - .pid_file(format!("/tmp/{}.pid", name)) - .stdout(stdout) - .chown_pid_file(true) - .working_directory("/"); - - match daemonize.start() { - Ok(_) => { - println!("daemon started"); - tokio_main() - } - Err(err) => Err(anyhow!("{:?}", err)), - } -} - #[tokio::main] -async fn tokio_main() -> Result<()> { +async fn main() -> Result<()> { let interval_secs: u64 = env::var("MTEMP_INTERVAL") .unwrap_or_else(|_| "1".to_string()) .parse()?; @@ -38,51 +20,58 @@ async fn tokio_main() -> Result<()> { let mut watcher = Watcher::::default(); watcher.start_server(addr.parse()?).await; - let interval = Duration::from_secs(interval_secs); - - let cpu_gauge = Gauge::::default(); { - let mut registry = watcher.metrics_registry(); - registry.register( - "cpu_temp", - "Shows the temperature of the CPU in degrees C", - cpu_gauge.clone(), - ); - } + spawn(async move { + let interval = Duration::from_secs(interval_secs); - let gpu_gauge = Gauge::::default(); - { - let mut registry = watcher.metrics_registry(); - registry.register( - "gpu_temp", - "Shows the temperature of the GPU in degrees C", - gpu_gauge.clone(), - ); - } + let cpu_gauge = Gauge::::default(); + { + let mut registry = watcher.metrics_registry(); + registry.register( + "cpu_temp", + "Shows the temperature of the CPU in degrees C", + cpu_gauge.clone(), + ); + } - let disk_gauge = Gauge::::default(); - { - let mut registry = watcher.metrics_registry(); - registry.register( - "disk_temp", - "Shows the temperature of the disk in degrees C", - disk_gauge.clone(), - ); + let gpu_gauge = Gauge::::default(); + { + let mut registry = watcher.metrics_registry(); + registry.register( + "gpu_temp", + "Shows the temperature of the GPU in degrees C", + gpu_gauge.clone(), + ); + } + + let disk_gauge = Gauge::::default(); + { + let mut registry = watcher.metrics_registry(); + registry.register( + "disk_temp", + "Shows the temperature of the disk in degrees C", + disk_gauge.clone(), + ); + } + + loop { + sleep(interval).await; + if let Some(cpu) = Mtemp::cpu() { + cpu_gauge.set(cpu); + } + if let Some(gpu) = Mtemp::gpu() { + gpu_gauge.set(gpu); + } + if let Some(disk) = Mtemp::disk() { + disk_gauge.set(disk); + } + } + }); } println!("interval set every {} seconds", interval_secs); println!("listening on {}", addr); + ctrl_c().await?; - loop { - sleep(interval).await; - if let Some(cpu) = Mtemp::cpu() { - cpu_gauge.set(cpu); - } - if let Some(gpu) = Mtemp::gpu() { - gpu_gauge.set(gpu); - } - if let Some(disk) = Mtemp::disk() { - disk_gauge.set(disk); - } - } + Ok(()) }