mirror of
https://github.com/edera-dev/krata.git
synced 2025-08-06 06:31:31 +00:00
feat: implement metrics support
This commit is contained in:
@ -25,6 +25,7 @@ rtnetlink = { workspace = true }
|
||||
serde = { workspace = true }
|
||||
serde_json = { workspace = true }
|
||||
sys-mount = { workspace = true }
|
||||
sysinfo = { workspace = true }
|
||||
tokio = { workspace = true }
|
||||
walkdir = { workspace = true }
|
||||
|
||||
|
@ -7,7 +7,7 @@ use std::env;
|
||||
#[tokio::main]
|
||||
async fn main() -> Result<()> {
|
||||
env::set_var("RUST_BACKTRACE", "1");
|
||||
env_logger::Builder::from_env(Env::default().default_filter_or("warn")).init();
|
||||
env_logger::Builder::from_env(Env::default().default_filter_or("trace")).init();
|
||||
if env::var("KRATA_UNSAFE_ALWAYS_ALLOW_INIT").unwrap_or("0".to_string()) != "1" {
|
||||
let pid = std::process::id();
|
||||
if pid > 3 {
|
||||
|
@ -8,11 +8,12 @@ use krata::idm::{
|
||||
client::IdmClient,
|
||||
protocol::{
|
||||
idm_event::Event, idm_request::Request, idm_response::Response, IdmEvent, IdmExitEvent,
|
||||
IdmPingResponse, IdmRequest,
|
||||
IdmMetricsResponse, IdmPingResponse, IdmRequest,
|
||||
},
|
||||
};
|
||||
use log::debug;
|
||||
use nix::unistd::Pid;
|
||||
use sysinfo::System;
|
||||
use tokio::{select, sync::broadcast};
|
||||
|
||||
pub struct GuestBackground {
|
||||
@ -80,10 +81,26 @@ impl GuestBackground {
|
||||
|
||||
async fn handle_idm_request(&mut self, packet: IdmRequest) -> Result<()> {
|
||||
let id = packet.id;
|
||||
if let Some(Request::Ping(_)) = packet.request {
|
||||
self.idm
|
||||
.respond(id, Response::Ping(IdmPingResponse {}))
|
||||
.await?;
|
||||
|
||||
match packet.request {
|
||||
Some(Request::Ping(_)) => {
|
||||
self.idm
|
||||
.respond(id, Response::Ping(IdmPingResponse {}))
|
||||
.await?;
|
||||
}
|
||||
|
||||
Some(Request::Metrics(_)) => {
|
||||
let mut sys = System::new();
|
||||
sys.refresh_memory();
|
||||
let response = IdmMetricsResponse {
|
||||
total_memory_bytes: sys.total_memory(),
|
||||
used_memory_bytes: sys.used_memory(),
|
||||
};
|
||||
|
||||
self.idm.respond(id, Response::Metrics(response)).await?;
|
||||
}
|
||||
|
||||
None => {}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
Reference in New Issue
Block a user