Configura campionatura APM
Il campionamento APM è una configurazione facoltativa per APM Java Agent e APM Tracer per monitorare una frazione degli intervalli in base alla regola di campionamento.
APM Sampling è un'implementazione di campionamento basata sull'intervallo di radici che consente alle tracce campionate di ottenere una rappresentazione di tutte le tracce. La decisione di campionamento si basa su regole di campionamento. Quando si decide di campionare un intervallo radice (come la traccia), vengono campionati anche l'intervallo radice e tutti gli intervalli figlio. Quando non viene campionato un intervallo radice, non vengono campionati tutti gli intervalli figlio.
Regole disponibili
Per il campionamento APM sono disponibili le regole seguenti:
Regola | Nome regola | Parametro regola | Parametro di campionamento | Descrizione |
---|---|---|---|---|
Costante | costante | Intero
(0 o superiore) |
50 | Campione costante una volta per il valore di parametro specificato.
Ad esempio, se il parametro è impostato su 50, viene campionata la prima delle 50 tracce. Se il parametro è impostato su 0, non viene campionata alcuna traccia. Se il parametro è impostato su 1, viene campionata ogni traccia. |
Probabile | probabilistico | numero decimale compreso tra 0 e 1 | 0.2 | Campione deciso sulla probabilità specificata.
Ad esempio, se il parametro è impostato su 0.2, è possibile che venga campionata una traccia del 20%. |
Tariffa limitata | tasso limitato | <limit>/<seconds> | 500/60 | Campione fino al limite specificato per ogni finestra dei secondi specificata.
Ad esempio, se il parametro è impostato su 500/60, vengono campionate le prime 500 tracce ogni 60 secondi. |
Tasso limitato per operazione | tasso per operazione | <limit>/<seconds> | 10/60 | Esempio fino al limite specificato per ogni finestra di secondi specificata per nome operazione.
Ad esempio, se il parametro è impostato su 10/60, vengono campionate le prime 10 tracce di ogni nome operazione ogni 60 secondi. |
Nome operazione | operazione | <op1>,<op2>, ...<opN> | /status_order,/status_ship | Esempio solo del nome dell'operazione specificato. È possibile specificare più operazioni delimitate da virgole. |
Nome operazione in espressione regolare | espressione regolare operazione | <regex> | /status_(ordine|spedizione) | Il campione si estende solo con un'operazione che corrisponde all'espressione regolare. |
Metodi di configurazione
- Proprietà regola singola: un modo semplice per definire una regola applicabile a tutti i trace.
- File di configurazione: un modo completo per definire i campionamenti, incluse le regole di diramazione e le regole di priorità delle operazioni.
Se entrambi i metodi sono configurati, le proprietà delle singole regole hanno la precedenza sul file di configurazione, pertanto il metodo delle proprietà delle singole regole è quello utilizzato.
Nessuna configurazione di campionamento predefinita. Se non sono state specificate singole proprietà di regola o nessun file di configurazione, vengono campionati tutti i nuovi trace avviati dall'agente APM o da APM Tracer.
Proprietà regola singola
Le proprietà di una singola regola consentono di definire e applicare una sola regola di campionamento a tutti i trace in modo semplice.
Sono disponibili le proprietà riportate di seguito.
Tipo e descrizione proprietà | Supportato da | Proprietà | Esempio |
---|---|---|---|
AgentConfig.properties Aggiornare il file |
Agente APM |
|
|
Costruttore Tracer Aggiornare il Tracer Builder. |
Tracer APM |
|
|
Proprietà di sistema Aggiornare le proprietà di sistema. |
Agente APM e tracciatore APM |
|
|
Variabili di ambiente Aggiornare le variabili di ambiente. |
Agente APM e tracciatore APM |
|
Per Windows:
Per Linux:
|
Priorità proprietà: se sono impostate più proprietà, l'ordine di precedenza dal più alto al più basso è il seguente: Proprietà di sistema, Variabili di ambiente e AgentConfig.properties.
File di configurazione
Il file di configurazione consente di specificare tutte le funzioni di campionamento per tutti i servizi in un unico file con le seguenti caratteristiche:
- Il file di configurazione è in formato ACML (sottoinsieme di YAML) da specificare in
Sampling.acml
. - È possibile definire e condividere più configurazioni di campionamento per servizi diversi da un singolo file di configurazione.
- La regola di campionamento non è limitata a una. Le regole di esempio possono essere ramificate in altre regole per formare una struttura di regole. Ogni valutazione delle regole ha 2 risultati: true o false. True significa che la traccia viene campionata, altrimenti false. In una regola ramificata, il risultato terminale foglia viene utilizzato per la decisione di campionamento.
- È possibile assegnare priorità alle regole con nomi specifici con una regola di campionamento specifica.
Per APM Tracer, non esiste una posizione di configurazione predefinita. Il file di configurazione del campionamento deve essere specificato con la proprietà Tracer, la proprietà di sistema o la variabile di ambiente utilizzando la proprietà com.oracle.apm.agent.sampling.file
. Il valore della proprietà corrisponde al percorso completo del file di configurazione del campionamento.
La proprietà com.oracle.apm.agent.sampling.file
è applicabile solo ad APM Tracer. Per l'agente APM, la proprietà non è necessaria. È necessario inserire il file di campionamento Sampling.acml
solo nella directory oracle-apm-agent/config/<version>
.
Tipo e descrizione proprietà | Supportato da | Proprietà | Esempio |
---|---|---|---|
Costruttore Tracer
Aggiorna il Tracer Builder. |
Tracer APM | com.oracle.apm.agent.sampling.file |
|
Proprietà di sistema Aggiornare le proprietà di sistema. |
Agente APM e tracciatore APM | com.oracle.apm.agent.sampling.file |
-Dcom.oracle.apm.agent.sampling.file=/home/user/apm/config/Sampling.acml |
Variabile di ambiente
Aggiornare la variabile d'ambiente. |
Agente APM e tracciatore APM | com_oracle_apm_agent_sampling_file |
Per Windows:
Per Linux:
|
Il valore della proprietà com.oracle.apm.agent.sampling.file
corrisponde al percorso completo del file di configurazione del campionamento. Quando viene specificato, il nome del file di configurazione di campionamento consigliato è Sampling.acml
, ma è possibile utilizzare qualsiasi altro nome preferito.
- Campionatura: utilizza la voce
sampling
e definisce una struttura di regole per la valutazione del trace. - Priorità operazione: utilizza la voce
operation_priority
e, quando viene definita, sostituisce la campionatura se il nome dell'operazione dell'intervallo radice di trace corrisponde al nome definito. Ogni nome operazione definito ha una propria struttura di regole di decisione.
Decisione pre-campionamento
La decisione di pre-campionamento è una funzione di campionamento che consente al campionatore di prendere una decisione basata sull'intervallo padre prima di applicare la regola di campionamento.
Ad esempio:
sampling_config:
-
service:
- s1
- s2
pre_sampling_decision:
ignore: rum
sampling:
rule: constant
param: 1000
true:
rule: per-operation-rate
param: 1000/60
Per i dettagli sulla sintassi pre_sampling_decision
, vedere Formato file Sampling.acml.
Formato file Sampling.acml
Di seguito è riportato il formato file Sampling.acml
:
Sampling.acml | Descrizione |
---|---|
|
Nodo che rappresenta un array di diverse configurazioni di campionamento. |
|_ |
Elemento array della configurazione del campionamento. |
|____ |
Nodo di nomi di servizio a cui è applicata questa configurazione di campionamento. |
|_______ |
Elemento array nome servizio. |
|____ |
(Facoltativo) Nodo della decisione di pre-campionamento.
La decisione viene valutata nell'ordine di override → far rispettare → ignorare. Nel caso in cui un'origine sia definita in più di una decisione, viene utilizzata la prima decisione con l'origine corrispondente. Se nessun tipo padre corrisponde a una decisione, l'agente APM segue il flag campionato intervallo padre per l'intervallo locale. Se non esiste alcun intervallo padre, la regola di campionamento viene valutata per l'intervallo locale. Tutti i nodi decisionali sono facoltativi. Se non è necessaria alcuna decisione di precampionamento, non è necessario definire |
|_______ |
Esempio di intervallo agente APM locale indipendentemente dal flag campionato padre dell'origine specificata. Se l'intervallo padre non viene campionato, viene avviata una nuova traccia con l'intervallo locale come radice. Per i valori |
|_______ |
Forza la nuova valutazione del campionamento indipendentemente dal flag padre campionato dell'origine specificata. Se l'intervallo padre non viene campionato e si valuta la campionatura dell'intervallo agente APM locale, viene avviato un nuovo trace. Se viene campionato l'intervallo padre e viene valutato l'intervallo agente APM locale per la campionatura, l'intervallo agente APM locale continua sulla traccia dell'intervallo padre. Per i valori |
|_______ |
Ignora campionamento dell'intervallo agente APM locale del padre specificato. Per i valori |
|____ |
Nodo di campionamento di base.
È facoltativo se si utilizza il nodo |
|_______ |
Albero delle regole di campionamento di questa configurazione. |
|____ |
Array di nomi di operazione con regole che sostituiscono la regola di campionamento di base. |
|_______ |
Nome corrispondente al nome dell'operazione di intervallo radice traccia. |
|_______ |
Regola da applicare se corrispondente. |
|_______ |
Espressione regolare per la corrispondenza con il nome dell'operazione di intervallo radice traccia. |
|_______ |
Regola da applicare se corrispondente. |
-
Se il nodo del servizio (
service:
) non viene specificato, la configurazione di campionamento viene applicata a tutti i servizi senza una configurazione di campionamento dedicata. Quando più configurazioni hanno lo stesso nome di servizio, viene utilizzata solo l'ultima configurazione con tale nome di servizio.Se un file dispone di configurazioni con e senza questo nodo del servizio, viene assegnata la priorità alla configurazione con il nome del servizio corrispondente all'agente APM o al nome del servizio APM Tracer.
-
Quando i nodi di campionamento (
sampling:
) e operation_priority (operation_priority:
) sono entrambi specificati, viene assegnata la priorità a operation_priority. Se il nome dell'intervallo radice traccia corrisponde al nome dell'operazione dal nodo operation_priority, viene valutato con la regola associata al nome dell'operazione. Se il nome dell'intervallo radice traccia non corrisponde ad alcun nome operazione dal nodo operation_priority, viene valutato il nodo di campionamento. -
Se il nodo di campionamento (
sampling:
) non viene specificato o non viene specificata alcuna regola, il trace non viene campionato se non è applicabile alcuna regola operation_priority. -
Se si specifica il nodo operation_priority (
operation_priority:
), se il nome dell'operazione dell'intervallo radice di trace corrisponde a qualsiasi nome di operazione operation_priority, per la valutazione viene utilizzata la regola del nome corrispondente anziché la regola di campionamento di base.
Nodo regola
Il nodo regola del file Sampling.acml
ha il formato seguente:
<rule> nodo | Descrizione |
---|---|
rule: <rule_name> |
Nome della regola di campionamento. |
param: <rule_parameter> |
Parametro della regola. |
true: |
Vero risultato della valutazione delle regole. Il valore può essere un'altra <rule> o vuoto.
Se questo nodo non viene specificato o il valore del nodo è vuoto, la valutazione vera sarà anche il risultato finale della valutazione del campionamento e la traccia verrà campionata. |
|___ <rule> |
Nodo <rule> diramazione nella valutazione vera e propria. |
false: |
Risultato falso della valutazione delle regole. Il valore può essere un'altra <rule> o vuoto.
Se questo nodo non viene specificato o il valore del nodo è vuoto, anche la valutazione falsa rappresenta il risultato finale della valutazione e la traccia non viene campionata. |
|___ <rule> |
Ramo <rule> nodo su valutazione falsa. |
Le modifiche al file di configurazione del campionamento Sampling.acml
non richiedono il riavvio dell'agente APM.
Valore di origine
Se si utilizza pre_sampling_decision
, è possibile fornire le informazioni sull'origine.
Il valore <source>
del file Sampling.acml
può essere vuoto o contenere più origini. Per i valori supportati, vedere la tabella riportata di seguito.
Nome origine | Descrizione |
---|---|
apm | Origine agente APM. |
rum | Origine RUM (Real User Monitoring).
Non si tratta dell'intervallo agente APM e sempre dell'intervallo padre dell'agente Java. |
sintetico | Fonte sintetica.
Per impostazione predefinita, vengono campionate tutte le richieste sintetiche. |
* | Qualsiasi origine. |
? | Qualsiasi tipo di origine non definito in <source>. |
nullo | Qualsiasi padre senza origine identificabile. |
Esempi di file Sampling.acml
- Regola applicabile a tutti i servizi
sampling_config: - sampling: # Every trace has 2% chance to be sampled. rule: probabilistic param: 0.02
- Probabile con conteggio minimo
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
- Operazioni specificate solo campione
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
- Altro esempio
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
Disabilita campionamento
Il campionamento viene abilitato in modo implicito quando vengono specificate proprietà di una singola regola o file di configurazione. È quindi possibile disabilitarlo in modo esplicito utilizzando la proprietà seguente:
Tipo di proprietà | Supportato da | Proprietà | Esempio |
---|---|---|---|
AgentConfig.properties | Agente APM | com.oracle.apm.agent.sampling.enabled |
com.oracle.apm.agent.sampling.enabled=false |
Costruttore Tracer | Tracer APM | com.oracle.apm.agent.sampling.enabled |
|
Proprietà di sistema | Agente APM e tracciatore APM | com.oracle.apm.agent.sampling.enabled |
-Dcom.oracle.apm.agent.sampling.enabled=false |
Variabile di ambiente | Agente APM e tracciatore APM | com_oracle_apm_agent_sampling_enabled |
Per Windows:
Per Linux:
|
Tag intervallo
Se vengono specificate le proprietà della regola di campionamento o il file di configurazione e la campionatura non è disabilitata, ogni intervallo radice di trace campionato ha un tag SamplingEvaluation
del flusso di valutazione.
rule: per-operation-rate
param: 5/60
false:
rule: probabilistic
param: 0.2
SamplingEvaluation Valore tag
Vedere di seguito il valore del tag SamplingEvaluation
dell'intervallo root campionato:
SamplingEvaluation Valore tag
|
descrizione; |
---|---|
per operazione-tasso (5/60):true | Le prime 5 tracce campionate ogni 60 secondi. |
tasso per operazione (5/60): falso->probabilistico (0.2): vero | Il 20% delle tracce campionate dopo 5 tracce campionate ogni 60 secondi. |