A service catalog that stays current because it is built from telemetry
Every service, its owner, its dependencies and its SLOs in one place, discovered automatically from traces and topology and enriched with the metadata your teams provide.Why teams use Service Catalog in Obseria
Know who owns what
Every service has an owning team, on-call rotation and contact channel, so incidents and questions reach the right people.
See real dependencies
Upstream and downstream dependencies come from live traces and TopoGraph, not from a diagram drawn two years ago.
Reliability per service
SLOs, error budgets and recent incidents are visible per service, making reliability a shared and measurable goal.
Service Catalog in three steps
- Step 1
Discover services
Obseria discovers services automatically from OpenTelemetry resource attributes, the Obseria Agent and Kubernetes metadata.
- Step 2
Add ownership as code
Teams add owner, tier, runbooks and repository in a YAML file in the repo or via API, versioned with the code.
- Step 3
Define SLOs and scorecards
Attach SLOs to each service and track production readiness with scorecards across the catalog.
Capabilities
- Automatic discovery. Services, endpoints, databases and queues are found from traces and topology, including ones nobody registered.
- Ownership and metadata. Owner team, on-call schedule, tier, language, repository, runbooks and documentation for every service.
- Live dependency map. Upstream and downstream dependencies from TopoGraph, with health and traffic for every connection.
- SLOs per service. Define availability and latency SLOs with error budgets and burn-rate alerts directly on the service.
- Scorecards. Check standards such as defined owner, SLO in place, runbook linked or OpenTelemetry instrumentation across all services.
- Catalog as code. Manage metadata in YAML next to your code or through API, CLI and Terraform, with changes tracked over time.
Service Catalog: what you need to know
What is a service catalog?
A service catalog is a central inventory of the services that make up a software system, together with the information people need to operate them: who owns a service, what it depends on, which services depend on it, how reliable it is supposed to be, where its code and runbooks live and how healthy it is right now. In platform engineering it is often the backbone of an internal developer portal.
The challenge with most catalogs is freshness. When the catalog is maintained by hand in a wiki or spreadsheet, it starts drifting the day it is published. New services appear without an entry, ownership changes after a reorganisation and dependency diagrams no longer match reality. During an incident, an outdated catalog is worse than none, because it sends people in the wrong direction.
Why a service catalog matters
As systems grow to dozens or hundreds of services, the question "who owns this?" becomes one of the most expensive in engineering. It slows down incident response, delays security fixes and makes it hard to assign reliability work. A current catalog answers it in seconds.
It also makes reliability manageable. When every service has a defined tier and SLO, teams can agree on what "good enough" means, prioritise work based on error budgets and see which critical services lack basic safeguards such as runbooks or alerting. For engineering leaders, the catalog becomes the map for platform investments and migrations.
What belongs in a service catalog
A useful catalog entry combines static metadata with live operational data:
- Ownership: owning team, on-call schedule, chat channel and escalation contact.
- Classification: tier or criticality, lifecycle stage, language and runtime.
- Dependencies: upstream callers, downstream services, databases, queues and third-party APIs.
- Reliability: SLOs, error budget remaining, recent incidents and golden signals.
- Change: current version, recent deployments and links to the repository.
- Documentation: runbooks, architecture notes and API specifications.
How Obseria builds the service catalog
Obseria starts from what it can observe. Services are discovered from OpenTelemetry resource attributes such as service.name and service.namespace, from the Obseria Agent and from Kubernetes metadata. Obseria TopoGraph derives dependencies from traces and network data, so the catalog shows which services actually call each other, how much traffic flows and where errors occur. Services that are not registered yet still show up, which makes gaps visible.
Teams add the information telemetry cannot provide. A small YAML file in the repository, or an API call from your provisioning pipeline, sets owner, tier, runbooks and links:
service: checkout
owner: team-payments
tier: 1
oncall: payments-primary
runbook: docs/runbooks/checkout.md
slo:
availability: 99.9
latency_p95_ms: 400
That metadata drives the rest of the platform. Incident management routes pages to the owning team's on-call schedule. Status pages build components from catalog services. SLOs defined on a service get error budgets and burn-rate alerts automatically. Scorecards show which services meet your standards, for example whether a tier 1 service has an SLO, a runbook and full trace coverage.
Because ownership and dependencies are known, the catalog also answers impact questions before a change: which teams need to be informed when a shared database is migrated, or which tier 1 services would be affected if a particular queue slowed down. Security and compliance teams use the same inventory to see which services process personal data and who is responsible for them.
Service catalog best practices
- Automate discovery. Never rely on people to register services; let telemetry find them and ask for metadata.
- Keep metadata next to the code. YAML in the repository is reviewed and versioned like everything else.
- Make ownership mandatory. A service without an owner should be visible and flagged.
- Start SLOs with critical services. Define tier 1 SLOs first, then expand.
- Use scorecards to guide, not punish. Track progress on standards and celebrate improvement.
Frequently asked questions
From OpenTelemetry resource attributes like service.name, from the Obseria Agent and from Kubernetes metadata. Dependencies come from traces and topology via TopoGraph.
You can keep it as YAML in each repository, manage it through the API, CLI or Terraform, or edit it in the UI. Changes are tracked over time.
Yes. Availability and latency SLOs are defined on the service, with error budgets, burn-rate alerts and history included.
Yes. Incidents are routed to the owning team's on-call schedule, and the incident shows the service's dependencies, SLOs and recent deployments.
No. The service catalog is part of the Obseria platform and included with every account, with unlimited users.
Ready for observability that delivers answers?
Try every feature free for 14 days, no credit card and no proprietary agents.