개인적으로 웹로그의 분석을 위해서 webalizer(:12)를 사용하고 있다. 그럭저럭 괜찮은거 같지만 Trend를 보여주기에는 부족함이 상당히 많은 툴이다. 변화량은 보여줄 수 있지만 그래프자체가 고정되어 있기 때문에, 이번주와 지난주의 비교와 같은 변화추이 Trend를 보여주는 기능이 빠져있기 때문이다.
최근에 QOS(:12) 관련된 업무를 시작하면서, 웹서비스의 Trend를 분석할 수 있는 툴의 필요성을 느끼게 되었다. 최초에는 Webalizer과 같은 프로그램을 사용해볼까 하고 생각했지만, 위의 문제로 충분하지 않다고 판단되어서 선택에서 제외하게 되었다. 또다른 방법으로 google:::analytics(:12)와 같이 분석하고자 하는 모든 페이지에 자바 스크립트를 심어서 데이터를 수집하고 분석하는 방식을 생각해보았다. 이 방법은 확실히 좋은 결과를 보여주기는 하지만 문제는 개발해야 될것과 고려해야 될사항이 너무 많다는점.
데이터 마이닝 수준에서 자료를 분석하는 툴을 만들어야 한다.
자바 스크립트등을 이용해서 클라이언트 정보를 보내는데, 이들 정보를 받는 서버 프로그램에 문제가 생길 수 있다. 관리 포인트가 하나 늘어난다는 얘기인데, 이는 꽤 심각한 이슈가 될 수 있다. 구글 같은 경우만 봐도 analytics 문제 때문에, 서비스 자체가 느리게 뜨는 경우를 심심찮게 볼 수 있다. 비동기적으로 데이터를 받아서 백그라운드에서 처리하는 등의 방식을 생각해내면 되겠지만, 골치아픈 문제가 되리란건 예상할 수 있다.
그래서 간단히 이용할 수 있는 다른 방법을 찾게 되었고, 평소 사용하던 RRD로 부터 해결책을 얻게 되었다. RRD를 이용하면, 저장된 데이터로 부터 손쉽게 Trend정보를 얻어낼 수 있다. 해서 겸사겸사 웹로그를 읽어서 1분단위로 counting한 정보를 RRD(:12)에 넣어서 웹서비스의 시간대/요일별 트랜드를 분석하기 위한 툴을 만들어보았다.
RRD 생성
다음과 같은 DS/RRA룰을 만들었다. 트랜드 분석의 경우 각 월의 주간단위 비교등이 가능해야 하기 때문에, 가능한 오랜시간동안 RAW 데이터를 쌓아둘 필요가 있다. 1분, 5분, 30분, 2시간, 2일의 데이터를 1년간 유지할 수 있도록 했다. 데이터의 양이 좀 커지긴 하겠지만, 그래봤자 80M 미만으로 1년에 이정도면, 그리 부담가지 않는 크기인듯 싶다.
다음은 정의된 DS, RRA룰이다. 저장 간격은 60초로 결정했다. 현재 저장된 웹로그를 보니, 가장 오래된게 2007/07/31 이였다. 현재 시간이 2007/9/6일이니, start 시간을 대략 오늘-40 으로 잡았다.
http://www.joinc.co.kr/modules/rrd/webhits.png
이렇게 해서 만들어진 그래프는 분석된 데이터를 정확하게 보여주기는 하지만, Trend를 보여주기에는 너무 들쭉날쭉 함을 알 수 있다. Trend를 좀 더 명확하게 보여주기 위해서는 Log 그래프화 시킬 필요가 있을 것이다. 그래서 다음과 같이 graph를 생성했다.
1
2
3
4
5
6
7
8
# rrdtool graph webhits2.png -s "-1 week" -t "Web Server Hits - This week vs Last week" -v "hitss/minute" \
여기에는 2개의 CDEF 가 추가되어 있다. 이것은 86400초(하루)단위로 트랜드를 보여주기 위한 용도로 사용된다. 이렇게 CDEF의 TREND로 다시 계산함으로써, 아래와 같이 일주일간의 트랜드를 보여주는 그래프를 완성했다.
http://www.joinc.co.kr/modules/rrd/webhits2.png
위의 그래프는 처음 그래프와 함께 보여줌으로써 스케일을 맞추기 위해서, 최근 Trend 데이터가 명확히 표시되지 않는다. 해서 최초 그래프를 제회하고, 최근 그래프만 뽑아서 보기로 했다.
1
2
3
4
5
6
7
# rrdtool graph webhits2.png -s "-1 week" -t "Web Server Hits - This week vs Last week" -v "hitss/minute" \
TREND를 위한 2개의 CDEF를 만들었다. 하나는 sliding windows의 크기를 하루, 다른 하나는 sliding windows의 크기를 일주일로 했다.
http://www.joinc.co.kr/modules/rrd/webhitsmon.png
아래는 일주일단위로 TREND만을 나타낸 그래프이다.
http://www.joinc.co.kr/modules/rrd/webhitsmon2.png
월간 트랜드의 변화를 확실히 알 수 있다. 33주째에 log hits가 줄어든건, 연휴 (광복절)이 끼어있었기 때문이다.
소개
RRD 생성
웹로그 Counting 프로그램 작성
Recent Posts
Archive Posts
Tags