¿Cómo registrar solo ciertos códigos de resultado/estado con Squid?

¿Cómo registrar solo ciertos códigos de resultado/estado con Squid?

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_statuscódigos. Squid nunca ve códigos de estado para conexiones binarias y lanzará una advertencia cache.logpara 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 successy 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

información relacionada