Log initial interface discovery as events

- Detect when interface speed changes from null to a value
- Detect when MAC address changes from null to a value
- Log initial discoveries with "info" severity
- Differentiate between initial discovery and actual changes
- Show "detected" message for initial values
- Show "changed from X to Y" message for actual changes
This commit is contained in:
Graham McIntire 2026-01-05 11:16:31 -06:00
parent 06a31441f2
commit 249c7d3560
No known key found for this signature in database

View file

@ -317,19 +317,31 @@ defmodule Towerops.Snmp.PollerWorker do
[{:event, event} | changes]
end
# Check speed change
# Check speed change (including initial discovery)
changes =
if interface.if_speed != current_attrs.if_speed &&
current_attrs.if_speed != nil && interface.if_speed != nil do
if interface.if_speed != current_attrs.if_speed && current_attrs.if_speed != nil do
# Determine if this is initial discovery or a change
is_initial = interface.if_speed == nil
severity =
if current_attrs.if_speed < interface.if_speed, do: "warning", else: "info"
cond do
is_initial -> "info"
current_attrs.if_speed < interface.if_speed -> "warning"
true -> "info"
end
message =
if is_initial do
"Interface #{interface.if_name} speed detected: #{format_speed(current_attrs.if_speed)}"
else
"Interface #{interface.if_name} speed changed from #{format_speed(interface.if_speed)} to #{format_speed(current_attrs.if_speed)}"
end
event = %{
equipment_id: equipment_id,
event_type: "interface_speed_change",
severity: severity,
message:
"Interface #{interface.if_name} speed changed from #{format_speed(interface.if_speed)} to #{format_speed(current_attrs.if_speed)}",
message: message,
metadata: %{
interface_id: interface.id,
interface_name: interface.if_name,
@ -344,16 +356,25 @@ defmodule Towerops.Snmp.PollerWorker do
changes
end
# Check MAC address change
# Check MAC address change (including initial discovery)
changes =
if interface.if_phys_address != current_attrs.if_phys_address &&
current_attrs.if_phys_address != nil && interface.if_phys_address != nil do
current_attrs.if_phys_address != nil do
# Determine if this is initial discovery or a change
is_initial = interface.if_phys_address == nil
message =
if is_initial do
"Interface #{interface.if_name} MAC address detected: #{current_attrs.if_phys_address}"
else
"Interface #{interface.if_name} MAC address changed from #{interface.if_phys_address} to #{current_attrs.if_phys_address}"
end
event = %{
equipment_id: equipment_id,
event_type: "interface_mac_change",
severity: "warning",
message:
"Interface #{interface.if_name} MAC address changed from #{interface.if_phys_address} to #{current_attrs.if_phys_address}",
severity: if(is_initial, do: "info", else: "warning"),
message: message,
metadata: %{
interface_id: interface.id,
interface_name: interface.if_name,