From 097f49e1563c3ceca0d0e6a2bf4676870ad56bda Mon Sep 17 00:00:00 2001 From: Ryan Date: Mon, 12 Aug 2024 13:39:44 +0900 Subject: [PATCH] 0.1.11 --- Cargo.toml | 3 ++- RELEASE_NOTE.md | 4 ++++ src/database.rs | 1 - src/metrics.rs | 23 +++++++++++++++++++++++ src/string.rs | 1 - 5 files changed, 29 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 74fd64d..0aff023 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "device-common" -version = "0.1.10" +version = "0.1.11" edition = "2021" authors = ["Ryan Bae "] @@ -28,6 +28,7 @@ dashmap = "6.0" async-trait = "0.1" bytes = "1.7" serial_test = "3.1" +actix-web-prom ="0.8" [profile.dev] opt-level = 0 diff --git a/RELEASE_NOTE.md b/RELEASE_NOTE.md index dc5be5a..6e23952 100644 --- a/RELEASE_NOTE.md +++ b/RELEASE_NOTE.md @@ -1,3 +1,7 @@ +0.1.11 +====== +- metrics 통합 + 0.1.10 ====== - config.rs 에 s3 관련 추가 diff --git a/src/database.rs b/src/database.rs index 496e4b3..4af5683 100644 --- a/src/database.rs +++ b/src/database.rs @@ -2,7 +2,6 @@ use std::sync::Arc; use deadpool_postgres::{Pool, Config, Runtime}; use tokio::sync::OnceCell; use tokio_postgres::NoTls; -use crate::aws::s3::read_file; use crate::config::get_config; static CONNECTION_POOL: OnceCell> = OnceCell::const_new(); diff --git a/src/metrics.rs b/src/metrics.rs index a614608..2d7e5ee 100644 --- a/src/metrics.rs +++ b/src/metrics.rs @@ -1,6 +1,29 @@ use sysinfo::System; use prometheus::{register_gauge, Gauge}; use std::sync::OnceLock; +use actix_web_prom::{PrometheusMetrics, PrometheusMetricsBuilder}; +use crate::model::error::DeviceError; + +pub fn register_metrics() -> Result { + let prometheus = PrometheusMetricsBuilder::new("api") + .endpoint("/metrics") + .build() + .map_err(|e| DeviceError::GeneralError(format!("Prometheus metrics build error: {}", e)))?; + + prometheus.registry.register(Box::new(get_cpu_usage().clone())) + .map_err(|e| DeviceError::GeneralError(String::from("cpu usage metric register fail")))?; + + prometheus.registry.register(Box::new(get_memory_usage().clone())) + .map_err(|e| DeviceError::GeneralError(String::from("memory usage metric register fail")))?; + + prometheus.registry.register(Box::new(get_memory_used().clone())) + .map_err(|e| DeviceError::GeneralError(String::from("memory used metric register fail")))?; + + prometheus.registry.register(Box::new(get_memory_total().clone())) + .map_err(|e| DeviceError::GeneralError(String::from("memory total metric register fail")))?; + + Ok(prometheus) +} pub fn get_cpu_usage() -> &'static Gauge { static GAUGE: OnceLock = OnceLock::new(); diff --git a/src/string.rs b/src/string.rs index 9203669..d757f1a 100644 --- a/src/string.rs +++ b/src/string.rs @@ -36,7 +36,6 @@ mod tests { use std::env; use super::*; use serial_test::serial; - use crate::env::{get, set}; fn setup() { env::remove_var("RUST_PROFILE");