Observability
Observability
Send traces, real-user web vitals, and custom metrics from your app to Deploxa over simple POST endpoints, then explore them in the dashboard. Every ingest endpoint accepts cross-origin requests so you can call it from the browser or your server.
Distributed tracing
Post an OpenTelemetry-style trace with its spans to record a request's timing breakdown. Each trace has a root and an array of spans.
await fetch("https://deploxa.com/api/traces/my-project", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
traceId: "trace_abc123",
rootName: "GET /checkout",
service: "web",
status: "ok",
durationMs: 184,
startedAt: new Date().toISOString(),
spans: [
{
spanId: "span_1",
name: "db.query",
durationMs: 42,
startedAt: new Date().toISOString(),
attributes: { table: "orders" },
},
],
}),
});Web Vitals (RUM)
Report Core Web Vitals from real visitors. Send one event or an array (up to 50 per request). Country and User-Agent are filled from the request if you omit them.
| Field | Metric |
|---|---|
lcp | Largest Contentful Paint (ms) |
fcp | First Contentful Paint (ms) |
cls | Cumulative Layout Shift |
inp | Interaction to Next Paint (ms) |
ttfb | Time to First Byte (ms) |
import { onLCP, onCLS, onINP } from "web-vitals";
function send(metric) {
navigator.sendBeacon(
"https://deploxa.com/api/rum/my-project",
JSON.stringify({ route: location.pathname, [metric.name.toLowerCase()]: metric.value }),
);
}
onLCP(send); onCLS(send); onINP(send);Custom metrics
Record any numeric metric — queue depth, cache hit rate, job counts. Send one or an array (up to 100 per request). Tags let you slice the metric in the dashboard.
await fetch("https://deploxa.com/api/metrics/my-project", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify([
{ name: "queue.depth", value: 17, unit: "count", tags: { queue: "emails" } },
{ name: "cache.hit_rate", value: 0.94, unit: "ratio" },
]),
});Log search
Build and runtime logs are captured automatically and searchable from the dashboard — filter by deployment, level, and text, and export them as JSON or CSV from the Logs page.

