(1) UTC시간 조정
(2) 국가식별
(3) 확장자 구분
(1) ~ (3) 까지 RAW로그를 이용해 추가로 분석할 데이터를 추출하는 방법을 알아보았다.
이제 Query를 이용해 분석할 수 있도록 몇개의 필드만 DB화 해보겠다.
변수 및 배열 | 필드 | 설명 |
logtime (logs[0] + logs[1]) |
logtime | 시간 데이터 |
logs[12] | useragent | 응답코드 (200 / 404 / 500 등 분석) |
logs[16] | scstatus | 용량 (용랑 큰 컨텐츠 검색) |
logs[19] | scbytes | 인입 에이전트 검색 |
logs[21] | timetaken | 응답시간 (웹 사이트 응답시간) |
extention | extention | 확장자 (통계 및 불필요한 접근 검색) |
country | country | 국가식별 (국내IP와 해외IP식별) |
* csuristem (컨텐츠)와 cip 등은 좋은 데이터지만 노출할 필요가 없어 제외
fromdatetimeimportdatetime
from datetime import timedelta
import sqlite3
import geoip2.database
reader = geoip2.database.Reader('C:\DB\GeoLite2-city.mmdb') # path
conn = sqlite3.connect(r'C:\log\weblog_sqlite3.db')
c= conn.cursor()
c.execute('''CREATE TABLE weblog
(logtime datetime, useragent VARCHAR(500), scstatus VARCHAR(20), scbytes INT(50), timetaken INT(50),
country VARCHAR(20), extension VARCHAR(20))''')
rows = c.execute('create index idx on weblog(logtime)')
with open(r'C:\log\sample.log', encoding='utf-8', errors='replace') as f:
lines = f.readlines()
for cnt, line in enumerate(lines,0):
logs = line.split(' ')
logtime = logs[0] + ' ' + logs[1]
try:
logtime = datetime.strptime(logtime, '%Y-%m-%d %H:%M:%S') - timedelta(hours=-9)
response = reader.city(logs[10])
country = response.country.iso_code
extension = logs[6].split('.')
c.execute('''INSERT INTO weblog VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s')'''
%(logtime, logs[12], logs[16], logs[19], logs[21], country, extension[-1]))
except ValueError:
pass
except IndexError:
pass
except geoip2.errors.AddressNotFoundError:
country = None
conn.commit()
c.close()
conn.close()
약 170만 건의 ROW가 정상 저장되었다.
'Python > Python for Windows' 카테고리의 다른 글
윈도우 2012 NTP 서버 구축 (4) - NTP 서버 설정 (0) | 2019.08.07 |
---|---|
윈도우 2012 NTP 서버 구축 (3) - 모니터링결과 메일 받기 (0) | 2019.08.07 |
윈도우 2012 NTP 서버 구축 (2) - 서버 시간 모니터링 (0) | 2019.08.07 |
python을 이용한 IIS web log 분석 (6) - 통계 분석 (0) | 2019.07.23 |
python을 이용한 IIS web log 분석 (4) - 파일 확장자 (0) | 2019.07.15 |
python을 이용한 IIS web log 분석 (3) - 클라이언트 IP 국가식별 (0) | 2019.07.15 |
윈도우 성능 데이터 분석 3부 - 사례를 이용한 grafana 시각화 (0) | 2019.06.26 |
[Python] 디렉토리(하위포함) 파일명 점검 하기 (0) | 2018.07.09 |