Serverløs udvikling med AWS Lambda · Lektion

Distribueret tracing med AWS X-Ray

Implementér og fortolk distribueret tracing med AWS X-Ray for at visualisere forespørgslernes flow gennem jeres serverløse arkitektur og identificere performanceflaskehalse.

Lektion 3 af 412 trin

Distribueret tracing med AWS X-Ray er en gratis Serverløs udvikling med AWS Lambda-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Serverløs udvikling med AWS Lambda, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Serverløs udvikling med AWS Lambda-kurset indeholder 4 lektioner i alt.

Sporing af serverløse anmodninger

I serverløse applikationer går en enkelt brugeranmodning ofte gennem mange tjenester, f.eks. en API Gateway, flere Lambda-funktioner og databaser. Det kan være komplekst at forstå denne rejse!

Det er her, distribueret sporing kommer ind i billedet. Det er en teknik til at følge en anmodning, mens den bevæger sig gennem disse forskellige tjenester, så du får et komplet overblik fra start til slut.

Mød AWS X-Ray

AWS X-Ray er en tjeneste, der hjælper udviklere med at analysere og fejlfinde distribuerede applikationer, som er bygget ved hjælp af mikrotjenester. Den giver et samlet overblik over anmodninger, mens de bevæger sig gennem din applikation.

Med X-Ray kan du:

  • Visualisere interaktioner mellem tjenester.
  • Identificere flaskehalse i ydeevnen.
  • Fejlfinde fejl på tværs af distribuerede systemer.

Forklaring af X-Ray-segmenter

Den grundlæggende dataenhed i X-Ray er et segment. Hver tjeneste (f.eks. en Lambda-funktion eller en API Gateway), der indgår i din applikation, sender sit eget segment til X-Ray.

Et segment indeholder oplysninger om det arbejde, tjenesten har udført, herunder:

  • Tjenestens navn og ID.
  • Detaljer om den indgående anmodning.
  • Tidsoplysninger (start- og sluttidspunkter).
  • Eventuelle fejl eller defekter, der er opstået.

Fordybelse: Undersegmenter

Inden for en tjenestes segment kan du oprette undersegmenter for at få mere detaljeret sporing. Undersegmenter repræsenterer afgrænsede arbejdsenheder i tjenesten.

Et Lambda-funktionssegment kan f.eks. indeholde undersegmenter for:

  • Kald til en database (f.eks. DynamoDB).
  • HTTP-anmodninger til en ekstern API.
  • Specifik forretningslogik i din kode.

De hjælper med at lokalisere præcis, hvor tiden bruges i en tjeneste.

Spor og tjenestekortet

Alle segmenter og undersegmenter, der genereres af en enkelt anmodning, grupperes for at danne et spor. Dette spor giver et komplet overblik over anmodningens rejse fra start til slut.

X-Ray bruger derefter disse spor til at generere et tjenestekort. Det er en visuel repræsentation af din applikations komponenter og forbindelserne mellem dem, som viser svartider og fejlrater.

Aktivér X-Ray for Lambda

Hvis du vil begynde at spore dine Lambda-funktioner, skal du først aktivere X-Ray-sporing for dem. Det kan du nemt gøre via AWS Management Console eller med Infrastructure as Code (f.eks. AWS SAM eller CloudFormation).

I konsollen:

  1. Gå til din Lambda-funktion.
  2. Vælg 'Overvågning og driftsværktøjer' under 'Konfiguration'.
  3. Rediger og aktivér 'Aktiv sporing' for AWS X-Ray.

Det konfigurerer Lambda til at sende grundlæggende data om funktionskald til X-Ray.

Instrumentér Python-Lambda-kode

Selvom aktivering af X-Ray indsamler grundlæggende data, skal du instrumentere din kode ved hjælp af X-Ray SDK'et for at få dybere indsigt (f.eks. brugerdefinerede undersegmenter eller sporing af kald, der ikke bruger AWS 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({}, {}))

Instrumentér Node.js-Lambda-kode

Tilsvarende bruger du pakken aws-xray-sdk til at instrumentere din kode i Node.js-Lambda-funktioner. Det giver dig mulighed for at indsamle brugerdefinerede undersegmenter og sikre, at AWS SDK-kald 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));
}

Læsning af tjenestekortet

Når X-Ray har indsamlet sporingsdata, kan du se tjenestekortet i X-Ray-konsollen. Kortet repræsenterer visuelt din applikations komponenter som knudepunkter og deres interaktioner som forbindelser.

Se efter:

  • Knudepunkter: Repræsenterer tjenester (Lambda, API Gateway, DynamoDB).
  • Forbindelser: Viser forbindelser og dataflow mellem tjenester.
  • Farver: Angiver tjenesternes tilstand (grøn for normal drift, rød for fejl).
  • Svartid: Visuelle tegn og målinger på forbindelserne viser anmodningens varighed.

Lokalisering af flaskehalse

X-Rays virkelige styrke ligger i at identificere problemer med ydeevnen. Ved at undersøge tidslinjen for et spor kan du se, hvor lang tid hvert segment og undersegment tog at fuldføre.

Det hjælper dig med at:

  • Identificere langsomme tjenester: Hvilken tjeneste bruger mest tid?
  • Finde ineffektiv kode: Hvilket undersegment i en funktion forårsager forsinkelser?
  • Registrere eksterne afhængigheder: Er et kald til en tredjeparts-API eller en databaseforespørgsel årsag til langsommere behandling?

Kontrol af X-Ray-sporing

Lad os teste din forståelse af AWS X-Rays funktioner.

Spor vejen frem

Tillykke! Du har lært, hvordan AWS X-Ray giver uvurderlig indsigt i dine serverløse applikationer.

Ved at aktivere X-Ray, instrumentere din kode og fortolke tjenestekortet og sporenes tidslinjer kan du effektivt:

  • Forstå komplekse anmodningsforløb.
  • Diagnosticere problemer med svartider og fejl.
  • Optimere din applikations ydeevne.

Brug X-Ray til at bygge mere robuste og effektive serverløse systemer!

Gratis at komme i gang

Lær Serverløs udvikling med AWS Lambda med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Distribueret tracing med AWS X-Ray” gratis?

Ja — hele teksten til “Distribueret tracing med AWS X-Ray” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Serverløs udvikling med AWS Lambda-kurset, skal du opgradere til CoddyKit PRO. Serverløs udvikling med AWS Lambda-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Distribueret tracing med AWS X-Ray”?

Implementér og fortolk distribueret tracing med AWS X-Ray for at visualisere forespørgslernes flow gennem jeres serverløse arkitektur og identificere performanceflaskehalse. Du øver dig i Serverløs udvikling med AWS Lambda med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Serverløs udvikling med AWS Lambda?

Der kræves ingen tidligere erfaring. Serverløs udvikling med AWS Lambda på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “Distribueret tracing med AWS X-Ray”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Serverløs udvikling med AWS Lambda-lektion?

Ja. Alle Serverløs udvikling med AWS Lambda-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Avancerede IAM-politikker og -tilladelser
  2. Håndtering af hemmeligheder med AWS Secrets Manager
  3. Distribueret tracing med AWS X-Ray
  4. Struktureret logning og korrelations-id'er
← Tilbage til Serverløs udvikling med AWS Lambda