Skip to content

Latest commit

 

History

History
53 lines (39 loc) · 1.57 KB

File metadata and controls

53 lines (39 loc) · 1.57 KB

Observability

RAS exposes observability hooks so generated services can report request usage and method durations without baking one metrics backend into every macro.

The OpenTelemetry implementation lives in ras-observability-otel, and the core traits live in ras-observability-core.

Standard Setup

use ras_observability_otel::standard_setup;

let otel = standard_setup("my-service")?;
let usage_tracker = otel.usage_tracker();
let duration_tracker = otel.method_duration_tracker();
let metrics_router = otel.metrics_router();

Generated service builders expose hooks such as with_usage_tracker and with_method_duration_tracker where supported:

let service = UserServiceBuilder::new(UserServiceImpl)
    .auth_provider(my_auth_provider)
    .with_usage_tracker(usage_tracker)
    .with_method_duration_tracker(duration_tracker)
    .build();

let app = axum::Router::new()
    .merge(service)
    .merge(metrics_router);

Request Contexts

Use standard context constructors when recording custom metrics outside a generated service:

use ras_observability_core::RequestContext;

let rest = RequestContext::rest("POST", "/api/orders");
let rpc = RequestContext::jsonrpc("create_order");
let ws = RequestContext::websocket("send_message");

Consistent context names keep metrics comparable across REST, JSON-RPC, file, and WebSocket APIs.

See crates/observability/ras-observability-otel for crate-level details and examples.