diff --git a/diagnostics/sysinfo.go b/diagnostics/sysinfo.go index 586692fa3ca..bf1d9498ecb 100644 --- a/diagnostics/sysinfo.go +++ b/diagnostics/sysinfo.go @@ -17,9 +17,11 @@ package diagnostics import ( + "encoding/json" "net/http" diaglib "github.com/ledgerwatch/erigon-lib/diagnostics" + "github.com/ledgerwatch/erigon-lib/sysutils" ) func SetupSysInfoAccess(metricsMux *http.ServeMux, diag *diaglib.DiagnosticClient) { @@ -32,8 +34,41 @@ func SetupSysInfoAccess(metricsMux *http.ServeMux, diag *diaglib.DiagnosticClien w.Header().Set("Content-Type", "application/json") writeHardwareInfo(w, diag) }) + + metricsMux.HandleFunc("/cpu-usage", func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Access-Control-Allow-Origin", "*") + w.Header().Set("Content-Type", "application/json") + writeCPUUsage(w) + }) + + metricsMux.HandleFunc("/processes-info", func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Access-Control-Allow-Origin", "*") + w.Header().Set("Content-Type", "application/json") + writeProcessesInfo(w) + }) + + metricsMux.HandleFunc("/memory-info", func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Access-Control-Allow-Origin", "*") + w.Header().Set("Content-Type", "application/json") + writeMemoryInfo(w) + }) } func writeHardwareInfo(w http.ResponseWriter, diag *diaglib.DiagnosticClient) { diag.HardwareInfoJson(w) } + +func writeCPUUsage(w http.ResponseWriter) { + cpuusage := sysutils.CPUUsage() + json.NewEncoder(w).Encode(cpuusage) +} + +func writeProcessesInfo(w http.ResponseWriter) { + processes := sysutils.GetProcessesInfo() + json.NewEncoder(w).Encode(processes) +} + +func writeMemoryInfo(w http.ResponseWriter) { + totalMemory := sysutils.TotalMemoryUsage() + json.NewEncoder(w).Encode(totalMemory) +}