91 lines
2.2 KiB
Rust
91 lines
2.2 KiB
Rust
//! Request events for observability and monitoring.
|
|
//!
|
|
//! Events use DEBUG level when OTEL is disabled, INFO when enabled.
|
|
|
|
use tracing::{debug, event, Level};
|
|
|
|
use super::otel_trace::is_otel_enabled;
|
|
|
|
/// Module path used by CustomOtelFilter to identify events for OTEL export.
|
|
#[inline]
|
|
pub const fn get_module_path() -> &'static str {
|
|
"smg::observability::events"
|
|
}
|
|
|
|
pub trait Event {
|
|
fn emit(&self);
|
|
}
|
|
|
|
/// Event emitted when a prefill-decode request pair is sent.
|
|
#[derive(Debug, Clone, Copy)]
|
|
pub struct RequestPDSentEvent<'a> {
|
|
pub prefill_url: &'a str,
|
|
pub decode_url: &'a str,
|
|
}
|
|
|
|
impl Event for RequestPDSentEvent<'_> {
|
|
#[inline]
|
|
fn emit(&self) {
|
|
if is_otel_enabled() {
|
|
event!(
|
|
Level::INFO,
|
|
prefill_url = %self.prefill_url,
|
|
decode_url = %self.decode_url,
|
|
"Sending concurrent requests"
|
|
);
|
|
} else {
|
|
debug!(
|
|
prefill_url = %self.prefill_url,
|
|
decode_url = %self.decode_url,
|
|
"Sending concurrent requests"
|
|
);
|
|
}
|
|
}
|
|
}
|
|
|
|
/// Event emitted when a request is sent to a worker.
|
|
#[derive(Debug, Clone, Copy)]
|
|
pub struct RequestSentEvent<'a> {
|
|
pub url: &'a str,
|
|
}
|
|
|
|
impl Event for RequestSentEvent<'_> {
|
|
#[inline]
|
|
fn emit(&self) {
|
|
if is_otel_enabled() {
|
|
event!(Level::INFO, url = %self.url, "Sending request");
|
|
} else {
|
|
debug!(url = %self.url, "Sending request");
|
|
}
|
|
}
|
|
}
|
|
|
|
/// Event emitted when concurrent requests are received.
|
|
#[derive(Debug, Clone, Copy)]
|
|
pub struct RequestReceivedEvent;
|
|
|
|
impl Event for RequestReceivedEvent {
|
|
#[inline]
|
|
fn emit(&self) {
|
|
if is_otel_enabled() {
|
|
event!(Level::INFO, "Received concurrent requests");
|
|
} else {
|
|
debug!("Received concurrent requests");
|
|
}
|
|
}
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use std::mem::size_of;
|
|
|
|
use super::*;
|
|
|
|
#[test]
|
|
fn test_event_sizes() {
|
|
assert_eq!(size_of::<RequestReceivedEvent>(), 0);
|
|
assert_eq!(size_of::<RequestSentEvent>(), 16);
|
|
assert_eq!(size_of::<RequestPDSentEvent>(), 32);
|
|
}
|
|
}
|