APM-Sampling konfigurieren
APM Sampling ist eine optionale Konfiguration für APM Java Agent und APM Tracer, um einen Bruchteil der Spans basierend auf der Samplingregel zu überwachen.
APM-Sampling ist eine Root-Span-basierte Samplingimplementierung, die es ermöglicht, dass die gesampelten Traces für alle Traces repräsentativ sein können. Die Samplingentscheidung basiert auf Samplingregeln. Wenn ein Root-Span (ebenso wie ein Trace) gesampelt wird, werden der Root-Span und auch alle untergeordneten Spans gesampelt. Wenn ein Root-Span nicht gesampelt wird, werden auch alle untergeordneten Spans nicht gesampelt.
Verfügbare Regeln
Die folgenden Regeln sind für das APM-Sampling verfügbar:
Regel | Regelname | Regelparameter | Sampleparameter | Beschreibung |
---|---|---|---|---|
Konstant | constant | Ganzzahl
(0 oder höher) |
50 | Konstantes Sampling einmal pro angegebenem Parameterwert.
Beispiel: Wenn der Parameter auf 50 gesetzt ist, wird das erste aller 50 Traces gesampelt. Wenn der Parameter auf 0 gesetzt ist, wird kein Trace gesampelt. Wenn der Parameter auf 1 gesetzt ist, wird jedes Trace gesampelt. |
Probabilistisch | probabilistic | Dezimalzahl zwischen 0 und 1 | 0,2 | Sampling anhand der angegebenen Wahrscheinlichkeit.
Beispiel: Wenn der Parameter auf 0,2 gesetzt ist, wird ein Trace mit einer Wahrscheinlichkeit von 20 % gesampelt. |
Begrenzte Rate | limited-rate | <limit>/<seconds> | 500/60 | Sampling bis zum angegebenen Grenzwert für jedes angegebene Sekundenfenster.
Beispiel: Wenn der Parameter auf 500/60 gesetzt ist, werden die ersten 500 Traces alle 60 Sekunden gesampelt. |
Begrenzte Rate pro Vorgang | per-operation-rate | <limit>/<seconds> | 10/60 | Sampling bis zum angegebenen Grenzwert für jedes angegebene Sekundenfenster pro Vorgangsname.
Beispiel: Wenn der Parameter auf 10/60 gesetzt ist, werden die ersten 10 Traces jedes Vorgangsnamens alle 60 Sekunden gesampelt. |
Vorgangsname | operation | <op1> ,<op2>, ... <opN> | /status_order, /status_ship | Nur Sampling des angegebenen Vorgangsnamens. Mehrere Vorgänge können durch Komma getrennt angegeben werden. |
Vorgangsname in regulärem Ausdruck | operation-regex | <regex> | /status_(order|ship) | Nur Sampling von Spans mit einem Vorgang, der dem regulären Ausdruck entspricht. |
Konfigurationsmethoden
- Eigenschaften einer einzelnen Regel: Eine einfache Möglichkeit, eine Regel für alle Traces zu definieren.
- Konfigurationsdatei: Eine umfassende Methode zur Definition von Samplings einschließlich Verzweigungsregeln und Prioritätsregeln für Vorgänge.
Wenn beide Methoden konfiguriert sind, haben die Eigenschaften einer einzelnen Regel Vorrang vor der Konfigurationsdatei und werden daher verwendet.
Es gibt keine Standardkonfiguration für das Sampling. Wenn keine Eigenschaften einer einzelnen Regel oder keine Konfigurationsdatei angegeben wurden, werden alle vom APM-Agent oder APM-Tracer gestarteten neuen Traces gesampelt.
Eigenschaften einer einzelnen Regel
Mit den Eigenschaften einer einzelnen Regel kann auf einfache Weise eine Samplingregel definiert und auf alle Traces angewendet werden.
Folgende Eigenschaften sind verfügbar:
Eigenschaftstyp und Beschreibung | Unterstützt von | Eigenschaften | Beispiel |
---|---|---|---|
AgentConfig.properties Datei |
APM-Agent |
|
|
Tracer Builder Tracer Builder aktualisieren. |
APM-Tracer |
|
|
Systemeigenschaften Systemeigenschaften aktualisieren. |
APM-Agent und APM-Tracer |
|
|
Umgebungsvariablen Umgebungsvariablen aktualisieren. |
APM-Agent und APM-Tracer |
|
Windows:
Linux:
|
Eigenschaftenpriorität: Wenn mehrere Eigenschaften festgelegt sind, lautet die Prioritätsreihenfolge von hoch nach niedrig wie folgt: Systemeigenschaften, Umgebungsvariablen und AgentConfig.properties.
Konfigurationsdatei
Mit der Konfigurationsdatei können alle Samplingfeatures für alle Services in einer einzigen Datei mit den folgenden Eigenschaften angegeben werden:
- Die Konfigurationsdatei hat das ACML-Format (Untergruppe von YAML) und muss in
sampling.acml
angegeben werden. - Mehrere Samplingkonfigurationen für verschiedene Services können definiert und von einer einzelnen Konfigurationsdatei gemeinsam verwendet werden.
- Mehrere Samplingregeln können verwendet werden. Samplingregeln können in andere Regeln verzweigt werden, um einen Regelbaum zu bilden. Jede Regelauswertung hat 2 Ergebnisse: wahr oder falsch. Wahr bedeutet, dass das Trace gesampelt wird. Falsch bedeutet das Gegenteil. In einer verzweigten Regel wird das Ergebnis des Endblatts für die Samplingentscheidung herangezogen.
- Regeln mit bestimmten Namen können mit ihrer eigenen Samplingregel priorisiert werden.
Für den APM-Tracer gibt es kein Standardkonfigurationsverzeichnis. Die Samplingkonfigurationsdatei muss mit der Tracer-Eigenschaft, der Systemeigenschaft oder Umgebungsvariablen mit der Eigenschaft com.oracle.apm.agent.sampling.file
angegeben werden. Der Eigenschaftswert ist der vollständige Pfad der Samplingkonfigurationsdatei.
Die Eigenschaft com.oracle.apm.agent.sampling.file
gilt nur für den APM-Tracer. Für den APM-Agent ist die Eigenschaft nicht erforderlich. Sie müssen lediglich die Samplingdatei sampling.acml
im Verzeichnis oracle-apm-agent/config/<version>
speichern.
Eigenschaftstyp und Beschreibung | Unterstützt von | Eigenschaft | Beispiel |
---|---|---|---|
Tracer Builder
Tracer Builder aktualisieren. |
APM-Tracer | com.oracle.apm.agent.sampling.file |
|
Systemeigenschaft Systemeigenschaften aktualisieren. |
APM-Agent und APM-Tracer | com.oracle.apm.agent.sampling.file |
-Dcom.oracle.apm.agent.sampling.file=/home/user/apm/config/Sampling.acml |
Umgebungsvariable
Umgebungsvariable aktualisieren. |
APM-Agent und APM-Tracer | com_oracle_apm_agent_sampling_file |
Windows:
Linux:
|
Der Eigenschaftswert com.oracle.apm.agent.sampling.file
ist der vollständige Pfad der Samplingkonfigurationsdatei. Wenn er angegeben wird, lautet der empfohlene Name der Samplingkonfigurationsdatei sampling.acml
. Sie können jedoch einen anderen bevorzugten Namen verwenden.
- Sampling: Dabei werden der
sampling
-Eintrag verwendet und ein Regelbaum für die Traceauswertung definiert. - Vorgangspriorität: Dabei werden der
operation_priority
-Eintrag verwendet und bei Definition das Sampling überschrieben, wenn der Name des Trace-Root-Span-Vorgangs mit dem definierten Namen übereinstimmt. Jeder definierte Vorgangsname hat einen eigenen Entscheidungsregelbaum.
Entscheidung vor Stichprobe
Die Vorababababtastung ist ein Sampling-Feature, mit dem der Sampler eine Entscheidung auf Basis des übergeordneten Bereichs treffen kann, bevor die Samplingregel angewendet wird.
Beispiel:
sampling_config:
-
service:
- s1
- s2
pre_sampling_decision:
ignore: rum
sampling:
rule: constant
param: 1000
true:
rule: per-operation-rate
param: 1000/60
Details zur Syntax pre_sampling_decision
finden Sie unter Sampling.acml-Dateiformat.
Format der Datei sampling.acml
Die Datei sampling.acml
hat folgendes Format:
Sampling.acml | Beschreibung |
---|---|
|
Knoten, der ein Array verschiedener Samplingkonfigurationen darstellt. |
|_ |
Arrayelement der Samplingkonfiguration. |
|____ |
Knoten der Servicenamen, auf den diese Samplingkonfiguration angewendet wird. |
|_______ |
Arrayelement der Servicenamen. |
|____ |
(Optional) Knoten der Entscheidung vor der Stichprobe.
Die Entscheidung wird in der Reihenfolge der Überschreibung ausgewertet → erzwingen → ignorieren. Wenn eine Quelle in mehreren Entscheidungen definiert ist, wird die erste Entscheidung mit der übereinstimmenden Quelle verwendet. Wenn kein übergeordneter Typ mit einer Entscheidung übereinstimmt, folgt der APM-Agent dem übergeordneten Kennzeichen "Abgetastet" für den lokalen Bereich. Wenn kein übergeordneter Bereich vorhanden ist, wird die Samplingregel für den lokalen Bereich ausgewertet. Alle Entscheidungsknoten sind optional. Wenn keine Entscheidung vor der Stichprobe erforderlich ist, darf |
|_______ |
Beispiel für einen lokalen APM-Agent erstreckt sich unabhängig vom übergeordneten Stichproben-Flag der angegebenen Quelle. Wenn der übergeordnete Bereich nicht abgefragt wird, wird ein neues Trace mit dem lokalen Bereich als Root gestartet. Informationen zu |
|_______ |
Erzwingen Sie die erneute Stichprobenprüfung unabhängig vom übergeordneten Stichproben-Flag der angegebenen Quelle. Wenn der übergeordnete Bereich nicht abgefragt wird und die lokale APM-Agent-Spanne als abgetastet ausgewertet wird, wird ein neues Trace gestartet. Wenn der übergeordnete Bereich abgefragt wird und die lokale APM-Agent-Spanne als Musterabgabe ausgewertet wird, wird die lokale APM-Agent-Spanne auf dem Trace des übergeordneten Bereichs fortgesetzt. Informationen zu |
|_______ |
Ignorieren Sie das Sampling der lokalen APM-Agent-Spanne des angegebenen übergeordneten Elements. Informationen zu |
|____ |
Knoten des Basissamplings.
Ist optional, wenn der Knoten |
|_______ |
Samplingregelbaum dieser Konfiguration. |
|____ |
Array der Vorgangsnamen mit Regeln, die die Basissamplingregel überschreiben. |
|_______ |
Name, der mit dem Namen des Trace-Root-Span-Vorgangs abgeglichen wird. |
|_______ |
Bei Übereinstimmung anzuwendende Regel. |
|_______ |
Regulärer Ausdruck, der mit dem Namen des Trace-Root-Span-Vorgangs abgeglichen wird. |
|_______ |
Bei Übereinstimmung anzuwendende Regel. |
-
Wenn der Serviceknoten (
service:
) nicht angegeben ist, wird die Samplingkonfiguration auf alle Services ohne dedizierte Samplingkonfiguration angewendet. Wenn mehrere Konfigurationen denselben Servicenamen haben, wird nur die letzte Konfiguration mit diesem Servicenamen verwendet.Wenn eine Datei Konfigurationen mit diesem Serviceknoten und ohne ihn hat, wird die Konfiguration mit dem Servicenamen priorisiert, der mit dem Servicenamen des APM-Agent oder APM-Tracers übereinstimmt.
-
Wenn die Knoten sampling (
sampling:
) und operation_priority (operation_priority:
) angegeben werden, wird operation_priority priorisiert. Wenn der Name des Trace-Root-Spans mit dem Vorgangsnamen des Knotens operation_priority übereinstimmt, wird er mit der mit dem Vorgangsnamen verknüpften Regel ausgewertet. Wenn der Name des Trace-Root-Spans mit keinen Vorgangsnamen des Knotens operation_priority übereinstimmt, wird der Knoten sampling ausgewertet. -
Wenn kein Sampling-Knoten (
sampling:
) angegeben ist oder keine Regel angegeben ist, wird der Trace nicht in die Stichprobe einbezogen, wenn keine operation_priority-Regel angewendet wird. -
Wenn der Knoten operation_priority (
operation_priority:
) angegeben ist und der Name des Trace-Root-Span-Vorgangs mit einem operation_priority-Vorgangsnamen übereinstimmt, wird die Regel des übereinstimmenden Namens anstelle der Basissamplingregel für die Auswertung verwendet.
Regelknoten
Der Regelknoten aus der Datei sampling.acml
hat das folgende Format:
Knoten <rule> | Beschreibung |
---|---|
Regel: <rule_name> |
Name der Samplingregel. |
Param: <rule_parameter> |
Parameter der Regel. |
true: |
Ergebnis der Regelauswertung "true". Der Wert kann ein anderer <rule>-Wert oder leer sein.
Wenn dieser Knoten nicht angegeben ist oder der Knotenwert leer ist, ist das Auswertungsergebnis "true" auch das endgültige Ergebnis der Samplingauswertung, und das Trace wird gesampelt. |
|___ <rule> |
Verzweigungsknoten <rule> bei Auswertungsergebnis "true". |
false: |
Ergebnis der Regelauswertung "false". Der Wert kann ein anderer <rule>-Wert oder leer sein.
Wenn dieser Knoten nicht angegeben ist oder der Knotenwert leer ist, ist das Auswertungsergebnis "false" auch das endgültige Auswertungsergebnis, und das Trace wird nicht gesampelt. |
|___ <rule> |
Verzweigungsknoten <rule> bei Auswertungsergebnis "false". |
Bei Änderungen an der Samplingkonfigurationsdatei sampling.acml
muss der APM-Agent nicht neu gestartet werden.
Quellwert
Wenn Sie pre_sampling_decision
verwenden, können Sie die Quellinformationen angeben.
Der Wert <source>
aus der Datei Sampling.acml
kann leer sein oder mehrere Quellen enthalten. Die unterstützten Werte finden Sie in der folgenden Tabelle.
Quellenname | Beschreibung |
---|---|
API | APM-Agent-Quelle. |
Rum | RUM-(Real User Monitoring-)Quelle.
Er umfasst nicht den APM-Agent und immer den übergeordneten Bereich des Java-Agents. |
synthetisch | Synthetische Quelle.
Standardmäßig werden alle synthetischen Anforderungen abgetastet. |
* | Beliebige Quelle. |
? | Kein Quelltyp in <source> definiert. |
Null | Alle übergeordneten Elemente ohne identifizierbare Quelle. |
Beispiele für die Datei sampling.acml
- Regel, die auf alle Services angewendet wird
sampling_config: - sampling: # Every trace has 2% chance to be sampled. rule: probabilistic param: 0.02
- Probabilistisch mit Mindestanzahl
sampling_config: - sampling: # For every 60 seconds duration, 5 root spans of each operation name are sampled, # followed by 10% chance of sampling. rule: per-operation-rate param: 5/60 true: false: rule: probabilistic param: 0.1
- Nur angegebene Vorgänge sampeln
sampling_config: - service: - order_dept - shipping_dept operation_priority: # For /order operation trace root span, 1 of every 10 traces is sampled. - name: "/order" rule: constant param: 10 # For /ship operation trace root span, 1 of every 50 traces is sampled. - name: "/ship" rule: constant param: 50 # For /status_order or /status_ship operations, there is a 50% sampling chance. - regex: "/status_(order|ship)" rule: probabilistic param: 0.5
- Beispiel für ein weiteres Sampling
sampling_config: - # With service node, this config is only applied to service s1 and s2. service: - s1 - s2 sampling: # 5 root span of any operation name are sampled every 60 seconds. Starting from # the 6th span of an operation name, there is a 20% chance the span is sampled. rule: per-operation-rate param: 5/60 false: rule: probabilistic param: 0.2 operation_priority: # For /order operation, 1 of every 10 spans is sampled. - name: "/order" rule: constant param: 10 # For /ship operation, first 3 are sampled per 60 seconds and then 10% chance after - name: "/ship" rule: limited-rate param: 3/60 false: rule: probabilistic param: 0.01 - # With service node, this config is only applied to service s3 and s4. service: - s3 - s4 sampling: # There is a 5% chance any trace is sampled. rule: probabilistic param: 0.05 - # Without service node, this config is applied to any service except s1, s2, s3 and s4. sampling: # There is a 10% chance any trace is sampled. rule: probabilistic param: 0.1
Sampling deaktivieren
Das Sampling wird implizit aktiviert, wenn entweder Eigenschaften einer einzelnen Regel oder die Konfigurationsdatei angegeben werden. Es kann mit der folgenden Eigenschaft explizit deaktiviert werden:
Eigenschaftstyp | Unterstützt von | Eigenschaft | Beispiel |
---|---|---|---|
AgentConfig.properties | APM-Agent | com.oracle.apm.agent.sampling.enabled |
com.oracle.apm.agent.sampling.enabled=false |
Tracer Builder | APM-Tracer | com.oracle.apm.agent.sampling.enabled |
|
Systemeigenschaft | APM-Agent und APM-Tracer | com.oracle.apm.agent.sampling.enabled |
-Dcom.oracle.apm.agent.sampling.enabled=false |
Umgebungsvariable | APM-Agent und APM-Tracer | com_oracle_apm_agent_sampling_enabled |
Windows:
Linux:
|
Span-Tag
Wenn Samplingregeleigenschaften oder die Konfigurationsdatei angeben sind und das Sampling nicht deaktiviert ist, hat jeder gesampelte Trace-Root-Span ein Tag SamplingEvaluation
des Auswertungsablaufs.
rule: per-operation-rate
param: 5/60
false:
rule: probabilistic
param: 0.2
SamplingEvaluation-Tagwert
Nachfolgend finden Sie den Wert des Tags SamplingEvaluation
des gesampelten Root-Spans:
SamplingEvaluation -Tagwert
|
Beschreibung |
---|---|
per-operation-rate(5/60):true | Die ersten 5 gesampelten Traces alle 60 Sekunden. |
per-operation-rate(5/60):false->probabilistic(0.2):true | Die 20 % Traces, die nach 5 gesampelten Traces alle 60 Sekunden gesampelt wurden. |