chore: add monitor cloud task
This commit is contained in:
parent
af99fca9b8
commit
e1c49d3b8a
@ -12,7 +12,7 @@ This was created to play and sync different roles:
|
||||
- Handle pre-configured routes for requests (GET/POST)
|
||||
- Use SSL for HTTPS webservers
|
||||
- Serve web client frontend applications and provide them sign-on mechanism
|
||||
- Run a websever with templates [Tera](https://tera.netlify.app) multi-language and style customized
|
||||
- Run a websever with templates ([Tera](https://tera.netlify.app)), multi-language and style customized
|
||||
- Run as a File server from a preconfigured directory
|
||||
- Implement authenticated files upload (backend & frontend via templates)
|
||||
|
||||
|
57
src/main.rs
57
src/main.rs
@ -6,6 +6,11 @@ use app_env::{
|
||||
appdata::AppData,
|
||||
config::{Config,WebServer}
|
||||
};
|
||||
use clds::clouds::{
|
||||
monitor_rules::{MonitorRules},
|
||||
};
|
||||
use clds::monitor::run_monitor;
|
||||
|
||||
use app_auth::AuthStore;
|
||||
use reject_filters::{handle_rejection};
|
||||
// use zterton::models::{Terton};
|
||||
@ -290,6 +295,34 @@ pub async fn run_check_clouds() {
|
||||
let _ = run_clouds_check(&reqenv,&cloud).await;
|
||||
println!("Check Cloud service: done {} __________ ",chrono::Utc::now().timestamp());
|
||||
}
|
||||
pub async fn run_clouds_monitor() {
|
||||
let args: Vec<String> = std::env::args().collect();
|
||||
let mut arg_cfg_path = String::from("");
|
||||
let mut arg_env_path = String::from("");
|
||||
args.iter().enumerate().for_each(|(idx,arg)| {
|
||||
if arg == "-c" {
|
||||
arg_cfg_path=args[idx+1].to_owned();
|
||||
} else if arg == "-e" {
|
||||
arg_env_path=args[idx+1].to_owned();
|
||||
}
|
||||
});
|
||||
println!("Monitor Cloud: run {} __________ {} / {} ",chrono::Utc::now().timestamp(),&arg_cfg_path,&arg_env_path);
|
||||
let mut cloud = Cloud::default();
|
||||
load_cloud_env(&mut cloud).await;
|
||||
let mut app_env = AppEnv::default();
|
||||
let config_content = Config::load_file_content("quiet",&arg_cfg_path);
|
||||
if ! config_content.contains("run_mode") {
|
||||
return;
|
||||
}
|
||||
app_env.config = Config::new(config_content,"quiet");
|
||||
|
||||
let monitor_rules = MonitorRules::load(&app_env.config.monitor_rules_path,&app_env.config.monitor_rules_file,&app_env.config.monitor_rules_format);
|
||||
// monitor_rules.rules[0].context = RuleContext::Service(String::from("kubernetes"));
|
||||
if monitor_rules.rules.len() > 0 {
|
||||
let _ = run_monitor(monitor_rules,cloud,app_env).await;
|
||||
}
|
||||
println!("Monitor Cloud: done {} __________ ",chrono::Utc::now().timestamp());
|
||||
}
|
||||
// for standalone server & async use
|
||||
// #[tokio::main]
|
||||
// pub async fn main() -> Result<()> {
|
||||
@ -324,8 +357,10 @@ pub fn main() -> Result<()> {
|
||||
pretty_env_logger::init();
|
||||
// assert!(output.is_ok());
|
||||
let loop_duration: u64;
|
||||
let run_websrvrs: bool;
|
||||
let run_cache: bool;
|
||||
let run_check: bool;
|
||||
let run_monitor: bool;
|
||||
let websrvrs: Vec<WebServer>;
|
||||
{
|
||||
let config_content = Config::load_file_content("quiet", &arg_cfg_path);
|
||||
@ -333,8 +368,10 @@ pub fn main() -> Result<()> {
|
||||
let config = Config::new(config_content,"quiet");
|
||||
loop_duration = config.loop_duration;
|
||||
// loop_duration = 10;
|
||||
run_websrvrs = config.run_websrvrs;
|
||||
run_cache = config.run_cache;
|
||||
run_check = config.run_check;
|
||||
run_monitor = config.run_monitor;
|
||||
websrvrs = config.websrvrs;
|
||||
if run_cache {
|
||||
println!("Running 'cloud_cache' every {} seconds in LOOP",&loop_duration);
|
||||
@ -344,8 +381,10 @@ pub fn main() -> Result<()> {
|
||||
}
|
||||
} else {
|
||||
loop_duration = 0;
|
||||
run_websrvrs = false;
|
||||
run_cache = false;
|
||||
run_check = false;
|
||||
run_monitor = false;
|
||||
websrvrs = Vec::new();
|
||||
}
|
||||
}
|
||||
@ -354,16 +393,20 @@ pub fn main() -> Result<()> {
|
||||
let rt = tokio::runtime::Runtime::new().unwrap_or_else(|e|
|
||||
panic!("Error create tokio runtime {}",e)
|
||||
);
|
||||
// let mut web_tasks = Vec::new();
|
||||
websrvrs.iter().enumerate().for_each(|(pos,it)| {
|
||||
rt.block_on(async move {
|
||||
println!("{} -> {}",it.name,pos);
|
||||
tokio::spawn(async move {up_web_server(pos).await});
|
||||
tokio::time::sleep(tokio::time::Duration::from_secs(5)).await;
|
||||
if run_websrvrs {
|
||||
websrvrs.iter().enumerate().for_each(|(pos,it)| {
|
||||
rt.block_on(async move {
|
||||
println!("{} -> {}",it.name,pos);
|
||||
tokio::spawn(async move {up_web_server(pos).await});
|
||||
tokio::time::sleep(tokio::time::Duration::from_secs(5)).await;
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
loop {
|
||||
rt.block_on(async move {
|
||||
if run_monitor {
|
||||
tokio::spawn(async {run_clouds_monitor().await }); // For async task
|
||||
}
|
||||
if run_check {
|
||||
tokio::spawn(async {run_check_clouds().await }); // For async task
|
||||
tokio::time::sleep(tokio::time::Duration::from_secs(5)).await;
|
||||
|
Loading…
Reference in New Issue
Block a user