Services and discovery

Why services aren't something you create, and how a monitor binds to one.

Services and discovery

A service is one of the "subjects" from Start here: a thing with an identity that outlives any one signal about it. Services, monitors, deployments and environments are all subjects; a service is the one you almost never create by hand.

Discovered, not declared

A service's existence is a fact your telemetry reports, not something you configure ahead of time. The first time a log, trace or metric arrives carrying a service.name, upzero creates the row for it. Every signal after that refreshes it. There's no "add a service" button, and the Services page says so when it's empty:

No services discovered yet. Services appear here once telemetry carrying a service name arrives. Check that your instrumentation sets service.name and is reaching this organization.

Once a service exists, you can annotate it (an owner, a tier, an environment, a repo link, a runbook link) without changing the discovery itself. Annotating a name discovery has never seen is refused rather than silently creating a row.

Monitors bind to services, they don't become one

A monitor is a different subject: something you declare yourself, that probes a URL, port or DNS record from outside. A monitor checking api.example.com and a service named payments-api emitting spans can be the same underlying thing observed two ways, from outside and from inside, so a monitor carries an optional link to a service. Binding them lets the console and your objectives treat the pair as one subject without merging their data into a single table.

Telemetry (service.name)discoversService: payments-apiMonitor: api.example.comservice_id (optional)soft bind, not a merge

See resources and Kinds for how a service's annotations can also be declared from git.

On this page