Eu não uso AWStats com S3, mas sugiro que haja 3 problemas com o processamento dos logs:
-
Você precisa obter os dados - eles são armazenados no S3
Com o Cloudfront, a AWS oferece a opção de qual bucket você deseja usar - não precisa ser o intervalo de origem (origem). Você pode facilmente configurar um intervalo específico para seus registros e montá-lo via s3fs - isso deve fornecer as informações mais simples acesso aos arquivos - retendo os timestamps, etc., que geralmente são necessários para o processamento incremental de logs. Alternativamente, se você não quiser montar um bucket como um sistema de arquivos local, você pode usar s3cmd , aws ou um dos SDKs para fazer download dos arquivos. (Existe um script python (usando o boto) para este fim - aqui - embora eu não possa garantir sua eficácia.
-
Você precisa descomprimir e combinar os registros
Os registros da Cloudfront são compactados (gzipados) e armazenados como vários arquivos. Os nomes dos arquivos contêm a data e a hora (por exemplo,
XXXXXXXXXXXXX.YYYY-MM-DD-HH.XXXXXXXXX
), embora possam haver vários arquivos por hora. Os arquivos podem ser descompactados comgunzip
e combinados com a (ferramenta fornecida pelo AWStats)logresolvemerge.pl
. -
Você precisa fornecer um formato de registro personalizado para o AWStats
O formato do arquivo é separado por separadores e se parece com:
date time x-edge-location sc-bytes c-ip cs-method cs(Host) cs-uri-stem sc-status cs(Referer) cs(User-Agent) cs-uri-query 2011-06-27 08:31:10 JFK1 587 xxx.xxx.xxx.xxx GET xxxxxxxxxxxxxx.cloudfront.net /path/to/your/file 304 http://www.mydomain.com/page/requesting/file User-agent-string -
Você deve, portanto, configurar AWStats com:
LogType=W LogSeparator="\t" LogFormat="%time2 %cluster %bytesd %host %method %virtualname %url %code %referer %ua %query"