TODO: Write full article. Outline below.
The cost of adding observability after an incident: you’re flying blind during the exact moments that matter most. For Rentals Hub, I decided the Golden Signals would be part of the definition of “production ready” — not a nice-to-have.
rentals.search.duration.ms histogram — p50/p95/p99rentals.search.total, rentals.listing.views.totalrentals.listing.create_failed.total — with asset_type and city tagsdotnet.process.memory.usageRentalsHubMeterWalk through creating a singleton Meter("RentalsManagement.API"), why the name matches
the wildcard in AddMeter("RentalsManagement.*"), and how to record tagged observations.
Listing queries include phone numbers in filter parameters. OTel would happily export
these to Grafana Cloud. The fix: a custom BaseProcessor<Activity> that scans tag
values for E.164 patterns and replaces them with [REDACTED] before export.
fly.toml [metrics] block — internal scraping without exposing /metrics publicly.
How it integrates with Grafana Cloud as a data source.
Row breakdown: System Health · Search Traffic · Listings · Errors · DB+Cache · Saturation. Alert rules: p95 latency > 2s, error rate > 5%, memory > 80%.