-
[시스템관리자의 파이썬 활용기] IIS 웹 로그 파일 분석ETC 2021. 2. 5. 13:56
요즘 파이썬의 인기는 너무 좋다. 개발자들 비롯한 다양한 직군에서 활용도가 높아 그러하리라 싶다.
시스템을 운영하시면 파이썬은 여러모로 유용하게 활용할 부분이 많은데. 오늘 포스팅은 IIS 웹 로그 분석을 하고, 간단하게 시각화를 하려 해보려 한다.
최근 웹 로그시스템을 점검하다 보니, 특정시점부터 로그 용량이 많이 줄어들었다. 보통 이런 상황이면, 서비스 이관되었거나 종료되었을 수 있다. 서비스 운영에 보통 IT부서와 서로 유기적인 소통은 필수적이지만 그렇지 못한 상황도 있기 마련이다.
IT쪽에서도 서비스 대한 모니터링이 필요하며 웹의 경우 웹로그를 통해 서비스 상태를 대략적으로 파악할 수 있다.
아래 코드는 날짜별로 readlines()를 이용하여 파일을 읽어 날짜별로 SC (Server → client) 용량의 합을 구하는 코드이다.
readlines는 모든 라인을 읽어들여 리스트 객체로 전환하는 파일 입출력 메소드이다. 로그용량이 크면 메모리도 많이 사용하므로
이를 고려해야한다.
Pandas를 이용하면 colume과 row를 DataFrame으로 변환하여 더 빠른 처리를 기대할 수 있지만 이번 포스트팅 readlines만 사용한다.
# glob : 디렉토리 안에 있는 파일 리스트 # timedelta : IIS UTC +9 시간 (한국타임) import glob from datetime import datetime from datetime import timedelta dct = {} for file in glob.glob('*'): with open(file, encoding='utf-8', errors='replace') as f: lines = f.readlines() for i in lines: if i[0][0] == '#': pass else: i = i.split(' ') # date와 time 컬럼을 합쳐서 datetime 객체로 변경 한국시간에 맞게 +9시간 logdate = datetime.strptime(i[0]+' '+i[1], '%Y-%m-%d %H:%M:%S') logdate = logdate + timedelta(hours=9) logdate = str(logdate).split(' ')[0] if i[19] == '-': pass else: if logdate not in dct: dct[logdate] = int(i[19]) else: dct[logdate] += int(i[19]) dct
간단히 롤리팝 그래프를 이용하여 시각화하였다. 시각화는 matplotlib 모듈을 사용, 시각화를 하면 내용을 공유하기도 좋고, 보고서에 참고자료로 활용할 수 있다.
'ETC' 카테고리의 다른 글
[ Zabbix ] IIS 성능 지표 (0) 2021.10.27 [ PostgreSQL ] 데이터베이스 백업 및 복구 (0) 2020.01.02 [ PostgreSQL ] CentOS 7 install (0) 2020.01.02 Supported HPE Sever Linux distribution. (HPE서버 리눅스 지원 확인 페이지) (0) 2019.10.11 인터넷이 끊겼을 때 크롬 브라우져 공룡 달리기 (0) 2019.08.07 부천페이 사용 후기 (2) 2019.04.05 부천페이 소개 (0) 2019.03.22 빅데이터 국가 자격증 (빅데이터분석기사) 신설 (0) 2019.03.19