<%== erb :'admin/_nav', layout: false %>

Bingo monitor

← bingo · last round: <%= @last_round ? "#{@last_round[:bucket_at].strftime('%Y-%m-%d %H:%M')} UTC bucket, controls #{@last_round[:control_ok]}/#{@last_round[:control_checks]}" : 'never (is bin/monitor running?)' %>

<% if @flash %>
<%= @flash %>
<% end %> <% if can?('bingo', 'write') %>

Add targets

One per line: slug host[:port] source_url label…. Port defaults to 443. Slug <%= Bingo::Monitor::CONTROL %> adds a control host (in Russia, not in any listed site). Only hosts a public source ties to that one datacenter; one TCP connect per minute each.

<% end %>

Targets (<%= @targets.size %>)

<% @targets.each do |t| %> > <% end %>
DatacenterEndpointLabelLastmsSince
<%= t.control? ? 'control' : "##{t.datacenter.position} #{t.datacenter.name_ru}" %> <%= t.endpoint %> <% if t.source_url %><%= t.label || 'source' %><% else %><%= t.label %><% end %> <%= { true => '✅', false => '❌', nil => '—' }[t.last_ok] %> <%= t.last_rtt_ms %> <%= t.last_change_at&.strftime('%m-%d %H:%M') %> <% if can?('bingo', 'write') %>
<% end %> <% if can?('bingo', 'delete') %>
<% end %>

Operational, not monitored (<%= @unmonitored.size %>)

<%= @unmonitored.map { |dc| "##{dc.position} #{dc.slug}" }.join(', ') %>