Le cadre du réseau¶
Voici quelques conseils pour équiper votre application Web d'un outil de détection.
Intégrations¶
Si vous utilisez l'une des bibliothèques suivantes, consultez la documentation d'intégration:
- FastAPI pour
- Starlette, par exemple
- par Django
- Flacon; flacon à long col; flacon à col fin; flacon à fond plat
Sinon, vérifiez que votre serveur utilise WSGI ou ASGI et vérifiez l'intégration appropriée.
Capture des en-têtes de requête et de réponse du serveur HTTP¶
Certaines méthodes (par exemple,logfire.instrument_fastapi()) vous permettent de passer capture_headers=True pour enregistrer tous les en-têtes de demande et de réponse dans la portée, ce qui est généralement tout ce dont vous avez besoin.
Si vous souhaitez plus de contrôle, il existe trois variables d'environnement qui indiquent à la bibliothèque de détection OpenTelemetry de capturer les en-têtes de demande et de réponse:
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_REQUESTOTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_RESPONSEOTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SANITIZE_FIELDS
Chacun accepte une liste d'expressions rationnelles séparées par des virgules qui sont vérifiées insensiblement à la casse par rapport aux noms d'en-tête. les deux premiers déterminent quels en-têtes de demande/réponse sont capturés et ajoutés à l'attribut span. le troisième détermine quels en-têtes ont des valeurs à éditer.
Par exemple, pour capturer tous les en-têtes, configurez-les comme suit:
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_REQUEST=".*"
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_RESPONSE=".*"
(C'est ce que capture_headers=True fait)
Capture exclusive des en-têtes de requête content-type et des en-têtes de requête commençant par X-:
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_REQUEST="content-type,X-.*"
serait Authorization La valeur de l'en-tête est remplacée par [REDACTED] Pour éviter de révéler les identifiants des utilisateurs:
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SANITIZE_FIELDS="Autorisation"
(Bien qu 'il soit généralement préférable de compter sur Logfire pour les fonctionnalités de nettoyage)
Demande de durée de requête HTTP pour chaque percentile¶
Souvent, il est intéressant de visualiser la durée de la requête HTTP pour chaque centile…Contrairement aux moyennes qui peuvent être affectées par des extrêmes, les centiles nous permettent de connaître la durée maximale de 50%, 90%, 95% ou 99% des requêtes.
Voici un exemple de requête utilisée pour calculer ces percentiles de la durée d'une requête HTTP:
WITH dataset AS (
Sélectionnez
time_bucket('%time_bucket_duration%', start_timestamp) AS x,
(extract(epoch from end_timestamp - start_timestamp) * 1000) comme duration_ms
par records
Où sont les attributs? 'http. method''
)
Sélectionnez
X,
percentile_cont(0.99) WITHIN GROUP (ORDER BY duration_ms) comme percentile_99,
percentile_cont(0,95) WITHIN GROUP (ORDER BY duration_ms) comme percentile_95,
percentile_cont(0.90) WITHIN GROUP (ORDER BY duration_ms) comme percentile_90,
percentile_cont(0,50) WITHIN GROUP (ORDER BY duration_ms) comme percentile_50
par dataset.
GROUP par x
ORDER BY x DESC;
Remarquez comment nous avons filtré les enregistrements avec l'attribut http.method défini-c'est un bon point de départ pour récupérer les traces associées aux requêtes HTTP, mais selon vos paramètres, vous devrez peut-être ajouter plus de filtres.
Cette requête est un bon candidat pour un graphique de séries chronologiques dans un tableau de bord:
本文总阅读量次
