Custom metrics are expensive, time-consuming, and easy to get wrong. Discover how teams are drastically improving their observability while reducing complexity and cost.
Stop paying for metrics cardinality.
Store traces once, derive only the metrics you need.
Replace bespoke metric definitions with structured trace spans. Let tracing libraries handle the heavily lifting.
Jump from alert to root cause in seconds by linking metrics to the exact traces that generated them.
Traditional metrics-based observability is fundamentally flawed
Engineers must manually add counters, gauges, and histograms throughout the codebase while predicting the failure modes each metric will help detect.
Metrics often represent the largest share of observability spend. As systems scale, storing and retaining metrics can cost more than the underlying infrastructure itself.
Every new label creates additional time series. Teams are forced to choose between limiting context and losing answers or preserving context and driving up costs.
Metrics obscure the story of individual requests. When latency spikes, teams are unable to drill down to see which requests were slow or understand why.
Generate core application metrics from traces. Query the rest on demand.
// From a single OpenTelemetry trace span...
{
"trace.id": "5ba4ac9fce980850b8d904bea08f4a18",
"span.id": "0e806986ef7586cb",
"service.name": "checkout",
"service.version": "2.1.3",
"span.name": "oteldemo.CheckoutService/PlaceOrder",
"span.kind": "server",
"span.status": "ok",
"rpc.server": "oteldemo.CheckoutService",
"rpc.method": "PlaceOrder",
"rpc.grpc.status_code": 0,
"app.user.currency": "GBP",
"app.order.amount": 1389,
"app.order.items.count": 3,
"aws.region": "us-west-2",
"k8s.cluster": "p-aws-01",
"k8s.namespace.name": "store",
"k8s.deployment.name": "checkout",
"k8s.pod.name": "checkout-6c58657647-nzb9c"
}
// Derive the metrics you need:
→ calls_total{service_name="checkout", rpc_method="PlaceOrder"}
→ duration_seconds_bucket{rpc_grpc_status_code="0"}
→ calls_total{service_version="2.1.3", status_code="STATUS_CODE_ERROR"}Every trace span already contains the dimensions needed to understand application behavior. Derive metrics from essential dimensions now and query any others as needed on the fly.
Standardize on OpenTelemetry semantic conventions and use consistent span attributes, so that every team emits the same shape of telemetry.
func (s *Server) PlaceOrder(
ctx context.Context,
req *PlaceOrderRequest,
) (*PlaceOrderResponse, error) {
span := trace.SpanFromContext(ctx)
// business logic ...
span.SetAttributes(
attribute.String("app.order.id", orderID.String()),
attribute.String("app.user.id", req.UserId),
attribute.String("app.user.currency", req.UserCurrency),
attribute.Float64("app.order.amount", 1389),
attribute.Int("app.order.items.count", 3),
)
resp := &pb.PlaceOrderResponse{Order: orderResult}
return resp, nil
}Since metrics are derived from a shared tracing data model, get immediate insights into request rates, errors, and durations across the entire system, with the ability to drill down directly into traces when something appears wrong.
Use metrics derived from traces to power everything from alerts and SLOs to autoscaling and canary deployments.
Select which span attributes become metric labels while preserving full context in traces for on-demand analysis.
4-step proven path to unlocking observability excellence
Our team analyzes your current observability setup to identify gaps in capabilities and opportunities to optimize costs.
We design a unified tracing-first approach that creates a consistent telemetry model every team can standardize on.
We guide your team in instrumenting services with OpenTelemetry and configuring pipelines that automatically derive metrics from traces.
We help your team unlock all of the benefits and advanced capabilities of the NoMetrics approach.
Our team analyzes your current observability setup to identify gaps in capabilities and opportunities to optimize costs.
We design a unified tracing-first approach that creates a consistent telemetry model every team can standardize on.
We guide your team in instrumenting services with OpenTelemetry and configuring pipelines that automatically derive metrics from traces.
We help your team unlock all of the benefits and advanced capabilities of the NoMetrics approach.