{t("Set up your network monitoring in a few steps.")}
{t("Sites represent your physical locations")}
{t("Add routers, switches, and servers to your sites")}
{t("Add network devices to monitor")}
{t("TowerOps automatically monitors your devices and alerts you of issues")}
|
<%!-- severity bar --%>
= 1000 -> "bg-red-500"
decimal_to_float(incident.mrr_at_risk) >= 100 -> "bg-orange-500"
decimal_to_float(incident.mrr_at_risk) > 0 -> "bg-yellow-500"
true -> "bg-gray-400"
end
else
"bg-gray-400"
end
]} />
|
<.icon
name="hero-exclamation-triangle"
class="h-3.5 w-3.5 text-red-500 flex-shrink-0"
/>
<.link
navigate={~p"/devices/#{incident.device_id}"}
class="text-sm font-semibold text-gray-900 hover:text-blue-600 dark:text-white dark:hover:text-blue-400"
>
{incident.device_name}
@ {incident.site_name}
|
{format_duration(incident.duration_seconds)}
<%= if incident.subscribers_affected > 0 do %>
{format_number(incident.subscribers_affected)}s
<% end %>
<%!-- Financial data: role-gated --%>
<%= if @can_view_financials and mrr_at_risk_positive?(incident.mrr_at_risk) do %>
{format_mrr(incident.mrr_at_risk)}
<% end %>
|
| {t("Device")} | {t("Alert")} | {t("Impact")} | {t("When")} | ||
|---|---|---|---|---|---|
|
10 ->
"bg-red-500"
alert.gaiia_impact && alert.gaiia_impact["total_subscribers"] &&
alert.gaiia_impact["total_subscribers"] > 0 ->
"bg-orange-500"
true ->
"bg-yellow-500"
end
]} />
|
<.link
navigate={~p"/devices/#{alert.device.id}"}
class="text-sm font-medium text-gray-900 hover:text-blue-600 dark:text-white dark:hover:text-blue-400"
>
{alert.device.name}
{alert.device.ip_address}
{alert.device.site.name}
|
{alert.message} | <%= if alert.gaiia_impact && alert.gaiia_impact["total_subscribers"] && alert.gaiia_impact["total_subscribers"] > 0 do %> {format_subscriber_count(alert.gaiia_impact["total_subscribers"])} <% end %> | <.timestamp datetime={alert.triggered_at} timezone={@timezone} class="font-mono text-[11px] text-gray-400 dark:text-gray-500" /> | <%= if is_nil(alert.acknowledged_at) && is_nil(alert.resolved_at) do %> <% else %> ACK <% end %> |
| {t("Site")} | {t("Devices")} | {t("Down")} | {t("QoE")} | {t("Subs")} | {t("Affected")} |
|---|---|---|---|---|---|
| <.link navigate={~p"/sites/#{site.site_id}"} class="flex items-center gap-1.5 text-sm font-medium text-gray-900 hover:text-blue-600 dark:text-white dark:hover:text-blue-400" > {site.name} | {site.device_count} | <%= if site.devices_down > 0 do %> {site.devices_down} <% else %> 0 <% end %> | <%= if site.avg_qoe do %> "text-red-600 dark:text-red-400" site.avg_qoe < 4.0 -> "text-yellow-600 dark:text-yellow-400" true -> "text-green-600 dark:text-green-400" end }> {format_qoe(site.avg_qoe)} <% else %> — <% end %> | <%= if site.subscribers do %> {site.subscribers} <% else %> — <% end %> | <%= if site.subscribers_affected > 0 do %> {format_number(site.subscribers_affected)} <% else %> — <% end %> |
{activity.summary}
{format_short_datetime(activity.timestamp, @timezone)}