Skip to main content

TelemetryGuardBuilder

Struct TelemetryGuardBuilder 

Source
pub struct TelemetryGuardBuilder { /* private fields */ }

Implementations§

Source§

impl TelemetryGuardBuilder

Source

pub fn add_sink<Sink>( self, max_level: LevelFilter, sink: Sink, ) -> TelemetryGuardBuilder
where Sink: EventSink + 'static,

Source

pub fn with_max_level_override( self, level_filter: LevelFilter, ) -> TelemetryGuardBuilder

Programmatic override

Source

pub fn with_local_sink_enabled(self, enabled: bool) -> TelemetryGuardBuilder

Source

pub fn with_interop_max_level_override( self, level_filter: LevelFilter, ) -> TelemetryGuardBuilder

Source

pub fn with_install_log_capture(self, enabled: bool) -> TelemetryGuardBuilder

Source

pub fn with_install_tracing_capture( self, enabled: bool, ) -> TelemetryGuardBuilder

Source

pub fn with_local_sink_max_level( self, level_filter: LevelFilter, ) -> TelemetryGuardBuilder

Source

pub fn with_ctrlc_handling(self) -> TelemetryGuardBuilder

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

pub fn with_request_decorator( self, make_decorator: Box<dyn FnOnce() -> Arc<dyn RequestDecorator> + Send>, ) -> TelemetryGuardBuilder

Source

pub fn with_auth_from_env(self) -> TelemetryGuardBuilder

Automatically configure authentication from environment variables.

Checks for authentication configuration in this order:

  1. API key authentication via MICROMEGAS_INGESTION_API_KEY
  2. OIDC client credentials via MICROMEGAS_OIDC_TOKEN_ENDPOINT, MICROMEGAS_OIDC_CLIENT_ID, and MICROMEGAS_OIDC_CLIENT_SECRET
  3. 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");
Source

pub fn with_system_metrics_enabled(self, enabled: bool) -> TelemetryGuardBuilder

Source

pub fn with_default_system_properties_enabled( self, enabled: bool, ) -> TelemetryGuardBuilder

Source

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.

Source

pub fn with_process_property( self, key: String, value: String, ) -> TelemetryGuardBuilder

Add a single property to the process info.

§Warning

This will override any existing properties.

Source

pub fn with_process_properties( self, process_properties: HashMap<String, String>, ) -> TelemetryGuardBuilder

Add multiple properties to the process info.

§Warning

This will override any existing properties.

Source

pub fn build(self) -> Result<TelemetryGuard, Error>

Trait Implementations§

Source§

impl Default for TelemetryGuardBuilder

Source§

fn default() -> TelemetryGuardBuilder

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FutureExt for T

§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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

§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
§

impl<L> LayerExt<L> for L

§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in [Layered].
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<T> Scope for T

§

fn with<F, R>(self, f: F) -> R
where Self: Sized, F: FnOnce(Self) -> R,

Scoped with ownership.
§

fn with_ref<F, R>(&self, f: F) -> R
where F: FnOnce(&Self) -> R,

Scoped with reference.
§

fn with_mut<F, R>(&mut self, f: F) -> R
where F: FnOnce(&mut Self) -> R,

Scoped with mutable reference.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,