17
17
package diagnostics
18
18
19
19
import (
20
+ "encoding/json"
20
21
"net/http"
21
22
22
23
diaglib "github.com/ledgerwatch/erigon-lib/diagnostics"
24
+ "github.com/ledgerwatch/erigon-lib/sysutils"
23
25
)
24
26
25
27
func SetupSysInfoAccess (metricsMux * http.ServeMux , diag * diaglib.DiagnosticClient ) {
@@ -32,8 +34,41 @@ func SetupSysInfoAccess(metricsMux *http.ServeMux, diag *diaglib.DiagnosticClien
32
34
w .Header ().Set ("Content-Type" , "application/json" )
33
35
writeHardwareInfo (w , diag )
34
36
})
37
+
38
+ metricsMux .HandleFunc ("/cpu-usage" , func (w http.ResponseWriter , r * http.Request ) {
39
+ w .Header ().Set ("Access-Control-Allow-Origin" , "*" )
40
+ w .Header ().Set ("Content-Type" , "application/json" )
41
+ writeCPUUsage (w )
42
+ })
43
+
44
+ metricsMux .HandleFunc ("/processes-info" , func (w http.ResponseWriter , r * http.Request ) {
45
+ w .Header ().Set ("Access-Control-Allow-Origin" , "*" )
46
+ w .Header ().Set ("Content-Type" , "application/json" )
47
+ writeProcessesInfo (w )
48
+ })
49
+
50
+ metricsMux .HandleFunc ("/memory-info" , func (w http.ResponseWriter , r * http.Request ) {
51
+ w .Header ().Set ("Access-Control-Allow-Origin" , "*" )
52
+ w .Header ().Set ("Content-Type" , "application/json" )
53
+ writeMemoryInfo (w )
54
+ })
35
55
}
36
56
37
57
func writeHardwareInfo (w http.ResponseWriter , diag * diaglib.DiagnosticClient ) {
38
58
diag .HardwareInfoJson (w )
39
59
}
60
+
61
+ func writeCPUUsage (w http.ResponseWriter ) {
62
+ cpuusage := sysutils .CPUUsage ()
63
+ json .NewEncoder (w ).Encode (cpuusage )
64
+ }
65
+
66
+ func writeProcessesInfo (w http.ResponseWriter ) {
67
+ processes := sysutils .GetProcessesInfo ()
68
+ json .NewEncoder (w ).Encode (processes )
69
+ }
70
+
71
+ func writeMemoryInfo (w http.ResponseWriter ) {
72
+ totalMemory := sysutils .TotalMemoryUsage ()
73
+ json .NewEncoder (w ).Encode (totalMemory )
74
+ }
0 commit comments