De forma predeterminada, Squid registra toda la información de acceso, incluidos los "éxitos" y los "fracasos". Me interesa registrar solo "fallos". En otras palabras, quiero hacer algo como registrar solo códigos de resultado DENIED de Squid o, alternativamente, no registrar transacciones HTTP exitosas. Independientemente de cómo defina "éxito" y "fracaso", necesito poder definir más específicamente qué tipo de información de acceso escribirá Squid en el archivo de registro. ¿Alguien sabe cómo hacer esto?
Respuesta1
Puede lograr esta funcionalidad conACL, aunque tiene algunos trucos.
El truco principal es asegurarse de no comprobar accidentalmente las conexiones binarias en busca de http_status
códigos. Squid nunca ve códigos de estado para conexiones binarias y lanzará una advertencia cache.log
para las conexiones binarias que ve si lo estropeas.
Aquí hay una configuración de muestra que escribirá todos los éxitos y redirecciones de http, así como todas las conexiones binarias que terminen de abrir un socket (no tenemos visibilidad de éxito/fracaso más allá de eso) success.log
, y todos los códigos de falla de http y conexiones binarias que no abra un enchufe para failure.log
.
acl CONNECT method CONNECT
# http status codes (http://wiki.squid-cache.org/SquidFaq/SquidLogs)
acl success_codes http_status 100-199 # informational
acl success_codes http_status 200-299 # successful transactions
acl success_codes http_status 300-399 # redirection
acl failure_codes http_status 400-499 # client error
acl failure_codes http_status 500-599 # server error
acl success_hier hier_code HIER_DIRECT
acl failure_hier hier_code HIER_NONE
acl failure all-of CONNECT failure_hier
acl failure all-of !CONNECT failure_codes
acl success all-of CONNECT success_hier
acl success all-of !CONNECT success_codes
access_log stdio:/usr/local/squid/var/logs/success.log logformat=squid success
access_log stdio:/usr/local/squid/var/logs/failure.log logformat=squid failure
El problema con esta configuración es que deshabilita el archivo de registro predeterminado y no registrará nada que no coincida con una de esas dos ACL. Ahora, estoy bastante seguro de que he escrito bien mis ACL y de que he tenido en cuenta todas las posibilidades, pero esto aún me pondría nervioso, por lo que es posible que desees agregar otro archivo de registro solo para detectar cualquier cosa que se pierda. ambas ACL
access_log stdio:/usr/local/squid/var/logs/unknown.log logformat=squid !success !failure
O simplemente puede definir success
y establecer el error en!success
acl CONNECT method CONNECT
# http status codes (http://wiki.squid-cache.org/SquidFaq/SquidLogs)
acl success_codes http_status 100-199 # informational
acl success_codes http_status 200-299 # successful transactions
acl success_codes http_status 300-399 # redirection
acl success_hier hier_code HIER_DIRECT
acl failure_hier hier_code HIER_NONE
acl success all-of CONNECT success_hier
acl success all-of !CONNECT success_codes
access_log stdio:/usr/local/squid/var/logs/success.log logformat=squid success
access_log stdio:/usr/local/squid/var/logs/failure.log logformat=squid !success