Commit c9471cc
committed
feat(metrics): add real-time metrics for a single sandbox
## Background
Add an E2B-compatible sandbox metrics endpoint as the first step toward
historical metrics support. This PR intentionally implements a real-time
single-sandbox snapshot only: start/end are accepted for API
compatibility and filter the current point, but no metrics persistence or
historical range query is introduced yet.
## Summary
Expose GET /sandboxes/:sandboxID/metrics in CubeAPI and proxy the request
to CubeMaster's /cube/sandbox/metrics endpoint. CubeAPI validates the
optional start/end range, maps CubeMaster errors into public API errors,
and converts CubeMaster's snake_case metric payload into the
E2B-compatible camelCase response shape.
Add CubeMaster HTTP routing and service logic for sandbox metrics.
CubeMaster resolves the sandbox's owning Cubelet from local cache, calls
Cubelet over gRPC using the inherited request context, filters the
returned current point by start/end, and guarantees empty results
serialize as data: [] instead of null.
Add Cubelet GetSandboxMetrics support. Cubelet builds a fallback snapshot
from local CubeBox resource metadata, requests envd's /metrics endpoint
for live CPU, memory, cache, and disk usage, and overlays live envd
values when available while preserving fallback behavior for old
templates or transient envd failures.
## Compatibility
The new protobuf messages use stable field numbers for the metrics
request, response, and SandboxMetric fields. Generated pb.go/grpc.pb.go
files are updated from the proto definitions; business logic lives
separately in CubeAPI, CubeMaster, and Cubelet service files.
## Tests
- cargo test metrics
- go test ./pkg/service/httpservice/cube -run 'TestHandleSandboxMetrics|Metrics|RegisterCubeRoutes|InternalHttp' -count=1
- go test ./pkg/service/sandbox -run 'TestMetric|TestSandboxMetrics|Test.*Metrics.*Data|TestSandboxMetricsResponse' -count=1
- go test ./services/cubebox -run 'Test.*SandboxMetric|TestGetSandboxMetrics|TestFirstContainerResources' -count=1
Signed-off-by: zry <1292625211@qq.com>1 parent 299e5b3 commit c9471cc
23 files changed
Lines changed: 5420 additions & 1535 deletions
File tree
- CubeAPI/src
- cubemaster
- handlers
- models
- services
- CubeMaster
- api/services/cubebox/v1
- pkg
- cubelet
- server
- service
- httpservice/cube
- sandbox
- types
- Cubelet
- api/services/cubebox/v1
- doc
- services/cubebox
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
| 14 | + | |
14 | 15 | | |
15 | 16 | | |
16 | 17 | | |
| |||
125 | 126 | | |
126 | 127 | | |
127 | 128 | | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
128 | 159 | | |
129 | 160 | | |
130 | 161 | | |
| |||
1060 | 1091 | | |
1061 | 1092 | | |
1062 | 1093 | | |
| 1094 | + | |
| 1095 | + | |
| 1096 | + | |
| 1097 | + | |
| 1098 | + | |
| 1099 | + | |
| 1100 | + | |
| 1101 | + | |
| 1102 | + | |
| 1103 | + | |
| 1104 | + | |
| 1105 | + | |
| 1106 | + | |
| 1107 | + | |
| 1108 | + | |
| 1109 | + | |
| 1110 | + | |
| 1111 | + | |
| 1112 | + | |
| 1113 | + | |
| 1114 | + | |
| 1115 | + | |
| 1116 | + | |
| 1117 | + | |
| 1118 | + | |
| 1119 | + | |
| 1120 | + | |
| 1121 | + | |
| 1122 | + | |
| 1123 | + | |
| 1124 | + | |
1063 | 1125 | | |
1064 | 1126 | | |
1065 | 1127 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
19 | | - | |
| 19 | + | |
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
| |||
154 | 154 | | |
155 | 155 | | |
156 | 156 | | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
157 | 206 | | |
158 | 207 | | |
159 | 208 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
316 | 316 | | |
317 | 317 | | |
318 | 318 | | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
319 | 352 | | |
320 | 353 | | |
321 | 354 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
120 | 120 | | |
121 | 121 | | |
122 | 122 | | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
123 | 127 | | |
124 | 128 | | |
125 | 129 | | |
| |||
364 | 368 | | |
365 | 369 | | |
366 | 370 | | |
367 | | - | |
| 371 | + | |
368 | 372 | | |
369 | 373 | | |
370 | 374 | | |
| |||
498 | 502 | | |
499 | 503 | | |
500 | 504 | | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
501 | 539 | | |
502 | 540 | | |
503 | 541 | | |
| |||
0 commit comments