Skip to main content

o_sfu_telemetry/
schema.rs

1//! telemetry event and field names
2//!
3//! runtime logs, traces and diagnostics use these constants so observability
4//! names are reviewed in one place
5//! call sites should import schema names instead of hard-codding event or field
6//! strings when the name is part of the public telemetry contract
7
8pub mod event {
9    pub const HTTP_LISTENER_READY: &str = "http.listener.ready";
10    pub const RUNTIME_BOOT: &str = "runtime.boot";
11    pub const RUNTIME_TELEMETRY_INITIALIZED: &str = "runtime.telemetry_initialized";
12    pub const ROOM_CREATED: &str = "room.created";
13    pub const ROOM_RESERVATION_EXPIRED: &str = "room.reservation.expired";
14    pub const ROOM_RESERVATION_CONFLICT: &str = "room.reservation_conflict";
15    pub const ROOM_DESTROYED: &str = "room.destroyed";
16    pub const USER_JOINED: &str = "user.joined";
17    pub const USER_CLOSED: &str = "user.closed";
18    pub const USER_DISCONNECTED: &str = "user.disconnected";
19    pub const USERS_BULK_DISCONNECTED: &str = "users.bulk_disconnected";
20    pub const WS_CONNECTION_CLOSED: &str = "ws.closed";
21    pub const WS_HANDSHAKE_REJECTED: &str = "ws.handshake_rejected";
22    pub const WS_JOIN_FAILED: &str = "ws.join_failed";
23    pub const NEGOTIATION_FAILED: &str = "negotiation.failed";
24    pub const PUBLISH_COMMITTED: &str = "publish.committed";
25    pub const PUBLISH_ABORTED: &str = "publish.aborted";
26    pub const SUBSCRIBE_SUCCEEDED: &str = "subscribe.succeeded";
27    pub const SUBSCRIBE_REJECTED: &str = "subscribe.rejected";
28    pub const SUBSCRIPTION_ACTIVITY_CHANGED: &str = "subscription.activity_changed";
29    pub const PUBLICATION_ACTIVITY_CHANGED: &str = "publication.activity_changed";
30    pub const SOURCE_POLICY_ROUTE_CHANGED: &str = "source_policy.route_changed";
31    pub const TRANSPORT_HEALTH_CHANGED: &str = "transport.health.changed";
32}
33
34pub mod field {
35    pub const ROOM_ID: &str = "room_id";
36    pub const CLOSE_CODE: &str = "close_code";
37    pub const CONNECTION_ID: &str = "connection_id";
38    pub const DEPLOYMENT_ENVIRONMENT: &str = "deployment.environment";
39    pub const DURATION_MS: &str = "duration_ms";
40    pub const ERROR_KIND: &str = "error_kind";
41    pub const EVENT: &str = "event";
42    pub const FIELDS: &str = "fields";
43    pub const LEVEL: &str = "level";
44    pub const MESSAGE: &str = "message";
45    pub const MEDIA_WORKER_ID: &str = "media_worker_id";
46    pub const OPERATION: &str = "operation";
47    pub const OUTCOME: &str = "outcome";
48    pub const REASON: &str = "reason";
49    pub const REMOTE_ADDRESS: &str = "remote_address";
50    pub const SERVICE_INSTANCE_ID: &str = "service.instance.id";
51    pub const SERVICE_NAME: &str = "service.name";
52    pub const SERVICE_VERSION: &str = "service.version";
53    pub const SPANS: &str = "spans";
54    pub const USER_ID: &str = "user_id";
55    pub const TARGET: &str = "target";
56    pub const TIMESTAMP: &str = "timestamp";
57    pub const TRACE_ID: &str = "trace_id";
58    pub const TRANSPORT_MEDIA_ID: &str = "transport_media_id";
59}
60
61/// Required top-level JSON log envelope fields.
62pub const COMMON_FIELD_NAMES: &[&str] = &[
63    field::TIMESTAMP,
64    field::LEVEL,
65    field::FIELDS,
66    field::SPANS,
67    field::TARGET,
68    field::SERVICE_NAME,
69    field::SERVICE_VERSION,
70    field::SERVICE_INSTANCE_ID,
71    field::DEPLOYMENT_ENVIRONMENT,
72];
73
74pub const CORRELATION_FIELD_NAMES: &[&str] = &[
75    field::ROOM_ID,
76    field::USER_ID,
77    field::CONNECTION_ID,
78    field::REMOTE_ADDRESS,
79    field::TRANSPORT_MEDIA_ID,
80    field::MEDIA_WORKER_ID,
81    field::TRACE_ID,
82    field::OPERATION,
83    field::OUTCOME,
84    field::REASON,
85    field::CLOSE_CODE,
86    field::ERROR_KIND,
87    field::DURATION_MS,
88];