Distribuert sporing med AWS X-Ray
Implementer og tolk distribuert sporing med AWS X-Ray for å visualisere flyten av forespørsler gjennom den serverløse arkitekturen og identifisere ytelsesflaskehalser.
Distribuert sporing med AWS X-Ray er en gratis leksjon i Serverløs utvikling med AWS Lambda på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Serverløs utvikling med AWS Lambda, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Serverløs utvikling med AWS Lambda inneholder totalt 4 leksjoner.
Sporing av forespørsler i serverløse applikasjoner
I serverløse applikasjoner går én enkelt brukerforespørsel ofte gjennom mange tjenester, for eksempel en API Gateway, flere Lambda-funksjoner og databaser. Det kan være komplekst å forstå denne reisen!
Det er her distribuert sporing kommer inn. Dette er en teknikk for å spore en forespørsel mens den går gjennom disse ulike tjenestene, slik at De får en fullstendig oversikt fra ende til ende.
Møt AWS X-Ray
AWS X-Ray er en tjeneste som hjelper utviklere med å analysere og feilsøke distribuerte applikasjoner bygget med mikrotjenester. Den gir en oversikt fra ende til ende over forespørsler mens de går gjennom applikasjonen.
Med X-Ray kan De:
- Visualisere samspill mellom tjenester.
- Identifisere flaskehalser i ytelsen.
- Feilsøke feil på tvers av distribuerte systemer.
Forklaring av X-Ray-segmenter
Den grunnleggende dataenheten i X-Ray er et segment. Hver tjeneste (for eksempel en Lambda-funksjon eller en API Gateway) som er en del av applikasjonen, sender sitt eget segment til X-Ray.
Et segment inneholder informasjon om arbeidet tjenesten har utført, blant annet:
- Tjenestens navn og ID.
- Detaljer om den innkommende forespørselen.
- Tidsinformasjon (start- og sluttidspunkt).
- Eventuelle feil eller avvik som oppstod.
Fordypning: Delsegmenter
Inne i et tjenestesegment kan De opprette delsegmenter for mer detaljert sporing. Delsegmenter representerer avgrensede arbeidsenheter i tjenesten.
Et Lambda-funksjonssegment kan for eksempel inneholde delsegmenter for:
- Kall til en database (for eksempel DynamoDB).
- HTTP-forespørsler til et eksternt API.
- Spesifikk forretningslogikk i koden.
De hjelper Dem med å finne nøyaktig hvor tiden brukes i en tjeneste.
Spor og tjenestekartet
Alle segmenter og delsegmenter som genereres av én enkelt forespørsel, grupperes sammen for å danne et spor. Dette sporet gir en fullstendig oversikt over forespørselens reise fra ende til ende.
X-Ray bruker deretter disse sporene til å generere et tjenestekart. Dette er en visuell fremstilling av applikasjonens komponenter og forbindelsene mellom dem, og viser forsinkelse og feilrate.
Aktivere X-Ray for Lambda
For å begynne å spore Lambda-funksjonene Deres må De først aktivere X-Ray-sporing for dem. Dette kan enkelt gjøres via AWS Management Console eller med Infrastructure as Code (for eksempel AWS SAM eller CloudFormation).
I konsollen:
- Gå til Lambda-funksjonen.
- Velg «Monitoring and operations tools» under «Configuration».
- Rediger og aktiver «Active tracing» for AWS X-Ray.
Dette konfigurerer Lambda til å sende grunnleggende data om funksjonskall til X-Ray.
Instrumentere Python-Lambda-kode
Aktivering av X-Ray fanger opp grunnleggende data, men for mer detaljert innsikt (for eksempel egendefinerte delsegmenter eller sporing av kall som ikke bruker AWS SDK), må De instrumentere koden med X-Ray SDK.
Her er et Python-eksempel:
from aws_xray_sdk.core import xray_recorder
from aws_xray_sdk.core import patch_all
# Patch all AWS SDK calls automatically
patch_all()
def lambda_handler(event, context):
# Start a custom subsegment for specific logic
with xray_recorder.in_subsegment('## my_custom_logic'):
print("Executing custom business logic...")
# Simulate some work
import time
time.sleep(0.05)
# Any AWS SDK calls after patch_all() will be automatically traced.
# For example, a DynamoDB put_item() call.
return {
'statusCode': 200,
'body': 'Hello from Lambda with X-Ray!'
}
# For local testing (not typically deployed with Lambda)
if __name__ == '__main__':
print(lambda_handler({}, {}))Instrumentere Node.js-Lambda-kode
Tilsvarende bruker De pakken aws-xray-sdk til å instrumentere Node.js-Lambda-funksjoner. Dette gjør det mulig å fange opp egendefinerte delsegmenter og sikre at AWS SDK-kall spores.
Her er et Node.js-eksempel:
const AWSXRay = require('aws-xray-sdk');
// Patch all AWS SDK calls automatically.
// This ensures calls to other AWS services are traced.
AWSXRay.captureAWS(require('aws-sdk'));
exports.handler = async (event, context) => {
// Get the current segment created by Lambda's X-Ray integration.
const segment = AWSXRay.getSegment();
// Create a custom subsegment to trace specific logic.
if (segment) { // Ensure segment exists for safe local execution
const customSubsegment = segment.addNewSubsegment('## MyCustomLogic');
try {
console.log("Executing custom business logic...");
await new Promise(resolve => setTimeout(resolve, 50)); // Simulate work
} finally {
customSubsegment.close();
}
} else {
console.log("X-Ray segment not found, executing without tracing.");
await new Promise(resolve => setTimeout(resolve, 50)); // Simulate work
}
return {
statusCode: 200,
body: JSON.stringify('Hello from Lambda with X-Ray!'),
};
};
// For local execution, you can simulate a call to the handler.
if (require.main === module) {
console.log("Running handler locally...");
exports.handler({}, {}).then(result => console.log(result));
}Lese tjenestekartet
Når X-Ray har samlet inn sporingsdata, kan De se tjenestekartet i X-Ray-konsollen. Kartet viser applikasjonens komponenter visuelt som noder og samspillet mellom dem som kanter.
Se etter:
- Noder: Representerer tjenester (Lambda, API Gateway, DynamoDB).
- Kanter: Viser forbindelser og dataflyt mellom tjenester.
- Farger: Angir tjenestens tilstand (grønn for god tilstand, rød for feil).
- Forsinkelse: Visuelle indikatorer og måleverdier på kantene viser forespørselens varighet.
Lokalisere flaskehalser
X-Rays virkelige styrke ligger i å identifisere ytelsesproblemer. Ved å undersøke tidslinjen for et spor kan De se hvor lang tid hvert segment og delsegment brukte på å fullføre.
Dette hjelper Dem med å:
- Identifisere trege tjenester: Hvilken tjeneste bruker mest tid?
- Finne ineffektiv kode: Hvilket delsegment i en funksjon forårsaker forsinkelser?
- Oppdage eksterne avhengigheter: Er det et kall til et tredjeparts-API eller et databasespørring som gjør ting tregere?
Kontroll av X-Ray-sporing
La oss teste forståelsen Deres av funksjonene i AWS X-Ray.
Spor veien videre
Gratulerer! De har lært hvordan AWS X-Ray gir verdifull innsikt i serverløse applikasjoner.
Ved å aktivere X-Ray, instrumentere koden og tolke tjenestekartet og tidslinjene for spor kan De effektivt:
- Forstå komplekse flyter for forespørsler.
- Diagnostisere problemer med forsinkelser og feil.
- Optimalisere applikasjonens ytelse.
Ta i bruk X-Ray for å bygge mer robuste og effektive serverløse systemer!
Lær deg Serverløs utvikling med AWS Lambda med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «Distribuert sporing med AWS X-Ray» gratis?
Ja – hele teksten i «Distribuert sporing med AWS X-Ray» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Serverløs utvikling med AWS Lambda-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Serverløs utvikling med AWS Lambda inneholder totalt 4 leksjoner.
Hva lærer jeg i «Distribuert sporing med AWS X-Ray»?
Implementer og tolk distribuert sporing med AWS X-Ray for å visualisere flyten av forespørsler gjennom den serverløse arkitekturen og identifisere ytelsesflaskehalser. Du øver på Serverløs utvikling med AWS Lambda med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Serverløs utvikling med AWS Lambda?
Ingen tidligere erfaring er nødvendig. Serverløs utvikling med AWS Lambda på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Distribuert sporing med AWS X-Ray»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Serverløs utvikling med AWS Lambda-leksjonen?
Ja. Alle Serverløs utvikling med AWS Lambda-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Avanserte IAM-policyer og tillatelser
- Håndtering av hemmeligheter med AWS Secrets Manager
- Distribuert sporing med AWS X-Ray
- Strukturert logging og korrelasjons-ID-er