pub struct TelemetryGuardBuilder { /* private fields */ }Implementations§
Source§impl TelemetryGuardBuilder
impl TelemetryGuardBuilder
pub fn add_sink<Sink>(
self,
max_level: LevelFilter,
sink: Sink,
) -> TelemetryGuardBuilderwhere
Sink: EventSink + 'static,
Sourcepub fn with_max_level_override(
self,
level_filter: LevelFilter,
) -> TelemetryGuardBuilder
pub fn with_max_level_override( self, level_filter: LevelFilter, ) -> TelemetryGuardBuilder
Programmatic override
pub fn with_local_sink_enabled(self, enabled: bool) -> TelemetryGuardBuilder
pub fn with_interop_max_level_override( self, level_filter: LevelFilter, ) -> TelemetryGuardBuilder
pub fn with_install_log_capture(self, enabled: bool) -> TelemetryGuardBuilder
pub fn with_install_tracing_capture( self, enabled: bool, ) -> TelemetryGuardBuilder
pub fn with_local_sink_max_level( self, level_filter: LevelFilter, ) -> TelemetryGuardBuilder
pub fn with_ctrlc_handling(self) -> TelemetryGuardBuilder
Sourcepub fn with_max_queue_bytes(self, bytes: usize) -> TelemetryGuardBuilder
pub fn with_max_queue_bytes(self, bytes: usize) -> TelemetryGuardBuilder
Soft byte cap for the telemetry upload queue: once reached, new
Traces items (thread and image blocks) are dropped first.
Falls back to MICROMEGAS_TELEMETRY_MAX_QUEUE_BYTES, then
HttpSinkConfig::DEFAULT_MAX_QUEUE_BYTES.
Sourcepub fn with_hard_queue_bytes(self, bytes: usize) -> TelemetryGuardBuilder
pub fn with_hard_queue_bytes(self, bytes: usize) -> TelemetryGuardBuilder
Hard byte cap for the telemetry upload queue: once reached, Logs
and Metrics items are dropped too (Metadata is never
dropped). Falls back to MICROMEGAS_TELEMETRY_HARD_QUEUE_BYTES,
then HttpSinkConfig::DEFAULT_HARD_QUEUE_BYTES.
Sourcepub fn with_max_in_flight_requests(
self,
max_in_flight_requests: usize,
) -> TelemetryGuardBuilder
pub fn with_max_in_flight_requests( self, max_in_flight_requests: usize, ) -> TelemetryGuardBuilder
Maximum number of insert_* HTTP requests in flight at once.
Falls back to MICROMEGAS_TELEMETRY_MAX_IN_FLIGHT_REQUESTS, then
HttpSinkConfig::DEFAULT_MAX_IN_FLIGHT_REQUESTS.
Sourcepub fn with_request_timeout(self, timeout: Duration) -> TelemetryGuardBuilder
pub fn with_request_timeout(self, timeout: Duration) -> TelemetryGuardBuilder
Per-request timeout (covers connect + send + receive for one
attempt). Bounds how long a single retry attempt can hang against
an ingestion service that accepts connections but never responds,
which otherwise would make shutdown block indefinitely (Drop for HttpEventSink joins the worker thread). Falls back to
MICROMEGAS_TELEMETRY_REQUEST_TIMEOUT_SECS, then
HttpSinkConfig::DEFAULT_REQUEST_TIMEOUT.
Sourcepub fn with_retry_by_priority(
self,
retry_by_priority: [Take<ExponentialBackoff>; 4],
) -> TelemetryGuardBuilder
pub fn with_retry_by_priority( self, retry_by_priority: [Take<ExponentialBackoff>; 4], ) -> TelemetryGuardBuilder
Retry strategy per upload priority (indexed by
UploadPriority as usize: Metadata, Logs, Metrics, Traces).
Defaults to HttpSinkConfig::default_retry_by_priority.
pub fn with_request_decorator( self, make_decorator: Box<dyn FnOnce() -> Arc<dyn RequestDecorator> + Send>, ) -> TelemetryGuardBuilder
Sourcepub fn with_auth_from_env(self) -> TelemetryGuardBuilder
pub fn with_auth_from_env(self) -> TelemetryGuardBuilder
Automatically configure authentication from environment variables.
Checks for authentication configuration in this order:
- API key authentication via
MICROMEGAS_INGESTION_API_KEY - OIDC client credentials via
MICROMEGAS_OIDC_TOKEN_ENDPOINT,MICROMEGAS_OIDC_CLIENT_ID, andMICROMEGAS_OIDC_CLIENT_SECRET - Falls back to no authentication (TrivialRequestDecorator)
§Example
use micromegas_telemetry_sink::TelemetryGuardBuilder;
// Set environment variable
unsafe {
std::env::set_var("MICROMEGAS_INGESTION_API_KEY", "secret-key-123");
}
// Builder automatically configures API key authentication
let _guard = TelemetryGuardBuilder::default()
.with_auth_from_env()
.build()
.expect("Failed to build telemetry guard");pub fn with_system_metrics_enabled(self, enabled: bool) -> TelemetryGuardBuilder
pub fn with_default_system_properties_enabled( self, enabled: bool, ) -> TelemetryGuardBuilder
Sourcepub fn with_telemetry_sink_url(self, url: String) -> TelemetryGuardBuilder
pub fn with_telemetry_sink_url(self, url: String) -> TelemetryGuardBuilder
Set the URL of telemetry sink.
If not explicitly set, the URL will be read from the MICROMEGAS_TELEMETRY_URL environment
variable.
Sourcepub fn with_process_property(
self,
key: String,
value: String,
) -> TelemetryGuardBuilder
pub fn with_process_property( self, key: String, value: String, ) -> TelemetryGuardBuilder
Sourcepub fn with_process_properties(
self,
process_properties: HashMap<String, String>,
) -> TelemetryGuardBuilder
pub fn with_process_properties( self, process_properties: HashMap<String, String>, ) -> TelemetryGuardBuilder
pub fn build(self) -> Result<TelemetryGuard, Error>
Trait Implementations§
Source§impl Default for TelemetryGuardBuilder
impl Default for TelemetryGuardBuilder
Source§fn default() -> TelemetryGuardBuilder
fn default() -> TelemetryGuardBuilder
Auto Trait Implementations§
impl Freeze for TelemetryGuardBuilder
impl !RefUnwindSafe for TelemetryGuardBuilder
impl Send for TelemetryGuardBuilder
impl !Sync for TelemetryGuardBuilder
impl Unpin for TelemetryGuardBuilder
impl UnsafeUnpin for TelemetryGuardBuilder
impl !UnwindSafe for TelemetryGuardBuilder
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
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].