웹 서버 로그를 데이터셋으로 만들기

Eunjae Shin·2023년 12월 29일

😗 웹 서버 로그를 데이터셋으로 만들기

업무를 하다 보니 반정형 데이터들을 바탕으로 테이블을 만들어야 할 경우가 많았다. 반정형 데이터들 중 하나인 웹 서버의 로그를 데이터셋으로 만들어보았다.

 

① 웹 서버 로그 파일 다운로드

구글링으로 웹 서버 로그 파일의 예제 데이터를 구했다.

 

② 코드 작성

다운받은 웹 서버 로그 파일을 컬럼별로 데이터가 들어가도록 파이썬 코드를 작성하였다.

import pandas as pd
import re

# 로그의 각 행에 매치하는 정규식 작성
pattern = re.compile('(^\S+) - - \[(.*)] "(\S+ \S+) \S+" (\S+) (\S+)')

# 경로 설정
input_log_path = r"/Users/shin-eunjae/Desktop/code/webserver_access_log_parsing/data/access.log"

# 정규 표현으로 파싱하는 함수 작성(일치하지 않는 행은 그냥 버린다)
def parse_access_log(path):
    for line in open(path):
        for m in pattern.finditer(line):
            yield m.group(1,2,3,4,5)
            
# 데이터프레임에 변수 보관하기
columns = ['IP', 'time', 'request', 'status', 'bytes']
data = parse_access_log(input_log_path)
df = pd.DataFrame(data, columns=columns)

# 'time'칼럼을 덮어쓴다(타임 존 삭제)
df.time = pd.to_datetime(df.time, format='%d/%b/%Y:%X', exact=False)

# 데이터 확인
df.head()

# csv 파일로 보관
output_log_path = r"/Users/shin-eunjae/Desktop/code/webserver_access_log_parsing/data/"
df.to_csv(output_log_path + 'access_log.csv', index=False)

 

③ 결과

반정형 데이터였던 웹 로그 데이터가 위와 같은 정형 데이터(CSV)로 저장이 됐다.

 

참고
빅데이터를 지탱하는 기술, 니시다 케이스케

profile
Data Architect🌱

0개의 댓글