You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: solutions/observability/apm/transaction-sampling.md
+8-12Lines changed: 8 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -272,7 +272,7 @@ Trace events are matched to policies in the order specified. Each policy list mu
272
272
Note that from version `9.0.0` APM Server has an unlimited storage limit, but will stop writing when the disk where the database resides reaches 80% usage. Due to how the limit is calculated and enforced, the actual disk space may still grow slightly over this disk usage based limit, or any configured storage limit.
273
273
::::
274
274
275
-
### Example configuration A [_example_configuration_a]
275
+
### Example configuration 1 [_example_configuration_1]
276
276
277
277
This example defines three tail-based sampling polices:
278
278
@@ -290,9 +290,9 @@ This example defines three tail-based sampling polices:
290
290
2. Samples 1% of traces in `production` with the trace name `"GET /not_important_route"`
291
291
3. Default policy to sample all remaining traces at 10%, e.g. traces in a different environment, like `dev`, or traces with any other name
292
292
293
-
### Example configuration B [_example_configuration_b]
293
+
### Example configuration 2 [_example_configuration_2]
294
294
295
-
When a trace originates in Service A and then calls Service B (without errors), the sampling rate is determined by the service where the trace starts:
295
+
When a trace originates in Service A and then calls Service B, the sampling rate is determined by the service where the trace starts:
296
296
297
297
```yaml
298
298
- sample_rate: 0.3
@@ -302,22 +302,22 @@ When a trace originates in Service A and then calls Service B (without errors),
302
302
- sample_rate: 1.0 # Fallback: always set a default
303
303
```
304
304
305
-
- Because Service A is the root of the trace, its policy (0.5) takes precedence over Service B's policy (0.3).
305
+
- Because Service A is the root of the trace, its policy (0.5) is applied while Service B's policy (0.3) is ignored.
306
306
- If instead the trace began in Service B (and then passed to Service A), the policy for Service B would apply.
307
307
308
-
> **Key point**: Tail‑based sampling rules are evaluated at the *trace level* based on where the trace was initiated, not on downstream spans (*service level*).
308
+
> **Key point**: Tail‑based sampling rules are evaluated at the *trace level* based on which service initiated the distributed trace, not the service of the transaction or span.
309
309
310
-
### Example configuration C [_example_configuration_c]
310
+
### Example configuration 3 [_example_configuration_3]
311
311
312
-
When you need to combine service‑specific policies with outcomes (e.g. failures), policy order defines specificity:
312
+
Policies are evaluated **in order** and applies the first one whose match conditions are all met. That means, in practice, order policies from most specific (narrow matchers) to most general, ending with a catch-all (fallback).
313
313
314
314
```yaml
315
315
# Example A: prioritize service origin, then failures
316
316
- sample_rate: 0.2
317
317
service.name: A
318
318
- sample_rate: 0.5
319
319
trace.outcome: failure
320
-
- sample_rate: 1.0 # Default
320
+
- sample_rate: 1.0 # catch-all
321
321
322
322
# Example B: prioritize failures, then a specific service
323
323
- sample_rate: 0.2
@@ -330,10 +330,6 @@ When you need to combine service‑specific policies with outcomes (e.g. failure
330
330
- In Example A, traces from Service A are sampled at 20%, and all other failed traces (regardless of service) are sampled at 50%.
331
331
- In Example B, every failed trace is sampled at 20%, including those originating from Service A.
332
332
333
-
Policies targeting the trace (e.g. `trace.outcome: failure`) apply across all services and should appear before more specific, service‑level rules if you want them to take precedence.
334
-
335
-
> **Key point**: Define failure policy at the top to ensure capturing all failed traces, then define more specific policies for specific services to capture edge cases.
0 commit comments