Skip to main content
Het opnemen van custom instrumentatie in uw applicatie kan nuttig zijn bij het identificeren van de specifieke regels code die prestatieproblemen veroorzaken. AppSignal voor Python gebruikt OpenTelemetry tracer-objecten; u kunt meer lezen over Python-traces in het Python Cookbook van OpenTelemetry. Traces bestaan uit een of meer spans. Een Trace kan worden gezien als een directed acyclic graph (DAG) van spans: Trace-diagram AppSignal-specifieke attributen moeten aan een span worden toegevoegd om succesvol door AppSignal te kunnen worden geparsed. Onze set helper-methoden kan worden gebruikt om deze attributen in te stellen. Deze documentatie legt uit hoe u custom instrumentaties maakt door AppSignal-specifieke attributen in de spans van uw Python-applicatie in te stellen.

Een span aanmaken

Bij het toevoegen van custom instrumentatie importeert u eerst de OpenTelemetry trace-module in het bestand waaraan u instrumentatie wilt toevoegen.
Maak vervolgens, met behulp van die trace-module, een nieuwe span aan:
Zodra u de Span hebt opgehaald, kunt u onze helper-methoden gebruiken om de vereiste attributen toe te kennen. Meer informatie over het aanmaken en ophalen van Spans is beschikbaar in het Python Cookbook van OpenTelemetry.

One-offs en Serverless

Bij het uitvoeren van eenmalige scripts of serverless functies moet u AppSignal handmatig initialiseren en aan het einde stoppen om te garanderen dat er geen gegevens verloren gaan. De stop-helper zal het agent-proces netjes beëindigen en een tijdje wachten om te garanderen dat alle gegevens naar de AppSignal-servers worden verzonden.

Helper-methoden

De helper-methoden die in deze sectie worden beschreven, zijn niet compatibel met de AppSignal collector.
De volgende helper-methoden stellen AppSignal-specifieke attributen in op spans die helpen om spans te groeperen en de weergave ervan in AppSignal te verbeteren. Andere attributen worden niet ondersteund op spans door AppSignal.

set_category

De span-categorie is de naam die in de performance event-tijdlijn voor traces verschijnt. Deze wordt ook gebruikt om spans te groeperen om een uitsplitsing per groep op de samplegegevenspagina te maken.
De categorie is een string die het child span-event en de groep bevat. De categorie dient een punt (.) te gebruiken om de hiërarchische overerving van het event uit te drukken, met de hoogste eenheid als laatste. Voor meer informatie over span-categorieën, zie de event names guide.

set_name

Er kunnen meer details aan de span worden toegevoegd die zichtbaar zijn wanneer u over het event in de event-tijdlijn beweegt. De spannaam wordt gebruikt om meer informatie over het event te bieden, zoals “Fetch users”, de database vanwaar ze worden opgehaald of de URL die werd opgevraagd.
Als deze methode niet wordt aangeroepen, gebruikt deze de waarde waarmee start_as_current_span is aangeroepen.

set_body

🔐 Stuur geen Persoonlijk Identificeerbare Informatie (PII) naar AppSignal. Filter PII (bijv. namen, e-mailadressen) en gebruik in plaats daarvan een ID, hash of gepseudonimiseerde identificator.

Voor onder HIPAA vallende entiteiten vindt u meer informatie over het ondertekenen van een Business Associate Agreement (BAA) in onze documentatie over Business Add-Ons.
De body van de span kan aanvullende informatie over het event bevatten, zoals de HTTP-request, de verbonden host, enz. Zorg ervoor dat u de informatie saneert voordat u deze aan de span toevoegt, zodat er geen Personal Identifiable Information naar AppSignal wordt verzonden. Deze informatie is zichtbaar voor de span wanneer u over de event-tijdlijn beweegt. Om SQL-queries op te slaan in de body van de span, gebruikt u in plaats daarvan de set_sql_body-helper.

set_sql_body

Beschikbaar sinds Python-pakket 0.3.2.
Stel een SQL-query in als de body van de span zoals deze verschijnt in de performance event-tijdlijn in het sample-detailoverzicht van het incident. Dit is vergelijkbaar met de set_body-helper, maar is gespecialiseerd voor SQL-queries. Elke SQL-query die met dit attribuut als body wordt ingesteld, wordt gesaneerd om te voorkomen dat PII (Personal Identifiable Information)-gegevens naar onze servers worden verzonden. Zie de set_body-helper voor meer details over hoe het body-attribuut werkt. Wanneer zowel de set_body- als de set_sql_body-helper op dezelfde span worden aangeroepen, is de waarde van de set_sql_body-helper leidend en wordt de waarde van de set_body-helper genegeerd.

set_root_name

Dit attribuut is van toepassing op de volledige trace. Het kan worden ingesteld op een child-span en hoeft niet op de bovenste parent-span te worden ingesteld. Dit attribuut kan slechts één keer per trace worden ingesteld. Als het meerdere keren wordt ingesteld, wordt alleen het attribuut van één span in de trace toegepast.
Elke trace wordt gegroepeerd onder een HTTP-endpoint, naam van een background job worker, of taaknaam. We noemen deze groep de “action name”. Om deze actienaam voor de gehele trace te wijzigen, gebruikt u de set_root_name-helper. Gebruik een actienaam die generiek genoeg is om alle traces uit dit deel van de app te groeperen, zonder elke keer verschillende namen te rapporteren. Stel GET /users/:id (waarbij :id de URL-parameternaam is) in als actienaam, in plaats van GET /users/123 (waarbij 123 de feitelijke waarde is die in de request is verstrekt). Dit laatste zou een nieuw incident rapporteren voor elke unieke request.

Voorbeeld-use case

Uw applicatie heeft een endpoint genaamd GET /coffee.
Alle requests naar dit endpoint genereren samples genaamd GET /coffee, maar uw endpoint behandelt meerdere acties: coffee?action=buy en coffee?action=sell. Span zonder root-naam Hoewel ze allemaal het GET /coffee-endpoint gebruiken, zijn ze conceptueel zeer verschillend en zou het dus logisch zijn om ze afzonderlijk in AppSignal te groeperen in plaats van in dezelfde GET /coffee-sample. Om dit te doen, kunt u de set_root_name-helper gebruiken:
Het gebruik van set_root_name wijzigt de naam van de root-span en groepeert de samples voor de requests coffee?action=buy en coffee?action=sell in afzonderlijke acties: Root-naam span

Andere tracegegevens

Om de gegevens die op de trace zijn opgeslagen verder aan te passen, raadpleegt u onze Tagging- en Data Customization-handleidingen om tags, parameters, sessiegegevens, custom data en meer toe te voegen.