Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Configurazione del campionamento adattivo
La mancanza di tracce critiche durante i picchi di anomalia può rendere difficile l'analisi della causa principale. Tuttavia, mantenere frequenze di campionamento elevate è costoso. Il campionamento adattivo a raggi X offre una visibilità completa sulle anomalie e controlla i costi durante le normali operazioni. Con il campionamento adattivo, si imposta una frequenza di campionamento massima e X-Ray si regola automaticamente entro tale limite. X-Ray calcola l'incremento minimo necessario per acquisire le tracce di errore. Se la frequenza di base acquisisce una quantità sufficiente di dati, non si verifica alcun aumento. Paghi solo per il campionamento aggiuntivo quando necessario.
Vantaggi dell'utilizzo del campionamento adattivo:
Visibilità completa degli incidenti: ottieni tracce complete durante gli incidenti senza intervento manuale. X-Ray regola automaticamente le frequenze di campionamento per catturare le tracce di errore, quindi torna alle frequenze normali.
Visibilità della causa principale: individua sempre l'origine dei problemi. X-Ray acquisisce dati di errore critici anche quando non viene attivato il campionamento completo delle tracce.
Ottimizzazione dei costi: brevi incrementi di campionamento (fino a 1 minuto) e periodi di raffreddamento automatici impediscono il sovracampionamento. Paghi solo per i dati necessari per diagnosticare i problemi.
Argomenti
Supportati SDKs e piattaforme
SDK supportato: il campionamento adattivo richiede l'ultima versione di ADOT SDK.
Linguaggio supportato: Java (versione v2.11.5 o successiva)
La tua applicazione deve essere dotata dell'SDK ADOT supportato ed eseguita insieme ad Amazon CloudWatch Agent o Collector. OpenTelemetry
Ad esempio, Amazon EC2, Amazon ECS e Amazon EKS sono piattaforme comuni in cui AWS Application Signals fornisce indicazioni per abilitare l'SDK ADOT e Amazon Agent. CloudWatch
Scegli il tuo approccio di campionamento adattivo
Il campionamento adattivo supporta due approcci, Sampling Boost e Anomaly Span Capture. Questi possono essere applicati indipendentemente o combinati tra loro.
Incremento del campionamento
Adaptive Sampling Boost si basa su regole di campionamento e funziona con il modello di campionamento basato su testine X-Ray esistente. Il campionamento basato sulle teste significa che le decisioni relative al campionamento vengono prese a livello di root service e il flag di campionamento viene trasmesso a valle a tutti i servizi della catena di chiamate.
-
Potenziamento basato su regole: il potenziamento è sempre legato a una regola di campionamento a raggi X specifica. Ogni regola può definire la propria frequenza di incremento massima e il proprio comportamento di raffreddamento.
-
Campionamento basato sulla testa: le decisioni relative al campionamento vengono prese presso il servizio root e il flag di campionamento viene passato a valle a tutti i servizi della catena di chiamate.
-
Basato sulle anomalie: X-Ray si affida all'SDK per riportare le statistiche sulle anomalie. Quando X-Ray rileva anomalie come errori o latenza elevata, utilizza queste statistiche per calcolare una frequenza di incremento appropriata (fino al massimo configurato).
Segnalazione delle anomalie
Ogni servizio applicativo nella catena di chiamate può emettere statistiche sulle anomalie tramite l'SDK richiesto:
-
Servizio root: deve essere eseguito su un SDK e una piattaforma supportati per abilitare il sampling boost. Se il servizio root non è supportato, non si verificherà alcun boost.
-
Servizi downstream: i servizi downstream segnalano solo le anomalie e non possono prendere decisioni di campionamento. Quando un servizio downstream esegue un SDK supportato, le anomalie rilevate possono innescare un aumento del campionamento. Quando un servizio downstream non è supportato (ad esempio, se si esegue un SDK precedente), le anomalie su quel servizio non generano alcun incremento. Questi servizi possono comunque propagare il contesto a valle se seguono la propagazione del contesto standard (come W3C trace context e baggage). Ciò garantisce che i servizi supportati SDKs in ulteriori servizi a valle possano segnalare anomalie che generano un aumento.
Aumenta la tempistica e la portata
-
Ritardo di attivazione: è possibile aspettarsi che un aumento del campionamento inizi già 10 secondi dopo che X-Ray rileva un'anomalia.
-
Periodo di potenziamento: dopo che X-Ray ha attivato un boost, dura fino a 1 minuto prima di tornare alla frequenza di campionamento di base.
-
Migliora il raffreddamento: dopo che si è verificato un potenziamento, X-Ray non attiverà un altro potenziamento per la stessa regola fino al termine della finestra di raffreddamento.
Ad esempio, se si imposta su
cooldown
10 minuti, una volta terminato un boost, non è possibile attivare un nuovo boost fino alla finestra di 10 minuti successiva.Caso speciale: se si imposta su
cooldown
1 minuto e poiché un boost stesso può durare fino a 1 minuto, i potenziamenti possono essere attivati in modo efficace e continuo se l'anomalia persiste.
Nota
Usa piattaforme supportate SDKs e per il tuo root service. Sampling boost funziona solo con piattaforme SDKs supportate. Sebbene sampling boost abbia un'alta probabilità di catturare tracce di anomalia, potrebbe non catturare tutte le tracce di anomalia.
Aumenta la visibilità
Quando una regola di campionamento è configurata con Adaptive Sampling Boost, X-Ray emette automaticamente metriche vended che consentono di monitorare l'attività di boost.
-
Nome della metrica:
SamplingRate
-
Dimensione —
RuleName
(impostata sul nome effettivo della regola)
Ogni regola SamplingRateBoost
abilitata pubblicherà la frequenza di campionamento effettiva, inclusa la frequenza di base e gli eventuali aumenti temporanei. Ciò consente di:
-
Tieni traccia di quando vengono attivati i potenziamenti
-
Monitora la frequenza di campionamento effettiva per ogni regola
-
Correla gli incrementi con le anomalie delle applicazioni (ad esempio picchi di errore o eventi di latenza)
Puoi visualizzare questi parametri in Amazon CloudWatch Metrics, nello spazio dei nomi AWS/X-Ray. Il valore della metrica è un numero a virgola mobile compreso tra 0 e 1, che rappresenta la frequenza di campionamento effettiva.
Configurare l'incremento del campionamento utilizzando le regole di campionamento a raggi X
È possibile abilitare il campionamento adattivo direttamente nelle regole di campionamento a raggi X esistenti aggiungendo un nuovo campo. SamplingRateBoost
Per ulteriori informazioni, vedere Personalizzazione delle regole di campionamento. Ciò fornisce un modo centralizzato per abilitare il campionamento adattivo senza modificare il codice dell'applicazione o applicare la distribuzione dell'applicazione. Quando abiliti il campionamento adattivo, X-Ray aumenta automaticamente il campionamento in caso di anomalie come picchi di errore o valori anomali di latenza, mantenendo al contempo le frequenze di campionamento entro il massimo configurato. SamplingRateBoost
può essere applicato a qualsiasi regola di campionamento personalizzata tranne la regola di campionamento. Default
Il SamplingRateBoost
campo definisce il limite superiore e il comportamento per il campionamento basato sulle anomalie.
"SamplingRateBoost": { "MaxRate": 0.25, "CooldownWindowMinutes": 10 }
MaxRate
Definisce la frequenza di campionamento massima che X-Ray applicherà quando rileva anomalie. L'intervallo di valori è pari a. 0.0
1.0
Ad esempio, "MaxRate": 0.25
consente di aumentare il campionamento fino al 25% delle richieste durante una finestra di anomalia. X-Ray determina la frequenza appropriata tra il valore di base e il valore massimo, a seconda dell'attività dell'anomalia.
La finestra temporale CooldownWindowMinutes
definisce (in minuti) in cui è possibile attivare un solo aumento della frequenza di campionamento. Dopo che si è verificato un aumento, non sono consentiti ulteriori incrementi fino alla finestra successiva. Il tipo di valore è intero (minuti).
Regola di esempio con campionamento adattivo
{ "RuleName": "MyAdaptiveRule", "Priority": 1, "ReservoirSize": 1, "FixedRate": 0.05, "ServiceName": "*", "ServiceType": "*", "Host": "*", "HTTPMethod": "*", "URLPath": "*", "SamplingRateBoost": { "MaxRate": 0.25, "CooldownWindowMinutes": 10 } }
In questo esempio, il campionamento di base è del 5% (). FixedRate: 0.05
Durante le anomalie, X-Ray può aumentare il campionamento fino al 25% (). MaxRate: 0.25
Potenzia solo una volta ogni 10 minuti.
Configurazione delle condizioni di anomalia
Quando non viene fornita alcuna configurazione della condizione di anomalia, l'ADOT SDK utilizza i codici di errore HTTP 5xx come condizione di anomalia predefinita per attivare l'incremento del campionamento.
È inoltre possibile ottimizzare le condizioni di anomalia localmente nell'SDK ADOT supportato utilizzando variabili di ambiente. Per ulteriori informazioni, consulta Configurazione SDK locale.
L'anomalia si estende all'acquisizione
L'acquisizione dell'intervallo di anomalie assicura che gli intervalli critici che rappresentano le anomalie vengano sempre registrati, anche se non viene campionata la traccia completa. Questa funzionalità completa il campionamento potenziato concentrandosi sull'acquisizione dell'anomalia stessa, piuttosto che sull'aumento del campionamento per le tracce future.
Quando l'SDK ADOT rileva un'anomalia, emette immediatamente tale intervallo, indipendentemente dalla decisione di campionamento. Poiché l'SDK emette solo intervalli relativi all'anomalia, queste tracce sono tracce parziali, non transazioni complete. end-to-end
Una volta che l'SDK ADOT rileva un intervallo di anomalia, tenta di emettere il maggior numero possibile di intervalli dalla stessa traccia. Tutti gli intervalli emessi con questa funzione sono contrassegnati con l'attributo,. aws.trace.flag.sampled = 0
Ciò consente di distinguere facilmente le tracce parziali (acquisizione delle anomalie) dalle tracce complete (campionamento normale) nella ricerca e nell'analisi delle transazioni.
Consigliamo di attivare Transaction Search per visualizzare e interrogare le tracce parziali. L'esempio seguente mostra una pagina di servizio nella console Application Signals. ServiceC è configurato con anomaly span capture e fa parte di una catena di chiamate in cui si applica il sampling boost. Queste configurazioni generano tracce complete e parziali. È possibile utilizzare l'aws.trace.flag.sampled
attributo per distinguere i tipi di tracce.

L'acquisizione degli intervalli di anomalia può essere abilitata o personalizzata solo tramite. Configurazione SDK locale
Configurazione SDK locale
È possibile configurare le funzionalità di campionamento adattivo in ADOT SDK fornendo una configurazione YAML tramite una variabile di ambiente. La configurazione locale fornisce un controllo dettagliato sulle condizioni di anomalia e sulle soglie.
Ciò è necessario per l'acquisizione dell'intervallo di anomalie e facoltativo per personalizzare le condizioni di aumento del campionamento. Di seguito è riportato un esempio di configurazione:
version: 1.0 anomalyConditions: - errorCodeRegex: "^5\\d\\d$" usage: both - operations: - "/api" errorCodeRegex: "^429|5\\d\\d$" highLatencyMs: 300 usage: sampling-boost - highLatencyMs: 1000 usage: anomaly-span-capture anomalyCaptureLimit: anomalyTracesPerSecond: 1
Le definizioni dei campi sono riportate di seguito:
-
version
— Versione dello schema per il file di configurazione -
anomalyConditions
— Definisce le condizioni in cui vengono rilevate le anomalie e il modo in cui vengono utilizzate-
errorCodeRegex
— Espressione regolare che definisce quali codici di stato HTTP sono considerati anomalie -
operations
— Elenco delle operazioni o degli endpoint a cui si applica la condizione -
highLatencyMs
— Soglia di latenza (in millisecondi) al di sopra della quale gli intervalli vengono considerati anomalie -
usage
— Definisce a quale funzionalità si applica la condizione:-
both
— Si applica al sampling boost e all'anomaly span capture (impostazione predefinita se l'utilizzo non è specificato) -
sampling-boost
— Utilizzato solo per attivare gli incrementi di campionamento -
anomaly-span-capture
— Utilizzato solo per l'acquisizione dell'intervallo di anomalie
-
-
-
anomalyCaptureLimit
— Definisce i limiti al numero di tracce con intervalli di anomalia emesse.anomalyTracesPerSecond
— Numero massimo di tracce con intervalli di anomalia acquisiti al secondo, per evitare un volume di intervallo eccessivo (il valore predefinito è 1 se non è presente). anomalyCaptureLimit
Nota
-
AnomalyConditions
sostituisce la condizione di anomalia predefinita per sampling boost (HTTP 5xx). Se si desidera mantenere la condizione predefinita durante l'utilizzo della configurazione locale, è necessario includerla esplicitamente in qualsiasi elemento di.AnomalyConditions
-
Per ogni
anomalyConditions
articolo:-
Quando il
operations
campo viene omesso, la condizione si applica a tutte le operazioni (livello di servizio) -
Quando il
operations
campo è presente ma impostato su un elenco vuoto, la condizione non si applica a nessuna operazione, il che rende tale elemento non operabile Quando entrambe
errorCodeRegex
le rispostehighLatencyMs
vengono omesse, la condizione non ha criteri di anomalia da valutare, il che rende tale elemento una condizione non operativa
-
-
Relazioni logiche:
-
Tra gli elementi in
anomalyConditions
, la relazione è OR. -
All'interno di un singolo elemento, più campi (ad esempio
errorCodeRegex
ehighLatencyMs
) vengono combinati con AND.Per esempio:
errorCodeRegex: "^429|5\\d\\d$" highLatencyMs: 300
Questa condizione indica che il codice di stato corrisponde a 429 o 5xx AND ha una latenza ≥ 300 ms.
-
Applica la configurazione locale a ADOT SDK
È possibile applicare la configurazione locale all'ADOT SDK impostando la variabile di ambiente. AWS_XRAY_ADAPTIVE_SAMPLING_CONFIG
Il valore deve essere un documento YAML valido (in linea o annidato).
Ad esempio, Amazon EC2 e Amazon ECS, impostano direttamente la variabile di ambiente:
AWS_XRAY_ADAPTIVE_SAMPLING_CONFIG="{version: 1.0, anomalyConditions: [{errorCodeRegex: \"^500$\", usage: \"sampling-boost\"}, {errorCodeRegex: \"^501$\", usage: \"anomaly-trace-capture\"}], anomalyCaptureLimit: {anomalyTracesPerSecond: 10}}"
Per Amazon EKS, definisci la variabile di ambiente all'interno delle specifiche del pod come YAML annidato:
apiVersion: v1 kind: Pod metadata: name: adot-sample spec: containers: - name: adot-app image: my-app:latest env: - name: AWS_XRAY_ADAPTIVE_SAMPLING_CONFIG value: | version: 1.0 anomalyConditions: - errorCodeRegex: "^500$" usage: sampling-boost - errorCodeRegex: "^501$" usage: anomaly-trace-capture anomalyCaptureLimit: anomalyTracesPerSecond: 10