From 57f81b70f8fbffbdb7e067edd7f2e294df6dc24c Mon Sep 17 00:00:00 2001 From: Graham McIntire Date: Sat, 17 Jan 2026 17:00:52 -0600 Subject: [PATCH] Fix latency data not being captured in monitoring checks The monitoring system was creating checks but hardcoding response_time_ms to nil instead of using the actual ping latency. This caused the latency graphs to have no data to display. Changes: - device_monitor.ex: Capture response time from ping/SNMP check result - monitor_worker.ex: Use correct field name (response_time_ms) and status enum values (:success/:failure) After this fix, new monitoring checks will include latency data and the latency graphs will display properly on both device and site detail pages. --- lib/towerops/monitoring/device_monitor.ex | 8 ++++---- lib/towerops/workers/monitor_worker.ex | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/towerops/monitoring/device_monitor.ex b/lib/towerops/monitoring/device_monitor.ex index 0c67ab66..0599eb13 100644 --- a/lib/towerops/monitoring/device_monitor.ex +++ b/lib/towerops/monitoring/device_monitor.ex @@ -84,17 +84,17 @@ defmodule Towerops.Monitoring.DeviceMonitor do now = DateTime.truncate(DateTime.utc_now(), :second) - status = + {status, response_time_ms} = case check_result do - {:ok, _time} -> :success - {:error, _reason} -> :failure + {:ok, time} -> {:success, time} + {:error, _reason} -> {:failure, nil} end # Save the check result case Monitoring.create_check(%{ device_id: device_id, status: status, - response_time_ms: nil, + response_time_ms: response_time_ms, checked_at: now }) do {:ok, _check} -> diff --git a/lib/towerops/workers/monitor_worker.ex b/lib/towerops/workers/monitor_worker.ex index 8677780f..0d78b669 100644 --- a/lib/towerops/workers/monitor_worker.ex +++ b/lib/towerops/workers/monitor_worker.ex @@ -36,8 +36,8 @@ defmodule Towerops.Workers.MonitorWorker do Monitoring.create_check(%{ device_id: device_id, - status: "up", - latency_ms: latency, + status: :success, + response_time_ms: latency, checked_at: DateTime.utc_now() }) @@ -48,8 +48,8 @@ defmodule Towerops.Workers.MonitorWorker do Monitoring.create_check(%{ device_id: device_id, - status: "down", - latency_ms: nil, + status: :failure, + response_time_ms: nil, checked_at: DateTime.utc_now() })