Serverloze ontwikkeling met AWS Lambda · Les

Distributed Tracing met AWS X-Ray

Implementeer en interpreteer distributed tracing met AWS X-Ray om de stroom van aanvragen door uw serverloze architectuur te visualiseren en prestatieknelpunten te identificeren.

Les 3 van 412 stappen

Distributed Tracing met AWS X-Ray is een gratis Serverloze ontwikkeling met AWS Lambda-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Serverloze ontwikkeling met AWS Lambda. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Serverloze ontwikkeling met AWS Lambda bevat in totaal 4 lessen.

Serverless-verzoeken traceren

In serverless-toepassingen loopt één gebruikersverzoek vaak door veel services, zoals een API Gateway, meerdere Lambda-functies en databases. Het kan ingewikkeld zijn om deze route te begrijpen!

Daar komt gedistribueerde tracing van pas. Dit is een techniek om een verzoek te volgen terwijl het door deze verschillende services stroomt, zodat je een volledig overzicht van begin tot eind krijgt.

Maak kennis met AWS X-Ray

AWS X-Ray is een service waarmee ontwikkelaars gedistribueerde toepassingen die met microservices zijn gebouwd kunnen analyseren en fouten kunnen opsporen. De service biedt een volledig overzicht van verzoeken terwijl die door je toepassing reizen.

Met X-Ray kun je:

  • Interactie tussen services visualiseren.
  • Knelpunten in de prestaties identificeren.
  • Fouten in gedistribueerde systemen opsporen.

X-Ray-segmenten uitgelegd

De basiseenheid van gegevens in X-Ray is een segment. Elke service (zoals een Lambda-functie of een API Gateway) die deel uitmaakt van je toepassing stuurt zijn eigen segment naar X-Ray.

Een segment bevat informatie over het werk dat door die service is uitgevoerd, waaronder:

  • De naam en ID van de service.
  • Gegevens over het binnenkomende verzoek.
  • Tijdgegevens (begin- en eindtijd).
  • Eventuele fouten of storingen die zijn opgetreden.

Dieper bekeken: subsegmenten

In het segment van een service kun je subsegmenten maken voor gedetailleerdere tracing. Subsegmenten vertegenwoordigen afzonderlijke werkeenheden binnen die service.

Het segment van een Lambda-functie kan bijvoorbeeld subsegmenten bevatten voor:

  • Aanroepen van een database (zoals DynamoDB).
  • HTTP-verzoeken naar een externe API.
  • Specifieke bedrijfslogica in je code.

Zo kun je precies vaststellen waar binnen een service tijd wordt besteed.

Traces en de servicemap

Alle segmenten en subsegmenten die door één verzoek worden gegenereerd, worden gegroepeerd tot een trace. Deze trace biedt een volledig overzicht van de route van het verzoek, van begin tot eind.

X-Ray gebruikt deze traces vervolgens om een servicemap te genereren. Dit is een visuele weergave van de onderdelen van je toepassing en de verbindingen ertussen, met de latentie en foutpercentages.

X-Ray inschakelen voor Lambda

Om te beginnen met het traceren van je Lambda-functies, moet je eerst X-Ray-tracing voor deze functies inschakelen. Dit kan eenvoudig via de AWS Management Console of met Infrastructure as Code (zoals AWS SAM of CloudFormation).

In de console:

  1. Ga naar je Lambda-functie.
  2. Selecteer onder 'Configuration' de optie 'Monitoring and operations tools'.
  3. Bewerk 'Active tracing' en schakel deze in voor AWS X-Ray.

Hiermee configureer je Lambda om basisgegevens over het aanroepen van functies naar X-Ray te sturen.

Python-Lambda-code instrumenteren

Hoewel het inschakelen van X-Ray basisgegevens vastlegt, moet je je code instrumenteren met de X-Ray SDK voor diepere inzichten (zoals aangepaste subsegmenten of tracing van aanroepen die niet via de AWS SDK lopen).

Hier volgt een Python-voorbeeld:

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({}, {}))

Node.js-Lambda-code instrumenteren

Voor Lambda-functies in Node.js gebruik je op vergelijkbare wijze het pakket aws-xray-sdk om je code te instrumenteren. Hiermee kun je aangepaste subsegmenten vastleggen en ervoor zorgen dat aanroepen van de AWS SDK worden getraceerd.

Hier volgt een Node.js-voorbeeld:

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));
}

De servicemap lezen

Zodra X-Ray tracegegevens verzamelt, kun je de servicemap bekijken in de X-Ray-console. Deze map geeft de onderdelen van je toepassing visueel weer als knooppunten en hun interacties als verbindingen.

Let op:

  • Knooppunten: Geven services weer (Lambda, API Gateway, DynamoDB).
  • Verbindingen: Tonen verbindingen en gegevensstromen tussen services.
  • Kleuren: Geven de status van een service aan (groen voor gezond, rood voor fouten).
  • Latentie: Visuele aanwijzingen en meetwaarden op verbindingen tonen de duur van verzoeken.

Knelpunten opsporen

De echte kracht van X-Ray ligt in het identificeren van prestatieproblemen. Door de tijdlijn van een trace te bekijken, zie je hoe lang elk segment en subsegment nodig had om te voltooien.

Dit helpt je om:

  • Trage services te identificeren: Welke service neemt de meeste tijd in beslag?
  • Inefficiënte code te vinden: Welk subsegment binnen een functie veroorzaakt vertragingen?
  • Externe afhankelijkheden te detecteren: Vertraagt een aanroep van een API van een externe partij of een databasequery de verwerking?

Controle van X-Ray-tracing

Laten we je begrip van de mogelijkheden van AWS X-Ray testen.

De weg vooruit traceren

Gefeliciteerd! Je hebt geleerd hoe AWS X-Ray waardevol inzicht biedt in je serverless-toepassingen.

Door X-Ray in te schakelen, je code te instrumenteren en de servicemap en tracetijdlijnen te interpreteren, kun je effectief:

  • Complexe verzoekstromen begrijpen.
  • Problemen met latentie en fouten diagnosticeren.
  • De prestaties van je toepassing optimaliseren.

Gebruik X-Ray om robuustere en beter presterende serverless-systemen te bouwen!

Gratis beginnen

Leer Serverloze ontwikkeling met AWS Lambda met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
12
Lessen
48

Veelgestelde vragen

Is de les “Distributed Tracing met AWS X-Ray” gratis?

Ja — de volledige tekst van “Distributed Tracing met AWS X-Ray” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Serverloze ontwikkeling met AWS Lambda wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Serverloze ontwikkeling met AWS Lambda bevat in totaal 4 lessen.

Wat leer ik in “Distributed Tracing met AWS X-Ray”?

Implementeer en interpreteer distributed tracing met AWS X-Ray om de stroom van aanvragen door uw serverloze architectuur te visualiseren en prestatieknelpunten te identificeren. Je oefent met Serverloze ontwikkeling met AWS Lambda door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Serverloze ontwikkeling met AWS Lambda te beginnen?

Ervaring vooraf is niet nodig. Serverloze ontwikkeling met AWS Lambda op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Distributed Tracing met AWS X-Ray”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Serverloze ontwikkeling met AWS Lambda?

Ja. Elke les over Serverloze ontwikkeling met AWS Lambda bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Geavanceerde IAM-beleidsregels en machtigingen
  2. Secrets beheren met AWS Secrets Manager
  3. Distributed Tracing met AWS X-Ray
  4. Gestructureerde logging en correlatie-ID's
← Terug naar Serverloze ontwikkeling met AWS Lambda