본문 바로가기
카테고리 없음

ELK(Elastic + Lostash + Kibana) Elastic Stack

by Younji! 2016. 6. 25.

                               

               

- Elasticsearch

점점 많아지는 문제를 해결하는 분산형 RESTful 검색 및 분석 엔진


- Logstash : 데이터 집계, 변환 및 Stash

오픈 소스 서버측 데이터 처리 파이프라인으로 다양한 소스에서 동시에 데이터를 수집하여 변환한 후 자주 사용하는 보관소로 보냄


- Kibana

Elasticsearch 데이터를 시각화하고 Elastic Stack 탐색 지원


 

위 세개의 제품 외에 Beats라는 경량화된 데이터 수집기를 사용하여 Logstash 또는 ElasticSearch로 전송한다.


위 오픈 소스들을 통틀어 Elastic Stack이라고 부른다.


 현재 회사 서비스가 늘어나면서 관리하는 WAS 개수도 증가함에 따라 에러 로그를 검색 또는 오류 추이를 분석하여 확인하기가 어려웠다. 물론 Scouter APM / 제니퍼를 사용하여 실시간으로 에러를 확인하고도 있었지만, 모든 WAS의 데이터를 검색 또는 시각화하여 보기에는 어려움이 있어 Elastic Stack을 적용하였다.


일단 ES cluster를 다음과 같이 구성했다. 

 


 Master node 

 es-server01

 Data node 

 es-server02, es-server03 

 Client node 

 es-server04 



각 노드의 구성은 https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html#coordinating-node 링크를 참고하면 된다.


추후에 가능하면 마스터 노드를 하나 추가하여야할 것 같다. 


실시간으로 데이터 수집이 필요하지 않아 하루전 데이터 수집 및 변환하여 로그 분석용 및 검색기로 사용하고 있다.


WAS마다 계정의 아이디/비번을 입력해야하는 이슈가 있어서 AntBuilder로 WAS 간 scp 로그 이동을 하였다. 


def ant = new AntBuilder()


def doScp(_ant, _ip, _filename, _service, _was_num, localdir, _pwd) {

 def localFileNm = _filename


 

_ant.scp(file: _ip + _service + _filename,

localTofile: localdir + localFileNm + _service + _was_num,

verbose: false, , password : _pwd)

}



서비스별로 로그 패턴을 정규식으로 정의하여 elasticsearch에 데이터를 수집하여 아래와 같이 데이터를 시각화하였다.


 



********

 최근에 SVN 접속 기록이 필요했다. SVN ACCESS MANAGER가 제공되고 있었지만, 계정들을 DB화해서 사용하고 있지 않아 아파치 로그를 정규식 패턴을 사용해 es 로 옮겨 아래와 같이 간단히 처리했다.


input {

        file {

                path => "../apache2/logs/...log"

        }

}


filter {

        grok {

                patterns_dir => ["../patterns"]

                match => {"message" => "\[%{HTTPDATE:loginDate}\] %{USERNAME:userId} %{WORD:action}"}

        }

}


output {

        elasticsearch {

                hosts => ["http://elasticsearch.."]

                codec => "json"

                index => "...-log-%{+YYYY.MM.dd}"

        }

}



댓글