Documentation

Trace Town reads OpenTelemetry. What matters is that your services ship OTel metrics somewhere with a Prometheus query API — not who stores them.

This is a young document and it will grow as more systems get connected. If yours is not here and you get it working, we would like to know.

Connect your system

Open the town, then Data → Connect a source. Two steps: which provider, then where it is. Everything can be changed afterwards.

Where your credential goes

Signed in, the credential is encrypted and stored against your account, and our server does the fetching — so it survives a reload and a team can share a town without sharing a key with a person. Some providers, Grafana Cloud among them, only work this way: they send no CORS headers, so a browser cannot call them directly.

Signed out, the key is held in that tab's memory and nowhere else. You retype it after a reload. That is not a crippled mode — for someone pointing at a Prometheus on their own laptop it is the right one — but it only works where the provider allows cross-origin requests.

Prometheus Signed in or out

Also Mimir, Thanos, Victoria Metrics — anything speaking the Prometheus query API.

URL
The base that /api/v1/query hangs off, usually http://your-prometheus:9090
Credential
None, unless you have put something in front of it

Browsing signed out, Prometheus needs --web.cors.origin set or it will refuse the browser. Signed in, our server does the fetching and this does not arise.

Grafana Cloud Signed in only

Grafana Cloud sends no CORS headers, so it cannot be read from a browser directly.

URL
The query endpoint from the Prometheus card’s Details page in the Cloud Portal
Credential
instanceID:token — with the colon, which is what sends HTTP Basic
  1. Cloud Portal → your stack → Details on the Prometheus card. The query endpoint URL and your numeric instance ID are both on that page.
  2. Generate an access policy token with the metrics:read scope. Copy it — it is shown once. If you lose it, delete it under Security → Access Policies and make another; the value cannot be retrieved.
  3. In Trace Town, choose Prometheus, paste the query endpoint, and enter instanceID:token as the credential. Use the Show button to check it before connecting.
  4. Sign in and save the connection.

SigNoz Signed in or out

Self-hosted or cloud. Brings its own logs, so there is nothing else to point at.

URL
The query service, usually port 8080
Credential
A read-only API key, or a session token
Sent as
Pick one. If it is refused, try the other

SigNoz accepts two authentication schemes and which one a route wants varies by version. A 403 is more often the key’s account lacking the admin role than a wrong key.

Loki For logs

A companion, not a source of its own — pair it with a metrics provider that keeps no logs.

URL
Your Loki endpoint, added beside the Prometheus one
Credential
Reuses the metrics credential

What your services need to emit

Standard OpenTelemetry, and nothing bespoke. Trace Town reads whichever of these it finds:

http.server.request.duration     the service itself — rate, errors, latency
http.client.request.duration     service to service, and to third parties
db.client.operation.duration     service to datastore
messaging.client.sent.messages   service to broker
messaging.client.consumed.messages   broker to worker

If your collector runs the spanmetrics connector, that is found automatically and preferred — it covers every service that emits a span rather than only the ones serving HTTP, which is the difference between seeing your queue workers and not.

Set service.namespace on your services and the town zones itself into neighbourhoods with a signpost at the edge of each. It is the single highest-value attribute you can add.

The buildings

A service's shape is guessed from its name and from how it is used, and you can correct it — select a building and change its kind. Height is request rate on a log scale, so five a second still gets you a skyline.

A low, wide gatehouse with a canopy over three lanes and lifting barriers.
GatewayA gatehouse. Everything from outside comes through it, and the barriers lift faster the more traffic there is.
A glass-fronted office block with a lit band at the roofline.
APIAn office block. The commonest building, and the fallback when nothing else fits.
A factory with a sawtooth roof and smoke rising from two chimneys.
WorkerA factory, with a yard the delivery vans pull into. Work arrives, is processed, leaves. The chimneys smoke harder the busier it is.
Storage tanks on a paved yard.
DatabaseA tank farm. Datastores rarely emit anything themselves — they appear as the far end of somebody's client calls.
A water tower on legs.
CacheA water tower. Small, fast, and everybody draws from it.
A postal depot: a sorting hall with two roller shutters onto a marked yard, a counter door and a postbox.
QueueA postal depot. Work is handed in at the counter and leaves by van — which is the whole point of a queue, and the one place the town shows a call being answered later rather than now. Vans waiting in the yard mean it is draining slower than it fills.
A narrow clock tower.
Scheduled jobA clock tower, narrow and tall, telling the actual time on all four faces.
A flat-roofed building with a satellite dish on top.
ExternalA satellite dish. Something you call but do not run — a payment provider, an identity service. The dish turns faster the more you call it.

The traffic

Every figure on the roads is a call. Blue is a clean one and red is a failed one, and how fast they move is the p99 of whatever they are going to see. What they are carrying says something the roads on their own never could: whether anybody is waiting for an answer.

A small blue figure walking, arms at its sides.
A requestSomebody walking to a door and waiting there for an answer. This is most of the town: one figure, one call, somebody at the other end holding the line open.
A small blue figure walking with one arm out, holding a white letter.
A message postedThe same journey, with a letter held out to hand in at a depot's counter. Publishing to a queue really is a request — the broker takes it and acknowledges it — so it walks like one, and the letter is the only thing that marks it out.
A blue post van with an open back, loaded with parcels.
A deliveryWhat leaves a depot, going out to whoever drains that queue. Nobody is waiting for it, which is the whole difference: it goes when it is ready rather than when it is asked. One van stands for a batch of messages rather than a single one, so a busy queue reads as a delivery round and not a traffic jam.

Two of those go to the same building and mean opposite things, which is why the depot has both a counter and loading bays, and why a factory has a door for people and a shutter for vans. You can watch which one a given call uses.

What the town is telling you

Every signal has one visual meaning, and nothing else shares it.

Request rateBuilding height, on a log scale.
Error rateThe lit band at the roofline: green, amber, red. It pulses when it is bad.
p99 latencyWalking speed. Slow services have slow roads.
Live trafficPeople on the roads — blue for a clean call, red for a failed one. A letter means it is being posted to a queue; a van means the queue is handing it on.
Sustained failureThe building closes for repairs: scaffolding, a crane, cones in the road.
Overall healthThe weather, from clear through to a storm with lightning.
Service domainIts own district, with a signpost at the edge.

The numbers

Requests, errors and p99 are the town's totals, and they mean what you would expect. Two do not:

Population is an accumulator, not a measurement. It counts the traffic this town has served while healthy, and nothing else. Serve a lot, well, for a long time, and it grows. An incident stops it growing rather than knocking it down — the repair sites carry the bad news instead. It is a session's worth: a reload resets it, and so does moving to a different town, because it belongs to the town that earned it.

Level is the same number on a gentler curve, so it keeps moving once population has grown too large for a change in it to show.

Repairs counts the services currently degraded or under repair, out of the total.

When nothing shows up

An empty town. Usually the query window: a provider only reports what had traffic, and a quiet service reports nothing at all. Widen the window in the connection settings before assuming anything is broken.

Services that come and go. Same cause. Trace Town remembers a service that has gone quiet rather than demolishing its building, but a window narrower than your traffic will still make the town restless.

Nothing but buildings, no roads. Roads come from client metrics — http.client, db.client, messaging.client. Without them we know your services exist but not what they call.

Missing workers. A queue worker never serves an HTTP request, so it has no http.server metrics and appears only as the far end of somebody else's. Running the collector's spanmetrics connector fixes this properly.

A 401 or 403. Check whether the provider wants the credential in a different header, and whether the key's account has the role it needs.