Documentation
¶
Overview ¶
Package monitor expõe um servidor HTTP de observabilidade com login, gráficos em tempo real (via SSE), histórico em ring buffer, motor de alertas configurável e endpoints pprof — tudo plugável via config.json.
Index ¶
- func GenerateSecret() string
- func HashPassword(plain string) (string, error)
- func MetricValue(s Sample, name string) (float64, bool)
- type Alert
- type Alerts
- type Auth
- func (a *Auth) Authenticated(r *http.Request) (string, bool)
- func (a *Auth) Login(w http.ResponseWriter, r *http.Request, user, pass string) error
- func (a *Auth) Logout(w http.ResponseWriter, r *http.Request)
- func (a *Auth) Middleware(next http.Handler) http.Handler
- func (a *Auth) Update(user, passHash string)
- func (a *Auth) User() string
- type Collector
- type Monitor
- type Sample
- type Snapshot
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GenerateSecret ¶
func GenerateSecret() string
GenerateSecret produz uma chave hex de 32 bytes para assinar sessões.
func HashPassword ¶
HashPassword gera o bcrypt para gravar no config.json.
Types ¶
type Alerts ¶
type Alerts struct {
// contains filtered or unexported fields
}
func NewAlerts ¶
func NewAlerts(rules []config.MonitorRule) *Alerts
func (*Alerts) Evaluate ¶
Evaluate roda todas as regras contra a amostra mais recente. Para regras do tipo "growth" usa o histórico para comparar contra um ponto de referência dentro da janela.
func (*Alerts) History ¶
History retorna alertas em ordem cronológica decrescente (mais recente primeiro).
func (*Alerts) SetListener ¶
SetListener registra um callback chamado a cada novo disparo.
func (*Alerts) SetRules ¶
func (a *Alerts) SetRules(rules []config.MonitorRule)
SetRules permite atualizar as regras em runtime (ex: após edição do config.json).
type Auth ¶
type Auth struct {
// contains filtered or unexported fields
}
Auth gerencia autenticação por cookie HMAC e bloqueio por tentativas. O segredo HMAC vem do config (gerado se vazio na primeira execução).
func (*Auth) Authenticated ¶
Authenticated verifica o cookie de sessão e retorna o usuário se válido.
func (*Auth) Login ¶
Login valida user/pass, aplica throttling e bloqueio. Devolve o cookie pronto para Set-Cookie em caso de sucesso.
func (*Auth) Middleware ¶
Middleware redireciona para /login as requisições de páginas, e devolve 401 JSON para chamadas a /api/*. Páginas autenticadas ficam disponíveis para o handler envolvido.
type Collector ¶
type Collector struct {
// contains filtered or unexported fields
}
Collector coleta amostras do runtime numa cadência fixa e mantém um ring buffer com o histórico recente. É thread-safe para leituras concorrentes (SSE, /history) enquanto o ticker grava novos pontos.
func NewCollector ¶
func (*Collector) History ¶
History retorna as amostras na ordem cronológica (mais antiga → mais nova).
type Monitor ¶
type Monitor struct {
// contains filtered or unexported fields
}
type Sample ¶
type Sample struct {
T int64 `json:"t"` // unix millis
Goroutines int `json:"goroutines"`
Threads int `json:"threads"`
CGoCalls int64 `json:"cgoCalls"`
HeapAlloc uint64 `json:"heapAlloc"`
HeapInuse uint64 `json:"heapInuse"`
HeapIdle uint64 `json:"heapIdle"`
HeapSys uint64 `json:"heapSys"`
HeapReleased uint64 `json:"heapReleased"`
HeapObjects uint64 `json:"heapObjects"`
StackInuse uint64 `json:"stackInuse"`
StackSys uint64 `json:"stackSys"`
Sys uint64 `json:"sys"`
TotalAlloc uint64 `json:"totalAlloc"`
NumGC uint32 `json:"numGC"`
GCPauseMs float64 `json:"gcPauseMs"` // última pausa
GCCPUPercent float64 `json:"gcCpuPercent"` // % de CPU em GC desde o início
AllocRate float64 `json:"allocRate"` // bytes/s alocados desde o sample anterior
NextGC uint64 `json:"nextGC"`
LastGCMs int64 `json:"lastGCMs"` // ms desde a última GC
}
Sample é uma fotografia do estado do runtime em um instante.