mysql의 Apache 로그에서 대용량 파일 다운로드 횟수 계산

mysql의 Apache 로그에서 대용량 파일 다운로드 횟수 계산

클라이언트가 요청한 약 10개의 파일에 대한 파일 다운로드 횟수를 계산하고 싶습니다. MySQL 데이터베이스에 로드할 수 있는 Apache 로그에 대해 별도의 로그 형식을 생성했습니다.

이러한 특정 쿼리에 대해 나는 너무 큰 로그 분석기를 설치하는 대신 다운로드 수를 계산하는 SQL 문을 작성할 수 있기를 바랐습니다.

MySQL 로그에 사용되는 로그 형식은 다음과 같습니다.

LogFormat "\"%a\",%{%Y%m%d%H%M%S}t,%>s,\"%b\",\"%{Content-Type}o\", \"%U\",\"%{Referer}i\",\"%{User-Agent}i\"" mysql

그러면 다음과 같은 종류의 csv 파일이 생성됩니다.

"156.107.33.66",20121017113516,200,"10094440","application/x-msdos-program",          "/flexnet/FLEXnetWinSetup.exe","http://www.example.com/downloads/flexnet","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4"

그러나 100MB 이상의 큰 파일은 여러 개의 청크로 분할되므로 단순한 로그 수는 아닙니다.

비슷한 것을 시도한 사람이 있습니까?

답변1

덩어리로 분할하여 클라이언트가 여러 206 HTTP 응답이 포함된 파일을 로드하지 않는다는 의미인 경우 응답에 포함된 Content-Range 헤더의 내용을 기록해야 합니다.

LogFormat "\"%a\",%{%Y%m%d%H%M%S}t,%>s,\"%b\",\"%{Content-Range}o\",\"%{Content-Type}o\", \"%U\",\"%{Referer}i\",\"%{User-Agent}i\"" mysql

이것은 다음과 같은 것을 생성해야 합니다(테스트되지 않음)

"156.107.33.66",20121017113516,200,"10094440","bytes 0-999/3980","application/x-msdos-program",          "/flexnet/FLEXnetWinSetup.exe","http://www.example.com/downloads/flexnet","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4"

관련 정보