Aller au contenu

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:

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_REQUEST
  • OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_RESPONSE
  • OTEL_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:

Demandes de durée par percentile en tant que tableau des séries temporelles


本文总阅读量次