Fix critical JSON data extraction issue in SystemCollector
The MetricCollector implementation was returning JSON with null values because it was incorrectly extracting Option<&Value> instead of the actual values. Fixed by using .cloned().unwrap_or() to properly extract and default the JSON values. This should resolve the 'No data received' issue as the dashboard will now receive properly formatted metric data instead of null values.
This commit is contained in:
parent
925988896a
commit
3a959e55ed
@ -448,10 +448,10 @@ impl MetricCollector for SystemCollector {
|
|||||||
// Extract CPU load data
|
// Extract CPU load data
|
||||||
if let Some(summary) = full_data.data.get("summary") {
|
if let Some(summary) = full_data.data.get("summary") {
|
||||||
Ok(json!({
|
Ok(json!({
|
||||||
"cpu_load_1": summary.get("cpu_load_1"),
|
"cpu_load_1": summary.get("cpu_load_1").cloned().unwrap_or(json!(0)),
|
||||||
"cpu_load_5": summary.get("cpu_load_5"),
|
"cpu_load_5": summary.get("cpu_load_5").cloned().unwrap_or(json!(0)),
|
||||||
"cpu_load_15": summary.get("cpu_load_15"),
|
"cpu_load_15": summary.get("cpu_load_15").cloned().unwrap_or(json!(0)),
|
||||||
"timestamp": full_data.data.get("timestamp")
|
"timestamp": full_data.data.get("timestamp").cloned().unwrap_or(json!(null))
|
||||||
}))
|
}))
|
||||||
} else {
|
} else {
|
||||||
Ok(json!({"cpu_load_1": 0, "cpu_load_5": 0, "cpu_load_15": 0, "timestamp": null}))
|
Ok(json!({"cpu_load_1": 0, "cpu_load_5": 0, "cpu_load_15": 0, "timestamp": null}))
|
||||||
@ -461,8 +461,8 @@ impl MetricCollector for SystemCollector {
|
|||||||
// Extract CPU temperature data
|
// Extract CPU temperature data
|
||||||
if let Some(summary) = full_data.data.get("summary") {
|
if let Some(summary) = full_data.data.get("summary") {
|
||||||
Ok(json!({
|
Ok(json!({
|
||||||
"cpu_temp_c": summary.get("cpu_temp_c"),
|
"cpu_temp_c": summary.get("cpu_temp_c").cloned().unwrap_or(json!(null)),
|
||||||
"timestamp": full_data.data.get("timestamp")
|
"timestamp": full_data.data.get("timestamp").cloned().unwrap_or(json!(null))
|
||||||
}))
|
}))
|
||||||
} else {
|
} else {
|
||||||
Ok(json!({"cpu_temp_c": null, "timestamp": null}))
|
Ok(json!({"cpu_temp_c": null, "timestamp": null}))
|
||||||
@ -472,9 +472,9 @@ impl MetricCollector for SystemCollector {
|
|||||||
// Extract memory data
|
// Extract memory data
|
||||||
if let Some(summary) = full_data.data.get("summary") {
|
if let Some(summary) = full_data.data.get("summary") {
|
||||||
Ok(json!({
|
Ok(json!({
|
||||||
"system_memory_used_mb": summary.get("system_memory_used_mb"),
|
"system_memory_used_mb": summary.get("system_memory_used_mb").cloned().unwrap_or(json!(0)),
|
||||||
"system_memory_total_mb": summary.get("system_memory_total_mb"),
|
"system_memory_total_mb": summary.get("system_memory_total_mb").cloned().unwrap_or(json!(0)),
|
||||||
"timestamp": full_data.data.get("timestamp")
|
"timestamp": full_data.data.get("timestamp").cloned().unwrap_or(json!(null))
|
||||||
}))
|
}))
|
||||||
} else {
|
} else {
|
||||||
Ok(json!({"system_memory_used_mb": 0, "system_memory_total_mb": 0, "timestamp": null}))
|
Ok(json!({"system_memory_used_mb": 0, "system_memory_total_mb": 0, "timestamp": null}))
|
||||||
@ -483,23 +483,23 @@ impl MetricCollector for SystemCollector {
|
|||||||
"top_processes" => {
|
"top_processes" => {
|
||||||
// Extract top processes data
|
// Extract top processes data
|
||||||
Ok(json!({
|
Ok(json!({
|
||||||
"top_cpu_process": full_data.data.get("top_cpu_process"),
|
"top_cpu_process": full_data.data.get("top_cpu_process").cloned().unwrap_or(json!(null)),
|
||||||
"top_memory_process": full_data.data.get("top_memory_process"),
|
"top_memory_process": full_data.data.get("top_memory_process").cloned().unwrap_or(json!(null)),
|
||||||
"timestamp": full_data.data.get("timestamp")
|
"timestamp": full_data.data.get("timestamp").cloned().unwrap_or(json!(null))
|
||||||
}))
|
}))
|
||||||
},
|
},
|
||||||
"cstate" => {
|
"cstate" => {
|
||||||
// Extract C-state data
|
// Extract C-state data
|
||||||
Ok(json!({
|
Ok(json!({
|
||||||
"cstate": full_data.data.get("cstate"),
|
"cstate": full_data.data.get("cstate").cloned().unwrap_or(json!(null)),
|
||||||
"timestamp": full_data.data.get("timestamp")
|
"timestamp": full_data.data.get("timestamp").cloned().unwrap_or(json!(null))
|
||||||
}))
|
}))
|
||||||
},
|
},
|
||||||
"users" => {
|
"users" => {
|
||||||
// Extract logged in users data
|
// Extract logged in users data
|
||||||
Ok(json!({
|
Ok(json!({
|
||||||
"logged_in_users": full_data.data.get("logged_in_users"),
|
"logged_in_users": full_data.data.get("logged_in_users").cloned().unwrap_or(json!(null)),
|
||||||
"timestamp": full_data.data.get("timestamp")
|
"timestamp": full_data.data.get("timestamp").cloned().unwrap_or(json!(null))
|
||||||
}))
|
}))
|
||||||
},
|
},
|
||||||
_ => Err(CollectorError::ConfigError {
|
_ => Err(CollectorError::ConfigError {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user