Por padrão, o Squid registra todas as informações de acesso, incluindo 'sucessos' e 'falhas'. Estou interessado em registrar apenas 'falhas'. Em outras palavras, quero fazer algo como registrar apenas códigos de resultado Squid DENIED ou, alternativamente, não registrar transações HTTP bem-sucedidas. Independentemente de como eu defino 'sucesso' e 'falha', preciso ser capaz de definir mais especificamente que tipo de informação de acesso o Squid irá gravar no arquivo de log. Alguém sabe como fazer isto?
Responder1
Você pode obter essa funcionalidade comACLs, embora existam alguns truques para isso.
O truque principal é garantir que você não verifique acidentalmente as conexões binárias em busca de http_status
códigos. O Squid nunca vê códigos de status para conexões binárias e lançará um aviso cache.log
para conexão binária se você bagunçar tudo.
Aqui está um exemplo de configuração que gravará todos os sucessos e redirecionamentos de http, bem como todas as conexões binárias que terminam de abrir um soquete (não temos visibilidade de sucesso/falha além disso) para success.log
e todos os códigos de falha de http e conexões binárias que falham em abra um soquete 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
O problema com esta configuração é que ela desativa o arquivo de log padrão e não registra nada que não corresponda a uma dessas duas ACLs. Agora, estou bastante confiante de que escrevi bem minhas ACLs e de que considerei todas as possibilidades, mas isso ainda me deixaria nervoso, então você pode querer adicionar outro arquivo de log apenas para capturar qualquer coisa que aconteça. ambas as ACLs
access_log stdio:/usr/local/squid/var/logs/unknown.log logformat=squid !success !failure
Ou você pode simplesmente definir success
e definir a falha como!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