added status in docker metric collect
All checks were successful
Rust Cross-Platform Build / Detect Rust Project (push) Successful in 4s
Rust Cross-Platform Build / Run Tests (push) Successful in 1m9s
Rust Cross-Platform Build / Build (x86_64-unknown-linux-gnu) (push) Successful in 3m10s
Rust Cross-Platform Build / Build (x86_64-pc-windows-gnu) (push) Successful in 4m0s
Rust Cross-Platform Build / Set Tag Name (push) Successful in 4s
Rust Cross-Platform Build / Build and Push Docker Image (push) Successful in 2m12s
Rust Cross-Platform Build / Workflow Summary (push) Successful in 2s
Rust Cross-Platform Build / Create Tag (push) Successful in 4s
All checks were successful
Rust Cross-Platform Build / Detect Rust Project (push) Successful in 4s
Rust Cross-Platform Build / Run Tests (push) Successful in 1m9s
Rust Cross-Platform Build / Build (x86_64-unknown-linux-gnu) (push) Successful in 3m10s
Rust Cross-Platform Build / Build (x86_64-pc-windows-gnu) (push) Successful in 4m0s
Rust Cross-Platform Build / Set Tag Name (push) Successful in 4s
Rust Cross-Platform Build / Build and Push Docker Image (push) Successful in 2m12s
Rust Cross-Platform Build / Workflow Summary (push) Successful in 2s
Rust Cross-Platform Build / Create Tag (push) Successful in 4s
This commit is contained in:
@@ -1,9 +1,19 @@
|
||||
pub mod cpu;
|
||||
pub mod network;
|
||||
pub mod ram;
|
||||
pub mod status;
|
||||
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||
pub struct ContainerStatusInfo {
|
||||
pub container_id: Option<String>,
|
||||
pub status: Option<String>, // "running", "stopped", "paused", "exited", etc.
|
||||
pub state: Option<String>, // More detailed state information
|
||||
pub started_at: Option<String>,
|
||||
pub finished_at: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||
pub struct ContainerCpuInfo {
|
||||
pub container_id: Option<String>,
|
||||
@@ -43,33 +53,34 @@ pub async fn get_container_stats(
|
||||
Vec<ContainerCpuInfo>,
|
||||
Vec<ContainerNetworkInfo>,
|
||||
Vec<ContainerMemoryInfo>,
|
||||
Vec<ContainerStatusInfo>,
|
||||
),
|
||||
Box<dyn Error + Send + Sync>,
|
||||
> {
|
||||
let cpu_infos = cpu::get_all_containers_cpu_stats(docker).await?;
|
||||
let net_infos = network::get_all_containers_network_stats(docker).await?;
|
||||
let mem_infos = ram::get_all_containers_memory_stats(docker).await?;
|
||||
let status_infos = status::get_all_containers_status(docker).await?;
|
||||
|
||||
Ok((cpu_infos, net_infos, mem_infos))
|
||||
Ok((cpu_infos, net_infos, mem_infos, status_infos))
|
||||
}
|
||||
|
||||
/// Get container statistics for a specific container
|
||||
pub async fn get_single_container_stats(
|
||||
docker: &Docker,
|
||||
container_id: &str,
|
||||
) -> Result<
|
||||
(
|
||||
Option<ContainerCpuInfo>,
|
||||
Option<ContainerNetworkInfo>,
|
||||
Option<ContainerMemoryInfo>,
|
||||
),
|
||||
Box<dyn Error + Send + Sync>,
|
||||
> {
|
||||
) -> Result<(
|
||||
Option<ContainerCpuInfo>,
|
||||
Option<ContainerNetworkInfo>,
|
||||
Option<ContainerMemoryInfo>,
|
||||
Option<ContainerStatusInfo>,
|
||||
), Box<dyn Error + Send + Sync>> {
|
||||
let cpu_info = cpu::get_single_container_cpu_stats(docker, container_id).await?;
|
||||
let net_info = network::get_single_container_network_stats(docker, container_id).await?;
|
||||
let mem_info = ram::get_single_container_memory_stats(docker, container_id).await?;
|
||||
let status_info = status::get_single_container_status(docker, container_id).await?;
|
||||
|
||||
Ok((cpu_info, net_info, mem_info))
|
||||
Ok((cpu_info, net_info, mem_info, status_info))
|
||||
}
|
||||
|
||||
/// Get total network statistics across all containers
|
||||
|
||||
Reference in New Issue
Block a user