Something went wrong. Try again.
forked from tailscale/tailscale
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156{{define "status"}}<html> <head><title>{{.Title}}</title></head> <style> body { /* max-width: 60rem; */ margin-left: auto; margin-right: auto; padding: 3rem 1rem 8rem; line-height: 1.4; font-size: 1rem; font-weight: 400; font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji; text-rendering: optimizeLegibility; } .small { font-size: 0.7rem; } h1 { font-weight: 500; letter-spacing: -.025em; } a { color: rgb(74 125 221); } a:hover { color: rgb(73 100 149); } ul { list-style: none; margin: 0; padding: 0; } ul>li::before { position: absolute; top: .625rem; left: .125rem; height: .375rem; width: .375rem; border-radius: 9999px; background-color: currentColor; opacity: .4; content: ""; } ul>li { position: relative; padding-left: 1.25rem; } th, td { padding: 5px; text-align: left; background: #eeeeee; } .error { color: red; } </style><body> <h1>{{.Title}}</h1> <ul> <li>Prober Status: {{if .UnhealthyProbes }} <span class="error">{{.UnhealthyProbes}}</span> out of {{.TotalProbes}} probes failed or never ran. {{else}} All {{.TotalProbes}} probes are healthy {{end}} </li> {{ range $text, $url := .Links }} <li><a href="{{$url}}">{{$text}}</a></li> {{end}} </ul>
<h1>Probes:</h1> <table class="sortable"> <thead><tr> <th>Name</th> <th>Probe Class & Labels</th> <th>Interval</th> <th>Last Finished</th> <th>Last Started</th> <th>Status</th> <th>Latency</th> <th>Last Error</th> </tr></thead> <tbody> {{range $name, $probeInfo := .Probes}} <tr> <td> {{$name}} {{range $text, $url := $probeInfo.Links}} <br/> {{if not $probeInfo.Continuous}} <button onclick="location.href='{{$url}}';" type="button"> {{$text}} </button> {{end}} {{end}} </td> <td>{{$probeInfo.Class}}<br/> <div class="small"> {{range $label, $value := $probeInfo.Labels}} {{$label}}={{$value}}<br/> {{end}} </div> </td> <td> {{if $probeInfo.Continuous}} Continuous {{else}} {{$probeInfo.Interval}} {{end}} </td> <td data-sort="{{$probeInfo.TimeSinceLastEnd.Milliseconds}}"> {{if $probeInfo.TimeSinceLastEnd}} {{$probeInfo.TimeSinceLastEnd.String}} ago<br/> <span class="small">{{$probeInfo.End.Format "2006-01-02T15:04:05Z07:00"}}</span> {{else}} Never {{end}} </td> <td data-sort="{{$probeInfo.TimeSinceLastStart.Milliseconds}}"> {{if $probeInfo.TimeSinceLastStart}} {{$probeInfo.TimeSinceLastStart.String}} ago<br/> <span class="small">{{$probeInfo.Start.Format "2006-01-02T15:04:05Z07:00"}}</span> {{else}} Never {{end}} </td> <td> {{if $probeInfo.Error}} <span class="error">{{$probeInfo.Status}}</span> {{else}} {{$probeInfo.Status}} {{end}}<br/> {{if not $probeInfo.Continuous}} <div class="small">Recent: {{$probeInfo.RecentResults}}</div> <div class="small">Mean: {{$probeInfo.RecentSuccessRatio}}</div> {{end}} </td> <td data-sort="{{$probeInfo.Latency.Milliseconds}}"> {{if $probeInfo.Continuous}} n/a {{else}} {{$probeInfo.Latency.String}} <div class="small">Recent: {{$probeInfo.RecentLatencies}}</div> <div class="small">Median: {{$probeInfo.RecentMedianLatency}}</div> {{end}} </td> <td class="small">{{$probeInfo.Error}}</td> </tr> {{end}} </tbody> </table> <link href="https://cdn.jsdelivr.net/gh/tofsjonas/sortable@latest/sortable-base.min.css" rel="stylesheet" /> <script src="https://cdn.jsdelivr.net/gh/tofsjonas/sortable@latest/sortable.min.js"></script></body></html>{{end}}