it-swarm.com.de

WIE man nur langsame Anfragen in Apache httpd protokolliert

Gibt es eine Möglichkeit, eine Bedingung in Apache httpd access_log anzugeben, um nur Anforderungen zu speichern, deren Verarbeitung länger als 500 ms dauerte?

3
Antonio

Mit der Direktive CustomLog können Sie eine Bedingung (in einem optionalen dritten Argument) festlegen, mit der gesteuert wird, wann die Anforderung protokolliert wird. (In Apache 2.4+ kann dies die Form eines Apache Expression annehmen.) Diese Bedingung basiert jedoch im Allgemeinen auf einer Eigenschaft der Anfrage (Datei) Typ, Anforderungsheader usw.) und nicht etwas, das mit der Antwort verknüpft ist. (Obwohl es möglich zu sein scheint, eine Bedingung basierend auf dem HTTP-Antwortstatus zu erstellen, da dieser explizit in der Servervariablen REQUEST_STATUS verfügbar gemacht wird =.)

Ich sehe jedoch keine Möglichkeit, eine Bedingung basierend auf der Serverantwortzeit zu erstellen. (?)

Eine Problemumgehung kann darin bestehen, diese Informationen in Ihrem Zugriffsprotokoll unter Verwendung der Formatzeichenfolge _%msT_ (wenn Sie dies ausdrücklich als Millisekunden protokollieren möchten) in einem benutzerdefinierten Protokollformat anzugeben. Sie können diese Informationen dann mit einem Protokolldateianalysator filtern.

  • _%T_ - Die Zeit in Sekunden, die benötigt wird, um die Anforderung zu bearbeiten.

  • _%{UNIT}T_ - Die Zeit, die benötigt wird, um die Anforderung zu bearbeiten, in einer von UNIT angegebenen Zeiteinheit. Gültige Einheiten sind ms für Millisekunden, us für Mikrosekunden und s für Sekunden. Wenn Sie s verwenden, erhalten Sie dasselbe Ergebnis wie _%T_ ohne Format. Die Verwendung von us ergibt dasselbe Ergebnis wie _%D_. Die Kombination von _%T_ mit einer Einheit ist in 2.4.13 und höher verfügbar.

Referenz:
http://httpd.Apache.org/docs/current/mod/mod_log_config.html#formats

2
MrWhite