Add dev-only INFO logging for IP address discovery

Shows IP address discovery and sync results at INFO level in dev
environment only to help diagnose discovery issues.

Changes:
- Add log_ip_discovery_results/2 helper to log discovered IPs
- Enhanced sync_ip_addresses/2 to log IPv4/IPv6 counts and removals
- Only logs at INFO level when env is :dev, uses DEBUG in prod

Example output in dev:
  Discovered IP addresses: 5 IPv4, 2 IPv6 (total: 7)
  Synced IP addresses: 5 IPv4, 2 IPv6, removed 1

This helps diagnose why IP addresses tab isn't showing on device page.
This commit is contained in:
Graham McIntire 2026-02-06 11:01:10 -06:00 committed by Graham McIntire
parent d03ad72aec
commit 4db953bafa
No known key found for this signature in database

View file

@ -212,6 +212,7 @@ defmodule Towerops.Snmp.Discovery do
{:ok, vlans} <- discover_vlans_with_timeout(client_opts, profile, timeouts),
Logger.info("Discovering IP addresses...", device_id: device.id),
{:ok, ip_addresses} <- discover_ip_addresses_with_timeout(client_opts, timeouts),
_ = log_ip_discovery_results(device, ip_addresses),
Logger.info("Discovering processors...", device_id: device.id),
{:ok, processors} <- discover_processors_with_timeout(client_opts, timeouts),
Logger.info("Discovering storage...", device_id: device.id),
@ -869,7 +870,19 @@ defmodule Towerops.Snmp.Discovery do
upsert_ip_address(ip_data, if_index_to_interface, existing_ip_addresses)
end)
Logger.debug("Synced #{length(discovered_ip_addresses)} IP addresses for device")
if Application.get_env(:towerops, :env) == :dev do
ipv4_count = Enum.count(discovered_ip_addresses, &(&1.ip_type == "ipv4"))
ipv6_count = Enum.count(discovered_ip_addresses, &(&1.ip_type == "ipv6"))
removed_count = MapSet.size(removed_keys)
Logger.info(
"Synced IP addresses: #{ipv4_count} IPv4, #{ipv6_count} IPv6, removed #{removed_count}",
device_id: device.device_id
)
else
Logger.debug("Synced #{length(discovered_ip_addresses)} IP addresses for device")
end
:ok
end
@ -1070,6 +1083,20 @@ defmodule Towerops.Snmp.Discovery do
end
end
defp log_ip_discovery_results(device, ip_addresses) do
if Application.get_env(:towerops, :env) == :dev do
ipv4_count = Enum.count(ip_addresses, &(&1.ip_type == "ipv4"))
ipv6_count = Enum.count(ip_addresses, &(&1.ip_type == "ipv6"))
Logger.info(
"Discovered IP addresses: #{ipv4_count} IPv4, #{ipv6_count} IPv6 (total: #{length(ip_addresses)})",
device_id: device.id
)
end
:ok
end
defp log_discovery_event(device, discovered_device, is_rediscovery) do
event_type = if is_rediscovery, do: "device_rediscovered", else: "device_discovered"