Como registrar apenas determinados códigos de resultado/status com o Squid?

Como registrar apenas determinados códigos de resultado/status com o Squid?

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_statuscódigos. O Squid nunca vê códigos de status para conexões binárias e lançará um aviso cache.logpara 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.loge 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 successe 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

informação relacionada