{@equipment.name}

{@equipment.ip_address}

<.button phx-click="trigger_check" class="text-sm bg-white dark:bg-zinc-800 border border-zinc-300 dark:border-zinc-700 text-zinc-900 dark:text-zinc-100" > <.icon name="hero-arrow-path" class="h-4 w-4" /> Check Now <%= if @equipment.snmp_enabled do %> <.button phx-click="trigger_discovery" class="text-sm bg-white dark:bg-zinc-800 border border-zinc-300 dark:border-zinc-700 text-zinc-900 dark:text-zinc-100" > <.icon name="hero-magnifying-glass" class="h-4 w-4" /> Discover <% end %> <.button navigate={~p"/orgs/#{@current_organization.slug}/equipment/#{@equipment.id}/edit"} class="text-sm bg-white dark:bg-zinc-800 border border-zinc-300 dark:border-zinc-700 text-zinc-900 dark:text-zinc-100" > <.icon name="hero-pencil" class="h-4 w-4" /> Edit <.button phx-click="delete" data-confirm="Are you sure?" class="text-sm bg-red-600 text-white hover:bg-red-700" > <.icon name="hero-trash" class="h-4 w-4" /> Delete
Status
{@equipment.status |> to_string() |> String.upcase()}
Uptime
{@metrics.uptime_percentage}%
Avg Response
{@metrics.avg_response_time}ms
Last Check
{time_ago(@equipment.last_checked_at)}

Response Time

{sparkline(@recent_checks, 400, 80)}

Availability (last {@metrics.total_checks} checks)

{uptime_gauge(@metrics.uptime_percentage)}
{@metrics.successful_checks} successful {@metrics.total_checks - @metrics.successful_checks} failed
<%= if @snmp_device do %>

Device Information

<%= if @snmp_device.manufacturer do %>
Manufacturer: {@snmp_device.manufacturer}
<% end %> <%= if @snmp_device.model do %>
Model: {@snmp_device.model}
<% end %> <%= if @snmp_device.firmware_version do %>
Firmware: {@snmp_device.firmware_version}
<% end %> <%= if @equipment.last_discovery_at do %>
Last Discovery: {Calendar.strftime(@equipment.last_discovery_at, "%Y-%m-%d %H:%M")}
<% end %>
<%= if @snmp_device.sys_descr do %>
{@snmp_device.sys_descr}
<% end %>
<% end %> <%= if @snmp_sensors && length(@snmp_sensors) > 0 do %>

Sensors

<%= for sensor <- @snmp_sensors do %>
{sensor.sensor_descr}
<%= if sensor.latest_reading do %>
{format_sensor_value(sensor.latest_reading.value, sensor.sensor_divisor)} {sensor.sensor_unit}
<% else %>
No data
<% end %>
<% end %>
<% end %> <%= if @snmp_interfaces && length(@snmp_interfaces) > 0 do %>

Network Interfaces

<%= for interface <- @snmp_interfaces do %> <% end %>
# Name Status Speed MAC
{interface.if_index} {interface.if_name || interface.if_descr} {String.upcase(interface.if_oper_status || "unknown")} {format_speed(interface.if_speed)} {interface.if_phys_address || "-"}
<% end %>

Recent Checks

<%= if Enum.empty?(Enum.take(@recent_checks, 10)) do %>
No monitoring checks yet
<% else %>
<%= for check <- Enum.take(@recent_checks, 10) do %> <% end %>
Status Response Time
{check.status |> to_string() |> String.upcase()} <%= if check.response_time_ms do %> {check.response_time_ms}ms <% else %> - <% end %> {Calendar.strftime(check.checked_at, "%H:%M:%S")}
<% end %>