Skip to content

Monitoring

What exists in repo and deploy config today—not aspirational dashboards.

Workloads and logs

WorkloadSERVICE_NAMELogs
HTTP APIsophia-apiPino → stdout → CloudWatch (default for Fargate)
Interview settlement Lambdasophia-interview-completedSame + consumer, messageId
Report Lambdasophia-report-generateSame

No custom log groups, retention, or subscription filters defined in infrastructure code.

What exists

SignalDetail
ALB healthGET /health every 30s; 200 even if Mongo degraded
ECS scaling (prod)CPU ~65%, memory ~75%, 2–6 tasks
SQS + DLQTwo primary queues; DLQ after 3 receives; 14-day DLQ retention
Lambda batchPartial batch failures enabled for retries
Smoke testpnpm smoke — health, hello, validation, 404 envelope, CORS
Log fieldsevent, requestId, status, durationMs, method, path on request completion

What does not exist (in repo)

GapDetail
CloudWatch alarmsNo DLQ depth, error rate, or latency alarms in infra
Custom metricsNo app-emitted metrics or EMF
Distributed tracingNo OpenTelemetry or X-Ray; only requestId
DLQ automationNo replay script or auto-redrive
Front-end RUMWeb on Cloudflare Pages; no error pipeline defined here

Queues (operational)

Check primary queue depth and oldest message age. Any message in InterviewCompletedDlq or ReportGenerateDlq means repeated handler failure—investigate Lambda ERROR logs by messageId and requestId.

Schema-invalid SQS messages are discarded in code and will not land in DLQ via retries.

Sophia AI Interview Platform — Internal Documentation