Cloudera CDH/CDP 및 Hadoop EcoSystem, Semantic IoT등의 개발/운영 기술을 정리합니다. gooper@gooper.com로 문의 주세요.
http://www.bicdata.com/bbs/board.php?bo_table=news_article&wr_id=89
로그 파일에 대해 Elasticsearch 사용하기
--------------------------------------------------------------------------------------------
로그를 저장하기 위해 Elasticsearch를 사용하고자 한다면, 이 문서를 통해서 Elasticsearch를 구성하는 방식에 대한 도움을 얻을 수 있다.
다수의 장비에서 로그를 수집하여 Elasticsearch에 저장하고자 한다면, 아래에서 하나를 선택해볼 수 있다.
Graylog2
Graylog2를 중앙 서버에 설치하면, Graylog2가 알아서 Elasticsearch에 로그를 저장해준다. 그러면 깔끔한 인터페이스를 사용해서 저장된 로그를 검색할 수 있다.Logstash
꽤 다양한 기능을 제공한다. 저장할 수 있는 로그의 종류(input)가 다양하며, 로그를 변환할 수 있는 방식(filter)도 많고, 변환된 로그를 저장할 수 있는 대상(output) 또한 다양하다. 무엇보다도 Elasticsearch에 직접 저장할 수 있는데, 이때 RabbitMQ의 Elasticsearch river를 사용할 수 있다.Apache Flume
플럼(Flume)을 사용하면 로그를 데이터소스(data source)로부터 수집한 후, 데코레이터(decoratro)를 사용하여 변환한 다음, 다양한 싱크(sink)를 이용해서 로그를 저장할 수 있다. 그중에서도 elasticflume sink를 살펴보라.rsyslog에 대한 omelasticsearch
output 모듈
어플리케이션 서버에서 rsyslog를 사용하여 로그를 Elasticsearch에 직접 저장하거나, 또는 중앙 서버에서 rsyslog를 사용하여 로그를 저장할 수도 있다. 또한 2가지 방식을 모두 활용할 수도 있다. 설정 방식에 대해서는 rsyslog 위키를 살펴보라.- 직접 구현
예를 들어 로그를 Elasticsearch에 저장하도록 커스텀 스크립트를 직접 만들어볼 수도 있다.
위의 방법 중 어느 방식을 사용하느냐에 따라 최적화 방식 또한 달라진다. 하지만 어느 방식을 사용하느냐에 관계 없이, 아래의 가이드는 도움이 될 것이다.
메모리와 열린 파일 갯수
인덱스의 갯수
인덱스 삭제 및 최적화
샤드와 복제본
매핑. _source과 _all
리프레쉬 주기
쓰리프트
비동기 복제
쿼리보다는 필터 사용하기
벌크 인덱싱하기