feat(debug): add Telemetria teszt section to debug page (v0.28.1)
- New GET /api/debug/telemetry endpoint runs full telemetry pipeline on-demand - GetTelemetryPreview callback added to DebugCallbacks, wired in main.go - BuildAppTelemetryForDebug() exported wrapper in report/telemetry.go - Debug page: new collapsible section with per-app table (memory, CPU, log errors/warnings, issues) and raw JSON viewer - Available regardless of hub configuration Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -15,6 +15,7 @@ import (
|
||||
|
||||
"gitea.dooplex.hu/admin/felhom-controller/internal/backup"
|
||||
"gitea.dooplex.hu/admin/felhom-controller/internal/monitor"
|
||||
"gitea.dooplex.hu/admin/felhom-controller/internal/report"
|
||||
"gitea.dooplex.hu/admin/felhom-controller/internal/stacks"
|
||||
"gitea.dooplex.hu/admin/felhom-controller/internal/system"
|
||||
)
|
||||
@@ -27,6 +28,7 @@ type DebugCallbacks struct {
|
||||
TriggerSetupMode func() error
|
||||
HubConnectivityTest func() (statusCode int, latencyMs int64, err error)
|
||||
GiteaConnectivityTest func() (statusCode int, latencyMs int64, err error)
|
||||
GetTelemetryPreview func() ([]report.AppTelemetry, error)
|
||||
}
|
||||
|
||||
// debugPageHandler renders the debug dashboard page.
|
||||
@@ -80,6 +82,10 @@ func (s *Server) handleDebugAPI(w http.ResponseWriter, r *http.Request) {
|
||||
case subpath == "gitea/test-connectivity" && r.Method == http.MethodPost:
|
||||
s.debugGiteaConnectivity(w, r)
|
||||
|
||||
// Section: Telemetry testing
|
||||
case subpath == "telemetry" && r.Method == http.MethodGet:
|
||||
s.debugTelemetry(w, r)
|
||||
|
||||
// Section 6: Self-update
|
||||
case subpath == "selfupdate/dry-run" && r.Method == http.MethodPost:
|
||||
s.debugSelfUpdateDryRun(w, r)
|
||||
@@ -538,6 +544,40 @@ func (s *Server) debugGiteaConnectivity(w http.ResponseWriter, r *http.Request)
|
||||
fmt.Sprintf("Gitea elérhető (HTTP %d, %dms)", statusCode, latency), data)
|
||||
}
|
||||
|
||||
// ── Section: Telemetry testing ───────────────────────────────────────
|
||||
|
||||
func (s *Server) debugTelemetry(w http.ResponseWriter, r *http.Request) {
|
||||
if s.debugCallbacks == nil || s.debugCallbacks.GetTelemetryPreview == nil {
|
||||
writeDebugJSON(w, http.StatusNotImplemented, false, "Nem bekötött", nil)
|
||||
return
|
||||
}
|
||||
start := time.Now()
|
||||
telemetry, err := s.debugCallbacks.GetTelemetryPreview()
|
||||
latency := time.Since(start).Milliseconds()
|
||||
if err != nil {
|
||||
writeDebugJSON(w, http.StatusOK, false, err.Error(), map[string]interface{}{"latency_ms": latency})
|
||||
return
|
||||
}
|
||||
|
||||
totalErrors := 0
|
||||
totalWarnings := 0
|
||||
for _, app := range telemetry {
|
||||
totalErrors += app.LogErrors
|
||||
totalWarnings += app.LogWarnings
|
||||
}
|
||||
|
||||
writeDebugJSON(w, http.StatusOK, true,
|
||||
fmt.Sprintf("Telemetria összegyűjtve: %d app, %d hiba, %d figyelmeztetés (%dms)",
|
||||
len(telemetry), totalErrors, totalWarnings, latency),
|
||||
map[string]interface{}{
|
||||
"latency_ms": latency,
|
||||
"app_count": len(telemetry),
|
||||
"total_errors": totalErrors,
|
||||
"total_warnings": totalWarnings,
|
||||
"app_telemetry": telemetry,
|
||||
})
|
||||
}
|
||||
|
||||
// ── Section 6: Self-update ──────────────────────────────────────────
|
||||
|
||||
func (s *Server) debugSelfUpdateDryRun(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
Reference in New Issue
Block a user