sentinel_core/api/
init.rs1#[cfg(feature = "metric_log")]
7use crate::log::metric;
8use crate::{config, config::ConfigEntity, system_metric, utils, Result};
9
10#[inline]
13pub fn init_default() -> Result<()> {
14 init_sentinel(&mut String::new())
15}
16
17#[inline]
19pub fn init_with_config(config_entity: ConfigEntity) -> Result<()> {
20 config_entity.check()?;
21 config::reset_global_config(config_entity);
22 #[cfg(any(feature = "env_logger", feature = "log4rs"))]
23 config::init_log()?;
24 init_core_components()
25}
26
27#[inline]
30pub fn init_with_config_file(config_path: String) -> Result<()> {
31 let mut config_path = config_path;
32 init_sentinel(&mut config_path)
33}
34
35#[inline]
36fn init_sentinel(config_path: &mut String) -> Result<()> {
37 config::init_config_with_yaml(config_path)?;
39 init_core_components()
40}
41
42#[inline]
44fn init_core_components() -> Result<()> {
45 if config::metric_log_flush_interval_sec() > 0 {
46 #[cfg(feature = "metric_log")]
47 metric::init_task();
48 }
49
50 let system_interval = config::system_stat_collect_interval_ms();
51 let mut load_interval = system_interval;
52 let mut cpu_interval = system_interval;
53 let mut mem_interval = system_interval;
54
55 if config::load_stat_collec_interval_ms() > 0 {
56 load_interval = config::load_stat_collec_interval_ms();
57 }
58 if config::cpu_stat_collec_interval_ms() > 0 {
59 cpu_interval = config::cpu_stat_collec_interval_ms();
60 }
61 if config::memory_stat_collec_interval_ms() > 0 {
62 mem_interval = config::memory_stat_collec_interval_ms();
63 }
64
65 if load_interval > 0 {
66 system_metric::init_load_collector(load_interval);
67 }
68 if cpu_interval > 0 {
69 system_metric::init_cpu_collector(cpu_interval);
70 }
71 if mem_interval > 0 {
72 system_metric::init_memory_collector(mem_interval);
73 }
74
75 if config::use_cache_time() {
76 utils::start_time_ticker();
77 }
78
79 #[cfg(feature = "exporter")]
80 crate::exporter::init();
81
82 Ok(())
83}