Skip to main content

SamplerConfig

Struct SamplerConfig 

Source
pub struct SamplerConfig { /* private fields */ }
Expand description

Settings supplied by one APM_SAMPLING configuration.

The payload and each settings value in it must be a JSON object or null, as the Datadog Agent’s JSON decoder requires; serde’s derived visitors would also accept an array of field values, such as [].

Call resolve to combine the configuration with local settings for one environment.

{
  "all_envs": { "priority_sampler_target_TPS": 10, "errors_sampler_target_TPS": 5, "rare_sampler_enabled": true },
  "by_env": [{ "env": "prod", "config": { "rare_sampler_enabled": false } }]
}

Missing and null fields fall back through all_envs to local settings; 0 and false are explicit values. A payload that sets nothing, such as {} or null, is still an assigned configuration (RemoteSampling::Remote) and resolves entirely to local settings, not to previous remote values. This differs from an empty assignment, which leaves the last accepted configuration in place.

The Datadog Agent sends the *_TPS field names. Lowercase *_tps names also work; unknown fields are ignored.

Implementations§

Source§

impl SamplerConfig

Source

pub fn resolve( &self, env: &str, static_settings: &SamplerSettings, ) -> SamplerSettings

Combines remote overrides with local sampling settings for the Agent’s environment.

The result contains target traces per second for priority and error sampling, plus an on/off switch for rare sampling. Priority sampling honors existing decisions to keep or drop traces and uses its target to compute sampling rates. Error sampling can keep error traces that would otherwise be dropped; rare sampling keeps examples of rarely seen operations.

env identifies the Agent’s deployment environment, such as prod, not an individual trace’s environment. The caller supplies the Agent’s resolved, normalized environment. This method neither derives that environment nor normalizes names: a remote name of Prod does not match prod.

This method selects the last by_env entry whose name exactly matches env. Earlier matching entries contribute nothing, even if the selected entry leaves fields unset. For each setting independently, it uses:

  1. The value in the selected entry’s config, if set.
  2. Otherwise, the value in all_envs, the remote settings shared by all environments.
  3. Otherwise, the value in static_settings, the original local settings, not previous remote values.

Missing or null fields are unset; 0 and false are explicit overrides. If no entry matches env, each setting falls back to all_envs, then static_settings. Numeric targets pass through without validation or clamping.

For example, suppose the selected prod entry sets only the priority target to 20 and all_envs sets only the error target to 5. The result uses 20 for priority sampling, 5 for error sampling, and the local setting for rare sampling.

Trait Implementations§

Source§

impl Clone for SamplerConfig

Source§

fn clone(&self) -> SamplerConfig

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SamplerConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for SamplerConfig

Source§

fn default() -> SamplerConfig

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

impl<'de> Deserialize<'de> for SamplerConfig

Source§

fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error>

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for SamplerConfig

Source§

fn eq(&self, other: &SamplerConfig) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for SamplerConfig

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> Instrument for T

Source§

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

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

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> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

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

impl<L> LayerExt<L> for L

Source§

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.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

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

Initializes a with the given initializer. Read more
Source§

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

Dereferences the given pointer. Read more
Source§

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

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

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

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> Track for T

Source§

fn track_resources(self, token: ResourceGroupToken) -> Tracked<Self>

Instruments this type by attaching the given resource group token, returning a Tracked wrapper. Read more
Source§

fn in_current_resource_group(self) -> Tracked<Self>

Instruments this type by attaching the current resource group, returning a Tracked wrapper. Read more
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.
Source§

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

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<T> CloneAny for T
where T: Any + Clone,

Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,