| Device | IP Address | Interface | Link Type | Confidence | Status |
|---|---|---|---|---|---|
|
<%= if peer_device do %>
<.link
navigate={~p"/devices/#{peer_device.id}"}
class="font-medium text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-300"
>
{peer_device.name}
<% else %>
{link.discovered_remote_name || link.discovered_remote_mac ||
"Unknown"}
<% end %>
|
<%= if peer_device do %> {peer_device.ip_address} <% else %> {link.discovered_remote_ip || "-"} <% end %> | <%= if link.source_interface do %> {link.source_interface.if_name} <% else %> - <% end %> | "bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-200" link.link_type == "mac_match" -> "bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200" link.link_type == "arp_inference" -> "bg-orange-100 text-orange-800 dark:bg-orange-900 dark:text-orange-200" true -> "bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-gray-200" end ]}> {link.link_type} |
= 0.9 -> "bg-green-500"
link.confidence >= 0.7 -> "bg-blue-500"
link.confidence >= 0.5 -> "bg-yellow-500"
true -> "bg-red-500"
end
]}
style={"width: #{trunc(link.confidence * 100)}%"}
>
|
<%= if peer_device do %> Managed <% else %> Discovered <% end %> |
| # | Name | Status | Speed | IP Address | MAC |
|---|---|---|---|---|---|
| {interface.if_index} |
<.link
navigate={
~p"/devices/#{@device.id}/graph/traffic?interface_id=#{interface.id}"
}
class="hover:text-blue-600 dark:hover:text-blue-400"
>
{interface.if_name || interface.if_descr}
<%= if interface.if_alias do %>
{interface.if_alias}
<% end %>
|
{String.upcase(interface.if_oper_status || "unknown")} | {format_speed(interface.if_speed)} |
<% interface_ips =
Map.get(@ip_addresses_by_interface, interface.id, []) %>
<%= if Enum.empty?(interface_ips) do %>
-
<% else %>
<%= for ip <- interface_ips do %>
<% end %>
{ip.ip_address}
<%= if ip.prefix_length do %>
/{ip.prefix_length}
<% end %>
<% end %>
|
{interface.if_phys_address || "-"} |
No interfaces discovered
| Protocol | Local Port | Remote Device | Remote Port | IP Address | Platform | Capabilities | Last Seen |
|---|---|---|---|---|---|---|---|
| {neighbor.protocol} | <.link navigate={ ~p"/devices/#{@device.id}/graph/traffic?interface_id=#{neighbor.interface.id}" } class="text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-300" > {neighbor.interface.if_name || neighbor.interface.if_descr} |
<%= if neighbor.matched_device do %>
<.link
navigate={~p"/devices/#{neighbor.matched_device.id}"}
class="font-medium text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-300"
>
{neighbor.matched_device.name}
<% else %>
<%= if neighbor.remote_system_name do %>
{neighbor.remote_system_name |> String.split("/") |> List.first()}
<% else %>
Unknown
<% end %>
<% end %>
|
{neighbor.remote_port_id || "-"}
<%= if !neighbor.matched_device && neighbor.remote_chassis_id do %>
{neighbor.remote_chassis_id}
<% end %>
|
{neighbor.remote_address || "-"} | {neighbor.remote_platform || "-"} | <%= if neighbor.remote_capabilities && length(neighbor.remote_capabilities) > 0 do %> {Enum.join(neighbor.remote_capabilities, ", ")} <% else %> - <% end %> | {time_ago(neighbor.last_discovered_at)} |
This device doesn't have any LLDP or CDP neighbors, or neighbor discovery hasn't run yet.
| IP Address | MAC Address | Interface | Type | Last Seen |
|---|---|---|---|---|
| {arp.ip_address} | {arp.mac_address} | <%= if arp.interface do %> <.link navigate={ ~p"/devices/#{@device.id}/graph/traffic?interface_id=#{arp.interface.id}" } class="text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-300" > {arp.interface.if_name || arp.interface.if_descr} <% else %> ifIndex {arp.if_index} <% end %> | {arp.entry_type || "unknown"} | {time_ago(arp.last_seen_at)} |
This device doesn't have any ARP entries, or ARP discovery hasn't run yet.
| MAC Address | VLAN | Interface | Status | Last Seen |
|---|---|---|---|---|
| {mac.mac_address} | <%= if mac.vlan_id do %> {mac.vlan_id} <% else %> - <% end %> | <%= if mac.interface do %> <.link navigate={ ~p"/devices/#{@device.id}/graph/traffic?interface_id=#{mac.interface.id}" } class="text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-300" > {mac.interface.if_name || mac.interface.if_descr} <% else %> Port {mac.port_index} <% end %> | {mac.entry_status || "unknown"} | {time_ago(mac.last_seen_at)} |
This device doesn't have any MAC forwarding entries, or MAC discovery hasn't run yet.
| VLAN ID | Name | Type | Status | Last Checked |
|---|---|---|---|---|
| {vlan.vlan_id} | {vlan.vlan_name || "-"} | {vlan.vlan_type || "ethernet"} | {String.upcase(vlan.status || "unknown")} | {time_ago(vlan.last_checked_at)} |
This device doesn't have any VLANs configured, or VLAN discovery hasn't run yet.
| IP Address | Subnet | Interface | Primary |
|---|---|---|---|
| {ip.ip_address} | <%= if ip.prefix_length do %> /{ip.prefix_length} <% else %> {ip.subnet_mask || "-"} <% end %> | {(ip.snmp_interface && (ip.snmp_interface.if_name || ip.snmp_interface.if_descr)) || "-"} | <%= if ip.is_primary do %> Primary <% else %> - <% end %> |
| IP Address | Prefix | Interface |
|---|---|---|
| {ip.ip_address} | /{ip.prefix_length || "-"} | {(ip.snmp_interface && (ip.snmp_interface.if_name || ip.snmp_interface.if_descr)) || "-"} |
This device doesn't have any IP addresses discovered, or IP discovery hasn't run yet.
| <.icon name="hero-check-circle" class="h-4 w-4 mx-auto" /> | Date | Original Size | Compressed Size | Ratio | Source | Actions |
|---|---|---|---|---|---|---|
| = 2 } title={ if MapSet.member?(@selected_backup_ids, backup.id), do: "Selected for comparison", else: if(MapSet.size(@selected_backup_ids) >= 2, do: "Maximum 2 backups can be selected", else: "Select to compare" ) } class="h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-600 disabled:opacity-50 disabled:cursor-not-allowed dark:border-gray-600 dark:bg-gray-700" /> | {ToweropsWeb.TimeHelpers.format_iso8601(backup.backed_up_at, @timezone)} | {format_bytes(backup.config_size_bytes)} | {format_bytes(backup.compressed_size_bytes)} | {compression_ratio}% | {String.replace(backup.trigger_source, "_", " ") |> String.capitalize()} |
<%= if ToweropsWeb.Permissions.owner?(@current_scope) do %>
<% end %>
|
Automatic backups run daily at {ToweropsWeb.TimeHelpers.format_utc_hour( 7, @timezone )}.
<% else %>Assign an agent to enable automatic backups.
<% end %>Enable MikroTik API in device settings to enable configuration backups.
Showing the most recent 100 events
{event.message}
Events will appear here as interface states change, speeds change, or other monitored changes occur.
Raw SNMP OID values collected during the last discovery run at <%= if @snmp_device.last_discovery_at do %> {ToweropsWeb.TimeHelpers.format_iso8601( @snmp_device.last_discovery_at, @timezone )} <% else %> unknown time <% end %>.
| Field | OID | Value |
|---|---|---|
| {key} | {data["oid"]} |
{inspect(data["value"])}
|
| OID | Value |
|---|---|
| {oid} |
{inspect(value)}
|
| Type | Description | OID | Value | State |
|---|---|---|---|---|
| {sensor["type"]} | {sensor["descr"]} | {sensor["oid"]} |
{sensor["value"]}
<%= if sensor["unit"] && sensor["unit"] != "" do %>
{sensor["unit"]}
<% end %>
|
<%= if sensor["state_descr"] do %> {sensor["state_descr"]} <% else %> - <% end %> |
Click the text box to select all data, then copy with Cmd+C or Ctrl+C
No raw discovery data available. Run discovery again to collect debug data.
Get started by creating a service check for this device.
| Time | Latency (ms) | P95 Latency | Jitter (ms) | Loss (%) | Throughput | Subscribers |
|---|---|---|---|---|---|---|
| {Calendar.strftime(metric.recorded_at, "%Y-%m-%d %H:%M")} | {if metric.avg_latency, do: Float.round(metric.avg_latency, 1), else: "---"} | {if metric.p95_latency, do: Float.round(metric.p95_latency, 1), else: "---"} | {if metric.avg_jitter, do: Float.round(metric.avg_jitter, 1), else: "---"} | {if metric.avg_loss, do: Float.round(metric.avg_loss, 2), else: "---"} | {if metric.avg_throughput, do: "#{Float.round(metric.avg_throughput, 1)} Mbps", else: "---"} | {metric.subscriber_count || "---"} |
No Preseem data linked to this device.
Tab not found