# Observability

Watch a build, then follow the running service, in the same place you deploy. Production and every preview keep their own logs and metrics, so you are always looking at the environment you mean to.

## Build logs

Each deploy streams its progress step by step as it runs - installing dependencies, building, creating the container image, releasing. If a build fails, the lines that broke it are pulled out of the build output and put on the deploy record, so the reason is on screen without digging. The steps themselves are explained on [Builds](/platform/deployments/builds#the-steps).

## Runtime logs

Container environments keep searchable runtime logs in the console:

- Filter by time range (last hour to last 7 days), severity, or free-text search.
- **Live tail** follows new entries as they arrive - useful while you reproduce a bug.
- Request entries carry their latency, so slow endpoints stand out while you scroll.

Anything your app writes to stdout or stderr lands here. Static sites are files on a CDN - nothing runs, so there are no runtime logs to read.

## Metrics

Each container environment has a metrics dashboard with six charts:

| Chart | Shows |
| --- | --- |
| CPU | Utilization of the allocated CPU, in percent |
| Memory | Utilization of the allocated memory, in percent |
| Requests | Request count over time |
| Active instances | How many instances are serving - watch [scale to zero](/create/scaling#min-instances) work |
| Bandwidth out | Bytes sent |
| Bandwidth in | Bytes received |

Charts refresh every 30 seconds while open, and history is kept for 90 days. The environment overview shows CPU and memory sparklines for the last hour, so a glance tells you whether anything is running hot.

## Reading the charts

- **CPU pinned near 100%** - requests are queueing. Lower the [CPU target](/create/scaling#cpu-target), lower [concurrency](/create/scaling#concurrency), or move up a [size](/create/application-settings#size).
- **Memory climbing between deploys** - likely a leak; each deploy resets it. Watch whether it climbs to a crash or plateaus.
- **Active instances stuck at max** - the [ceiling](/create/scaling#max-instances) is capping traffic. Raise it, or raise concurrency if instances are underused.
- **Bandwidth out spiking** - remember [container bandwidth is metered](/billing/billing#what-counts-as-usage); static assets belong on the CDN.

## History

The last 20 deploys of each environment are kept with commit, duration, status, and build steps - see [Deploy history](/platform/deployments#deploy-history). The activity tab records what changed outside of deploys too: settings edits and environment-variable changes, with who and when - and [never the values](/platform/environment-variables#history-without-leaks).

## Ask instead of digging

The [MCP server](/deploy-with-ai/mcp-server) reads the same logs: ask Claude "why did the last deployment fail?" and it fetches the deploy record and the logs, and summarizes what it finds.

## Related

- [Builds](/platform/deployments/builds): Reading a failed build's extracted error lines.
- [Scaling](/create/scaling): The settings the charts tell you to change.
- [Limits](/reference/limits): Retention windows for logs, metrics, and history.
