Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions docs/research/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,11 @@ This directory contains active design documents and architectural research for t
- Best-practice survey (Portainer, Lens, ArgoCD, Datadog, HAProxy stats, Grafana, NN/g)
- Three layout options with ASCII mockups, recommendation, and implementation outline

- **[metrics-source-agnostic.md](metrics-source-agnostic.md)**
- Plan to evolve the Metrics gear from "HAProxy with extras" to a source-agnostic dashboard with per-source attribution ([#87](https://github.com/sarg3nt/gearbox/issues/87))
- Surveys the existing capability/probe + discovery infrastructure on the agent side
- 9-phase rollout, each independently shippable, starting from a capability manifest endpoint and ending at multi-source (HAProxy + nginx + Apache + Caddy + Docker) drill-down

## Purpose

These documents serve as:
Expand Down
352 changes: 352 additions & 0 deletions docs/research/metrics-source-agnostic.md

Large diffs are not rendered by default.

6 changes: 6 additions & 0 deletions gearbox/cmd/server/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -682,6 +682,12 @@ func main() {
r.Get("/{boxID}/history/backend/{backendName}", h.APIBackendHistoryHandler)
r.Get("/{boxID}/incidents", h.APIIncidentsHandler)

// Metrics gear v2 — insights & drill-down endpoints
r.Get("/{boxID}/metrics/summary", h.APIMetricsSummaryHandler)
r.Get("/{boxID}/metrics/error-breakdown", h.APIMetricsErrorBreakdownHandler)
r.Get("/{boxID}/metrics/backend/{backendName}/details", h.APIMetricsBackendDetailsHandler)
r.Get("/{boxID}/metrics/log-errors", h.APIMetricsLogErrorsHandler)

// Disabled entities management
r.Get("/{boxID}/disabled-entities", h.APIDisabledEntitiesHandler)
r.Post("/{boxID}/disable-entity", h.APIDisableEntityHandler)
Expand Down
Loading
Loading