로그수집

서비스를 하면서 고민하는 것들 중에 통계가 있습니다. 통계의 사용처는 다양하지만 그중에 과금 이슈와 사용자의 요청에 따라 데이터를 분석하기 위함 입니다. 서비스를 하면서 발생하는 수 많은 통계 자료는 사전에 분석하고자 하는 데이터를 규정해야 분석하고 싶은 데이터 형태로 가공해서 저장할 수 있습니다.

결론은 로그를 수집해서 통계를 만드는 과정에는 반드시 얻고 싶은 결과를 알고 있어야 한다는 것입니다. 그러나 어떤 모든 일을 사전에 알고 시작하기는 힘듭니다. 그래서 요즘 뜨는 기술들이 bigdata를 활용해 모든 로그를 저장하고 필요에 따라 원하는 데이트를 즉시 검색하는 기술들이 뜨고 있습니다.

Kollus뿐만 아니라 해외 유명 OVP 사업자들 또한 이런 솔루션을 사용하고 있습니다. 우얄라(ooyala), 브라이트코브(britecove)등도 같은 고민을 했겠죠. OVP 플랫폼에서는 동영상 뿐많이 아닌 서비스를 위한 기반 시스템 로그와 사용자들의 동영상 이용을 추적하기 위한 로그들도 함께 발생하고 이때 발생하는 로그들을 가공해서 서비스를 이용하는 고객에게 제공하기도 합니다. 그만큼 많은 데이터가 발생하고 있고 이런 데이터를 분석하고 저장하는데 bigdata를 이용하고 있습니다.

Bigdata를 활용하게 되는 이유는 간단합니다. 서비스에서 생성되는 다양한 형태의 모든 로그를 시스템에 저장시키고 필요할때 검색해서 결과를 얻기 용이하기 때문입니다. bigdata는 로그 수집 후의 예기이니 여기서는 덮어놓고 본론으로 들어가겠습니다.

서비스를 하기 위해 사용되는 다양한 시스템은 서로 다른 로그와 이벤트를 발생 시키고 운영되는 장비(서버)또한 한 대가 아니 다수로 구성되어 있을 것입니다.
이렇게 생성되는 로그를 분석하기 위해서는 우선 로그를 한 곳으로 모으는 작업을 할 필요가 있습니다. 물론 데이터를 모으는 과정에서 그 데이터를 줄이는 작업이나 사전 분석을 일부 수행하기도 합니다.

데이터를 모으기 위해 프로젝트를 수행해서 프로그램을 만들 수도 있겠지만 오픈소스로 사용되고 있는 몇 가지 프로그램을 이용해 데이터를 수집할 수 있습니다. 그중에 logstash와 Apache Flume은 많이 알려져 있는 프로젝트들 입니다. 그중에 logstatsh는 사용법이 간단한 것 같습니다. 로그 수집을 위한 솔루션을 찾을 때 고민하던 내용이 몇 가지 있습니다.

– 다양한 서버에서 발생하는 다양한 형태의 로그를 한 곳으로 수집하는 방법.
– 로그 분석 시스템의 이상 동작이 발생했을 때 예외 처리를 위한 방법.

위 내용 이외에도 여러가지 고민이 있겠지만 초기에는 다수의 로그를 큰 부담 없이 수집하는데 목적이 있었기 때문에 logstash를 이용하기로 하고 시스템을 구성해보기로 했습니다.
logstash는 시스템에서 발생하는 로그는 감시하고 발생하는 로그를 분석해서 원하는 곳으로 데이터를 보내는 일까지 한꺼번에 할 수 있습니다.

로그분석_logstash 01

 

이러한 과정을 정의하는 logstash의 configure파일은 크게 input / filter / output으로 나뉘어 있습니다.

로그분석_logstash configure파일 02

 

각 항목은 이미 정의된 다양한 function으로 데이터를 분석하기 편리하게 되어 있습니다.
input에서는 파일로 만들어지는 로그는 file로 socket으로 데이터를 받을 수도 있고 그 형태가 20~30가지 정도 됩니다. 사용되는 솔루션 별로 로그의 형태가 다르다면 filter를 이용해 데이터 분석 및 재정의가 가능합니다. output은 분석된 데이터를 원하는 다양한 시스템에 저장 시키도록 정의할 수 있습니다. 물론 복수로 지정 됩니다.

현재 kollus에서는 분석이 필요한 서버들에 logstash를 설치하고 해당 데이터를 한 곳으로 모아 bigdata로 데이터를 저장해서 분석하고 있습니다.
각 서버에서 발생하는 로그는 거의 실시간으로 중앙 서버로 수집되고 분석되어 상황에 대처할 수 있는 기반이 만들어져 있습니다.

이렇게 수집된 많은 로그는 지금도 계속 분석되어 저장되고 있고 고객의 눈높이에 맞는 다양한 방법으로 가공되기 위해 저장되고 있습니다.

Written by 이경윤 @ 카테노이드 연구소

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.