모니터링 툴이 없는 상황에서 어떤 화면이 많이 호출되었는지를 확인하는 것은 쉽지 않다. 하지만 웹 서버만 있다면 이 문제애 대한 답을 찾을 수도 있다. 바로 웹 로그(일명 Access log)를 사용하여 시스템을 분석하는 방법이다. 상용 툴을 이용하여 분석하는 방법도 있지만, 무료 툴을 사용해도 시스템을 분석하는 데는 큰 지장이 없다.
아파치나 Nginx, iPlanet과 같은 웹 서버에 공통적으로 제공되는 기능이 웹 로그이다.
서버에 어떤 사용자가 어떤 요청을 하였고, 결과가 어떠한지 파일에 한 줄씩 쌓아 준다. 사이트 규모 및 사용자의 양에 따라서 로그가 많이 쌓이는 사이트도 있고, 그렇지 않은 사이트도 있다. 일반적인 웹사이트의 경우 사용자가 많으면 기가바이트 단위로 웹 로그가 쌓이게 된다. 이렇게 로그가 많이 쌓이는 이유는 웹 서버에서는 모든 요청에 대한 로그를 쌓기 때문이다. 한화면을 구성하는 이미지, CSS, 자바스크립트, 플래시 파일 등 모든 파일에 대한 요청의 결과가 이 로그 파일에 쌓인다. 대부분 하나의 클라이언트에서 동일한 파일을 한 번 다운로드 받으면 304라는 리턴 코드를 제공한다. 그래서 다시 다운로드 받지는 안히만, 서버에는 변경 되었는지 확인하는 요청을 하므로, 이러한 내용도 하나하나 모두 로그에 남는다.
웹 로그가 어떻게 구성되어 있는지 아파치 웹 서버의 웹 로그 설정 부분을 참고하여 알아보자. httpd.conf 파일을 보면 로그 포맷(LogFormat)이라는 부분을 찾아보자. 로그 포맷 설정은 다음과 같이 되어 있다.
LogFormat: "%h %l $u %t \ "%r\" %>s %b" common
위와 같이 % 뒤에 표시하고자 하는 데이터의 지시어를 지정하도록 되어 있다. 쉽게 이해할 수 있도록, 위와 같은 설정에서 어떻게 로그가 나타나는지 확인해 보자.
127.0.0.1 - - [22/Oct/20XX:14.04.43 +0900] "GET /a.gif HTTP/1.1" 200 2326
각 항목이 의미하는 내용을 알아보면 다음과 같다.
여기에 설명되어 있는 로그 포맷은 표준 포맷으로, 어떤 웹 서버를 사용하더라도 대부분 동일하다. 그런데 여기서 기본 웹 로그의 단점을 알 수 있다. 이 로그만 갖고는 성능에 대한 아무런 데이터를 얻을 수 없다는 것이다. 어떤 URL이 언제 요청되었다는 것만 알아도 도움이 되긴 하지만, 우리는 더 많은 데이터를 원한다.
이때 로그 포맷이 %D와 %T를 추가하면 어느정도 갈증을 해소할 수 있다. 이 두개의 옵션을 간단히 알아보면 다음과 같다.
가장 정확하게 분석하기 위해서는 %D 옵션을 사용하는 것을 권장한다.
- 초 : 우리가 일반적으로 이야기하는 초이다.
- 밀리초 : 1/1,000 초를 의미한다.
- 마이크로초 : 1/1,000,000 초를 의미한다.
- 나노초 : 1/1,000,000,000 초를 의미한다.
또한 무료 웹 로그 분석 툴 중에서 권할 만한 툴은 세 가지이다.
무료 툴이지만, 각 툴이 제공하는 기능은 막강하다. 여기 명시된 툴 중에서 가장 최근까지 업데이트된 툴은 AWSStats이다. 다음과 같은 기능들을 제공한다.
어떻게 보면 웹 로그가 각 요청별로 간단하게 한 줄일 수도 있지만, 이 한 줄로 이와 같은 통계 자료를 뽑아낼 수 있다.
구글에서 제공하고 있는 'Google 애널리틱스'도 웹 사용자 통계를 제공하는 막강한 무료 툴 중 하나이다. 하지만 이 툴은 웹 로그 기반의 툴은 아니라, 접근하는 모든 페이지(혹은 모든 페이지가 불리는 공통 페이지)에 정보를 전달하는 자바 스크립트 코드를 넣고 구글 서버에 데이터를 쌓는 방식이다. 그러므로, 모든 정보는 구글에 위치하기 때문에, 개인 홈페이지가 아닌 회사의 서버에 구글 애널리틱스를 설치하면 회사의 사용량 정보가 유출될 우려가 있다. 이러한 문제를 해결하기 위해서 만들어진 Piwik(http://piwik.org/)이라는 오픈 소스가 있다.
Piwik은 오픈소스로 제공되는 웹 페이지 접근 통계 툴이며, 일반 브라우저 뿐만이 아니라 안드로이드나 아이폰 등 모바일 기기에서도 데이터를 확인할 수 있다.
Piwik에서 제공하는 기능은 500가지가 넘는데, 그중에서 주요 기능은 다음과 같다.
그리고, Piwik에서 제공하는 막강한 기능 중 하나는 바로 플러그인을 제공한다는 것이다. Jenkins, Sonar 등 개발과 연관된 웹 페이지에서 사용할 수 있는 플러그인 분만이 아니라, PHP, Java, python, django, Grails, Ruby, Obective-C, node.js 등 여러 언어에서 사용할 수 있는 API도 제공한다.
그렇다면, 이런 기능을 제공하는 Piwik을 회사 서버에 설치해서 사용하려면 어떤 것들이 준비되어야 할까? 당연히 데이터를 수집하는 수집 서버가 필요할 것이다. 수집 서버의 기본 요건은 다음과 같다.
간단하게, Piwik 서버를 설치하는 절차를 살펴보면 다음과 같다.
1) Piwik 소스 다운로드 및 압축 해제
2) 브라우저를 열어 Piwik 페이지 접근한다. 이제부터는 웹 페이지에서 버튼(Next)을 눌러 넘어가면 되는데, 이 때 서버의 설정 등을 변경해야 할 필요가 있다. 그러므로, 터미널 창을 열어 권한 변경 작업을 수행해야 한다.
3) 시스템 체크(필요 모듈 및 디렉터리 권한 확인)
4) 데이터베이스 설정
5) 사용자 계정 설정(아이디와 패스워드를 지정한다.)
6) 통계를 수집하고자 하는 웹페이지의 정보 입력
7) 통계를 수집하고자 하는 웹 페이지에 추가할 JavaScript 코드를 확인하고, 해당 스크립트를 복사하여 </body> 태그 앞에 붙여 넣는다.
8) Piwik을 통한 결과 확인
참고