Skip to content

Commit 51a75c7

Browse files
chore(orch): add more info for sandboxes (#2174)
* chore(orch): add more telemetry for sandboxes * chore: add more event data * chore: auto-commit generated changes * chore: refactor to prevent accidentally using old fc version * chore: namespace to sandbox.* * fix: test --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 parent 1c67c21 commit 51a75c7

6 files changed

Lines changed: 69 additions & 35 deletions

File tree

packages/api/internal/handlers/sandbox_create.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,8 @@ func (a *APIStore) PostSandboxes(c *gin.Context) {
116116
attribute.String("env.team.id", teamInfo.Team.ID.String()),
117117
telemetry.WithTemplateID(env.TemplateID),
118118
attribute.String("env.alias", alias),
119-
attribute.String("env.kernel.version", build.KernelVersion),
120-
attribute.String("env.firecracker.version", build.FirecrackerVersion),
119+
telemetry.WithKernelVersion(build.KernelVersion),
120+
telemetry.WithFirecrackerVersion(build.FirecrackerVersion),
121121
)
122122

123123
autoPause := sharedUtils.DerefOrDefault(body.AutoPause, sandbox.AutoPauseDefault)

packages/orchestrator/internal/sandbox/map.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,9 @@ func (m *Map) Insert(ctx context.Context, sbx *Sandbox) {
9393
logger.WithTemplateID(sbx.Runtime.TemplateID),
9494
logger.WithBuildID(sbx.Runtime.BuildID),
9595
logger.WithSandboxIP(sbx.Slot.HostIPString()),
96+
logger.WithEnvdVersion(sbx.Config.Envd.Version),
97+
logger.WithKernelVersion(sbx.Config.FirecrackerConfig.KernelVersion),
98+
logger.WithFirecrackerVersion(sbx.Config.FirecrackerConfig.FirecrackerVersion),
9699
)
97100

98101
m.sandboxes.Insert(sbx.Runtime.SandboxID, sbx)

packages/orchestrator/internal/server/sandboxes.go

Lines changed: 47 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -78,11 +78,11 @@ func (s *Server) Create(ctx context.Context, req *orchestrator.SandboxCreateRequ
7878
}()
7979

8080
childSpan.SetAttributes(
81+
telemetry.WithBuildID(req.GetSandbox().GetBuildId()),
8182
telemetry.WithTemplateID(req.GetSandbox().GetTemplateId()),
82-
attribute.String("kernel.version", req.GetSandbox().GetKernelVersion()),
83+
telemetry.WithKernelVersion(req.GetSandbox().GetKernelVersion()),
8384
telemetry.WithSandboxID(req.GetSandbox().GetSandboxId()),
84-
attribute.String("client.id", s.info.ClientId),
85-
attribute.String("envd.version", req.GetSandbox().GetEnvdVersion()),
85+
telemetry.WithEnvdVersion(req.GetSandbox().GetEnvdVersion()),
8686
)
8787

8888
// setup launch darkly
@@ -156,46 +156,52 @@ func (s *Server) Create(ctx context.Context, req *orchestrator.SandboxCreateRequ
156156
}
157157

158158
resolvedFCVersion := featureflags.ResolveFirecrackerVersion(ctx, s.featureFlags, req.GetSandbox().GetFirecrackerVersion())
159-
160159
volumeMounts, err := createVolumeMountModelsFromAPI(req.GetSandbox().GetVolumeMounts())
161160
if err != nil {
162161
return nil, fmt.Errorf("failed to convert volume mounts: %w", err)
163162
}
164163

165-
sbx, err := s.sandboxFactory.ResumeSandbox(
166-
ctx,
167-
template,
168-
sandbox.NewConfig(sandbox.Config{
169-
BaseTemplateID: req.GetSandbox().GetBaseTemplateId(),
164+
config := sandbox.NewConfig(sandbox.Config{
165+
BaseTemplateID: req.GetSandbox().GetBaseTemplateId(),
170166

171-
Vcpu: req.GetSandbox().GetVcpu(),
172-
RamMB: req.GetSandbox().GetRamMb(),
173-
TotalDiskSizeMB: req.GetSandbox().GetTotalDiskSizeMb(),
174-
HugePages: req.GetSandbox().GetHugePages(),
167+
Vcpu: req.GetSandbox().GetVcpu(),
168+
RamMB: req.GetSandbox().GetRamMb(),
169+
TotalDiskSizeMB: req.GetSandbox().GetTotalDiskSizeMb(),
170+
HugePages: req.GetSandbox().GetHugePages(),
175171

176-
Network: network,
172+
Network: network,
177173

178-
Envd: sandbox.EnvdMetadata{
179-
Version: req.GetSandbox().GetEnvdVersion(),
180-
AccessToken: req.GetSandbox().EnvdAccessToken,
181-
Vars: req.GetSandbox().GetEnvVars(),
182-
},
183-
184-
FirecrackerConfig: fc.Config{
185-
KernelVersion: req.GetSandbox().GetKernelVersion(),
186-
FirecrackerVersion: resolvedFCVersion,
187-
},
174+
Envd: sandbox.EnvdMetadata{
175+
Version: req.GetSandbox().GetEnvdVersion(),
176+
AccessToken: req.GetSandbox().EnvdAccessToken,
177+
Vars: req.GetSandbox().GetEnvVars(),
178+
},
188179

189-
VolumeMounts: volumeMounts,
190-
}),
191-
sandbox.RuntimeMetadata{
192-
TemplateID: req.GetSandbox().GetTemplateId(),
193-
SandboxID: req.GetSandbox().GetSandboxId(),
194-
ExecutionID: req.GetSandbox().GetExecutionId(),
195-
TeamID: req.GetSandbox().GetTeamId(),
196-
BuildID: req.GetSandbox().GetBuildId(),
197-
SandboxType: sandbox.SandboxTypeSandbox,
180+
FirecrackerConfig: fc.Config{
181+
KernelVersion: req.GetSandbox().GetKernelVersion(),
182+
FirecrackerVersion: resolvedFCVersion,
198183
},
184+
185+
VolumeMounts: volumeMounts,
186+
})
187+
childSpan.SetAttributes(
188+
telemetry.WithFirecrackerVersion(config.FirecrackerConfig.FirecrackerVersion),
189+
)
190+
191+
runtime := sandbox.RuntimeMetadata{
192+
TemplateID: req.GetSandbox().GetTemplateId(),
193+
SandboxID: req.GetSandbox().GetSandboxId(),
194+
ExecutionID: req.GetSandbox().GetExecutionId(),
195+
TeamID: req.GetSandbox().GetTeamId(),
196+
BuildID: req.GetSandbox().GetBuildId(),
197+
SandboxType: sandbox.SandboxTypeSandbox,
198+
}
199+
200+
sbx, err := s.sandboxFactory.ResumeSandbox(
201+
ctx,
202+
template,
203+
config,
204+
runtime,
199205
req.GetStartTime().AsTime(),
200206
req.GetEndTime().AsTime(),
201207
req.GetSandbox(),
@@ -210,6 +216,14 @@ func (s *Server) Create(ctx context.Context, req *orchestrator.SandboxCreateRequ
210216

211217
err = errors.Join(err, context.Cause(ctx))
212218
telemetry.ReportCriticalError(ctx, "failed to create sandbox", err)
219+
logger.L().Error(ctx, "failed to create sandbox", zap.Error(err),
220+
logger.WithSandboxID(runtime.SandboxID),
221+
logger.WithBuildID(runtime.BuildID),
222+
logger.WithTemplateID(runtime.TemplateID),
223+
logger.WithEnvdVersion(config.Envd.Version),
224+
logger.WithKernelVersion(config.FirecrackerConfig.KernelVersion),
225+
logger.WithFirecrackerVersion(config.FirecrackerConfig.FirecrackerVersion),
226+
)
213227

214228
return nil, status.Errorf(codes.Internal, "failed to create sandbox: %s", err)
215229
}

packages/orchestrator/internal/server/sandboxes_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ func Test_server_List(t *testing.T) {
5050
Runtime: sandbox.RuntimeMetadata{
5151
SandboxID: id.Generate(),
5252
},
53+
Config: sandbox.NewConfig(sandbox.Config{}),
5354
},
5455
Resources: &sandbox.Resources{
5556
Slot: &network.Slot{HostIP: net.IPv4(127, 0, 0, 1)},

packages/shared/pkg/logger/fields.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,14 @@ func WithEnvdVersion(envdVersion string) zap.Field {
5353
return zap.String("envd.version", envdVersion)
5454
}
5555

56+
func WithKernelVersion(kernelVersion string) zap.Field {
57+
return zap.String("sandbox.kernel.version", kernelVersion)
58+
}
59+
60+
func WithFirecrackerVersion(firecrackerVersion string) zap.Field {
61+
return zap.String("sandbox.firecracker.version", firecrackerVersion)
62+
}
63+
5664
func WithClientIP(clientIP string) zap.Field {
5765
return zap.String("http.client_ip", clientIP)
5866
}

packages/shared/pkg/telemetry/fields.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,14 @@ func WithEnvdVersion(envdVersion string) attribute.KeyValue {
4848
return zapFieldToOTELAttribute(logger.WithEnvdVersion(envdVersion))
4949
}
5050

51+
func WithKernelVersion(kernelVersion string) attribute.KeyValue {
52+
return zapFieldToOTELAttribute(logger.WithKernelVersion(kernelVersion))
53+
}
54+
55+
func WithFirecrackerVersion(firecrackerVersion string) attribute.KeyValue {
56+
return zapFieldToOTELAttribute(logger.WithFirecrackerVersion(firecrackerVersion))
57+
}
58+
5159
func WithMaskedAPIKey(maskedAPIKey string) attribute.KeyValue {
5260
return zapFieldToOTELAttribute(logger.WithMaskedAPIKey(maskedAPIKey))
5361
}

0 commit comments

Comments
 (0)