[python] 웹 서버에 로그 분석 기능 추가하기

개요

웹 서버는 클라이언트의 요청에 대한 응답을 처리하는 중요한 역할을 합니다. 그러나 이러한 서버에서 발생하는 로그는 분석과 모니터링을 위해 중요한 정보를 제공합니다. 이번 글에서는 Python 언어를 사용하여 웹 서버에 로그 분석 기능을 추가하는 방법에 대해 알아보겠습니다.

로그 파일 생성하기

먼저, 웹 서버에서 생성되는 로그를 저장할 파일을 생성해야 합니다. 이 파일에는 각 요청에 대한 정보가 기록됩니다. 아래의 코드를 사용하여 로그 파일을 생성할 수 있습니다.

log_file = open("access.log", "a")         # 로그 파일 열기(이미 존재할 경우 이어쓰기 모드)
log_file.write("요청 IP: %s\n" % request.remote_addr)   # 클라이언트 IP 주소 기록
log_file.write("요청 메서드: %s\n" % request.method)      # 요청 메서드 기록
log_file.write("요청 URL: %s\n" % request.url)            # 요청 URL 기록
log_file.write("응답 상태 코드: %s\n" % response.status)   # 응답 상태 코드 기록
log_file.write("\n")
log_file.close()                          # 로그 파일 닫기

로그 분석하기

웹 서버에 로그를 기록한 후, 해당 로그 파일을 분석하여 원하는 정보를 추출할 수 있습니다. 아래의 코드는 로그 파일을 읽고, 특정 기준에 따라 정보를 분석하는 예제입니다.

log_file = open("access.log", "r")         # 로그 파일 열기

ip_count = {}                             # IP 주소별 요청 횟수를 저장할 딕셔너리
total_requests = 0                        # 총 요청 횟수

for line in log_file:
    if "요청 IP:" in line:
        ip = line.split(":")[1].strip()    # IP 주소 추출
        if ip in ip_count:
            ip_count[ip] += 1              # 이미 존재하는 IP 주소라면 요청 횟수 증가
        else:
            ip_count[ip] = 1               # 새로운 IP 주소라면 요청 횟수 초기화
    
    total_requests += 1                    # 총 요청 횟수 증가

log_file.close()                          # 로그 파일 닫기

# 분석 결과 출력
print(f"총 요청 횟수: {total_requests}")
print("IP 주소별 요청 횟수:")
for ip, count in ip_count.items():
    print(f"{ip}: {count}")

결론

이번 글에서는 Python을 사용하여 웹 서버에 로그 분석 기능을 추가하는 방법에 대해 알아보았습니다. 로그 파일을 생성하고 분석하여 웹 서버의 동작을 모니터링하거나 필요한 정보를 추출할 수 있습니다. 이를 통해 서버의 성능 개선이나 보안 강화 등의 작업에 도움을 받을 수 있습니다.

참고 문서: