web-dev-qa-db-fra.com

COMMENT enregistrer uniquement les demandes lentes dans Apache httpd

Existe-t-il un moyen de spécifier une condition dans Apache httpd access_log pour ne conserver que les demandes dont le traitement a pris plus de 500 ms?

3
Antonio

La directive CustomLog vous permet de définir une condition (dans un 3ème argument optionnel) utilisée pour contrôler le moment où la requête est lancée. connecté. (Sur Apache 2.4+, cela peut prendre la forme d'une Apache Expression .) Cependant, cette condition est généralement basée sur un propriété de la requête (type de fichier, en-tête de requête, etc.), plutôt que quelque chose associé à la réponse . (Bien qu'il semble possible de créer une condition basée sur l'état de la réponse HTTP , car elle est explicitement mise à disposition dans le REQUEST_STATUS variable serveur .)

Cependant, je ne vois pas comment créer un condition basé sur le temps de réponse du serveur . (?)

Une solution de contournement pourrait consister à inclure spécifiquement ces informations dans votre journal d'accès à l'aide de la chaîne de format %msT (si vous souhaitez spécifiquement consigner cela en millisecondes) dans un format de journal personnalisé. Vous pouvez ensuite filtrer ces informations à l'aide d'un analyseur de fichier journal.

  • %T - Le temps pris pour répondre à la demande, en secondes.

  • %{UNIT}T - Le temps pris pour répondre à la demande, dans une unité de temps donnée par UNIT. Les unités valides sont ms pour les millisecondes, us pour les microsecondes et s pour les secondes. Utiliser s donne le même résultat que %T sans aucun format; utiliser us donne le même résultat que %D. La combinaison de %T avec une unité est disponible dans les versions 2.4.13 et ultérieures.

Référence:
http://httpd.Apache.org/docs/current/mod/mod_log_config.html#formats

2
MrWhite