Rev. 2.73

Hummingbird는 리얼타임 웹 트래픽 분석 도구입니다. 방문자가 트래픽을 발생하면 현재 상황을 실시간으로 모니터링 할 수 있습니다. Node.JSSocket.IO 그click to start리고 MongoDB를 이용하여 만들어 졌으며, WebSocket을 이용합니다. 그래프를 갱신하는 주기는 초당 무려 20회입니다. 작동 방식은 간단합니다. 모니터링하려는 페이지에 Hummingbird가 만들어준 TrackginPixel 이라는 1px 이미지를 호출하면 됩니다. 아래에 적용한 것은 마우스 포인트 트래킹 커뮤니케이터인 Smails의 트래픽을 모니터링 하는 것이며 이 역시도 Socket.IO로 구현되었습니다. 결과가 상당히 흥미롭군요.

HUMMINGBIRD

explanation.pngClick to start

Hummingbird는 오픈소스 프로젝트입니다. GitHub에서 소스를 다운로드 할 수 있습니다. 사실 이녀석을 설치하는데 꽤나 애를 먹었습니다. 노드 패키지들도 상당히 오래된 것들이었고 MongoDB를 운영해야한다는 조건 때문에 구글님이 알려주신대로 아래와 같이 수행하여 MongoDB를 설치하고, 노드용 mongodb 패키지까지 설치하여 노드 서버를 구동하는데 까지 성공했습니다.

# w-get http://fastdl.mongodb.org/linux/mongodb-linux-i686-1.8.2.tgz
# tar zxvfp mongodb-linux-i686-1.8.2.tgz
# mv mongodb-linux-i686-1.8.2/bin/* /usr/bin
# mkdir /var/mongo
# mongod --dbpath=/var/mongo &
# ps -ef | grep mongo
# npm install mongodb

사용되는 Socket.IO의 버전이 0.6.16이더군요. 0.7.8로 업데이트 했더니 역시나 오류가 철철 넘칩니다. 관련 코드를 전부 0.7.8용으로 갱신했고, 쓸데없이 분리한 자바스크립트 파일들을 하나로 묶었으며, 크로스-도메인 요청에 응답하도록 작업하여 힘겹게 실행할 수 있었습니다. forever에 등록시켜 놓고 보니 이 프로젝트는 충분히 시간을 투자할만한 가치가 있다고 느껴지네요. 조금씩 기능들을 개선해 보도록 하겠습니다.

덧, UDP 서버를 활성화 하면 서버간 소켓 통신으로 트래픽 발생 상황을 Hummingbird에 알릴 수도 있으며 코스트가 훨씬 적게듭니다.

Updates:
* 2011/09/06 - GeoIP 라이브러리 및 모듈 업데이트
* 2011/09/06 - UDP 통신 데이터 속성 변경
* 2011/09/06 - 상호 작용 가능한 갱신 시간 및 스택 옵션화
* 2011/09/06 - Metric 단위로 데이터 통신이 발생하던 것을 하나로 통합
* 2011/09/06 - 서버-사이드 소스 코드들을 하나로 통합 및 경량화
* 2011/09/04 - UDP를 이용한 웹소켓 트래픽 측정 추가
* 2011/09/04 - 데시보드 및 관련 클라이언트 프로세스 제거
* 2011/09/04 - jQuery 의존성 제거
* 2011/09/03 - Socket.IO 0.8.2 업데이트
* 2011/09/03 - 초당 10회로 줄임
* 2011/09/03 - Metrics의 불필요한 코드 제거
* 2011/09/03 - 관련 페이지에 접속하면 UDP서버간 통신으로 데이터를 전송
* 2011/09/03 - 더이상 MongoDB에 데이터를 보존하지 않음
* 2011/08/25 - 클릭하여 허밍버드 시작
* 2011/08/22 - Smails에서 전송하던 트래픽을 삭제
* 2011/08/12 - bluemarble 지도로 변경하고 polymaps의 포인트 색상 변경

Comments

Got something to add? You can just leave a comment.

Your Reaction Time!

captcha

avatar