pub struct ProfilingMetrics {Show 15 fields
pub profiles_active: AtomicU64,
pub profiles_total: AtomicU64,
pub schemas_total: AtomicU64,
pub profile_updates_total: AtomicU64,
pub schema_violations_total: Arc<RwLock<HashMap<String, u64>>>,
pub anomalies_detected: Arc<RwLock<HashMap<String, u64>>>,
pub avg_anomaly_score: AtomicU64,
pub requests_with_anomalies: AtomicU64,
pub endpoint_stats: Arc<RwLock<HashMap<String, EndpointStats>>>,
pub total_bytes_in: AtomicU64,
pub total_bytes_out: AtomicU64,
pub max_request_size: AtomicU64,
pub max_response_size: AtomicU64,
pub bandwidth_request_count: AtomicU64,
pub bandwidth_timeline: Arc<RwLock<BandwidthTimeline>>,
}Expand description
Profiling and anomaly detection metrics (Phase 2).
Fields§
§profiles_active: AtomicU64Active endpoint profiles
profiles_total: AtomicU64Total profiles created (gauge)
schemas_total: AtomicU64Total schemas learned (gauge)
profile_updates_total: AtomicU64Total profile updates (counter)
schema_violations_total: Arc<RwLock<HashMap<String, u64>>>Schema violations by endpoint (counter vec)
anomalies_detected: Arc<RwLock<HashMap<String, u64>>>Anomalies detected by type
avg_anomaly_score: AtomicU64Average anomaly score
requests_with_anomalies: AtomicU64Requests with anomalies
endpoint_stats: Arc<RwLock<HashMap<String, EndpointStats>>>Per-endpoint statistics (path -> stats)
total_bytes_in: AtomicU64Bandwidth tracking: total bytes received (request bodies)
total_bytes_out: AtomicU64Bandwidth tracking: total bytes sent (response bodies)
max_request_size: AtomicU64Bandwidth tracking: max request size seen
max_response_size: AtomicU64Bandwidth tracking: max response size seen
bandwidth_request_count: AtomicU64Bandwidth tracking: request count for averaging
bandwidth_timeline: Arc<RwLock<BandwidthTimeline>>Bandwidth timeline (circular buffer, 60 data points for last hour)
Implementations§
Source§impl ProfilingMetrics
impl ProfilingMetrics
Sourcepub fn set_active_profiles(&self, count: u64)
pub fn set_active_profiles(&self, count: u64)
Update active profiles count.
Sourcepub fn set_profiles_total(&self, count: u64)
pub fn set_profiles_total(&self, count: u64)
Update total profiles count (gauge).
Sourcepub fn set_schemas_total(&self, count: u64)
pub fn set_schemas_total(&self, count: u64)
Update total schemas count (gauge).
Sourcepub fn record_profile_update(&self)
pub fn record_profile_update(&self)
Increment profile updates counter.
Sourcepub fn record_schema_violation(&self, endpoint: &str)
pub fn record_schema_violation(&self, endpoint: &str)
Record a schema violation for a specific endpoint.
Sourcepub fn get_schema_violations(&self) -> Vec<(String, u64)>
pub fn get_schema_violations(&self) -> Vec<(String, u64)>
Get all schema violations by endpoint.
Sourcepub fn record_anomaly(&self, anomaly_type: &str, score: f64)
pub fn record_anomaly(&self, anomaly_type: &str, score: f64)
Record an anomaly detection.
Sourcepub fn record_endpoint(&self, path: &str, method: &str)
pub fn record_endpoint(&self, path: &str, method: &str)
Record an endpoint hit for API profiling.
Sourcepub fn get_endpoint_stats(&self) -> Vec<(String, EndpointStats)>
pub fn get_endpoint_stats(&self) -> Vec<(String, EndpointStats)>
Get all endpoint statistics for the profiling API.
Sourcepub fn record_request_bytes(&self, bytes: u64)
pub fn record_request_bytes(&self, bytes: u64)
Record bandwidth for a request body.
Sourcepub fn record_response_bytes(&self, bytes: u64)
pub fn record_response_bytes(&self, bytes: u64)
Record bandwidth for a response body.
Sourcepub fn get_bandwidth_stats(&self) -> BandwidthStats
pub fn get_bandwidth_stats(&self) -> BandwidthStats
Get bandwidth statistics for the API.
Trait Implementations§
Source§impl Debug for ProfilingMetrics
impl Debug for ProfilingMetrics
Source§impl Default for ProfilingMetrics
impl Default for ProfilingMetrics
Source§fn default() -> ProfilingMetrics
fn default() -> ProfilingMetrics
Auto Trait Implementations§
impl !Freeze for ProfilingMetrics
impl !RefUnwindSafe for ProfilingMetrics
impl Send for ProfilingMetrics
impl Sync for ProfilingMetrics
impl Unpin for ProfilingMetrics
impl UnsafeUnpin for ProfilingMetrics
impl !UnwindSafe for ProfilingMetrics
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more