Documentation
¶
Overview ¶
Package summary resume uma janela em estado, disponibilidade e latência.
Existe no servidor porque painel, tela de detalhe e qualquer script que consulte a API precisam chegar ao mesmo número para a mesma janela. Esse cálculo já viveu na interface, duplicado entre duas telas: cada cópia decidia sozinha o que fazer com ausência de medição, e as duas discordavam sem que nada acusasse.
A regra que organiza o pacote: ausência de medição é ausência, nunca zero. Zero é uma afirmação — "esteve fora o tempo todo", "respondeu instantaneamente" — e afirmá-la sobre o que não se mediu é a forma mais silenciosa de uma ferramenta de vigilância mentir. Por isso os campos numéricos são ponteiros.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Point ¶
type Point struct {
At time.Time
Status domain.Status
// LatencyMS é nil quando ninguém respondeu no bucket.
LatencyMS *float64
}
Point é um bucket da série desenhada.
func Series ¶
Series divide a janela em buckets de largura igual.
Entregar a série já dividida — em vez das N amostras mais recentes — é o que garante que a faixa e o número descrevam o mesmo período. Pedindo as N mais recentes, um intervalo curto fazia a figura cobrir uma hora enquanto o rótulo dizia vinte e quatro.
type Summary ¶
type Summary struct {
MonitorID int64
Status domain.Status
Source Source
// UptimePercent é nil quando nada foi observado. Distinguir isso de
// zero é o ponto: zero afirma indisponibilidade total.
UptimePercent *float64
LatencyP50MS *float64
LatencyP95MS *float64
LatencyP99MS *float64
// LastCheckAt é o instante da última verificação, nil se não houve.
LastCheckAt *time.Time
Up int
Degraded int
Down int
Unknown int
}
Summary é o resumo de uma janela para um monitor.
func FromHeartbeats ¶
FromHeartbeats resume batidas cruas.
func FromRollups ¶
FromRollups resume agregados horários ou diários.
A camada vem por parâmetro, e não inferida das linhas: ela é a decisão que o servidor tomou ao ler, e uma janela sem dado nenhum precisa relatar de onde se tentou ler. Inferindo, uma janela vazia de noventa dias respondia "hourly" — descrevendo uma leitura que não aconteceu.