28 10월 2015 출시

Logstash 2.0.0 출시

By Suyog Rao

오늘 Logstash의 2.0.0의 출시를 발표하게 되어 기쁩니다! 새로운 버전 에는 일부 구성에 대한 기능의 획기적인 변경사항이 도입되므로 변경 이력 (changelog) 에서 자세한 정보를 확인하거나 획기적인 새 변경사항 도큐먼트를 확인하시기 바랍니다.

그 밖에 2.0.0 이전 버전의 변경사항은 예전 게시물에서 확인할 수 있습니다.

다음은 2.0 버전의 주요 변경사항의 요점을 정리한 것입니다.

Elasticsearch 2.0과 호환성

많은 새로운 기능과 개선 사항을 포함하고 있는 Elasticsearch 2.0은 오늘부터 사용할 수 있습니다. 이 버전과 Logstash 2.0은 바로 호환됩니다. 이전 버전 Logstash는 기본적으로 Java node 클라이언트를 사용하여 Elasticsearch과 통신하도록 설정되어 있습니다. 2.0은 기본적으로 HTTP 클라이언트를 사용하도록 설정됩니다. 따라서 사용자가 Elasticsearch를 통해 데이터를 수집, 강화, 저장 및 분석하는 작업을 원활하게 수행할 수 있는 환경을 제공할 수 있습니다.

HTTP는 나머지 프로토콜(node 및 transport)과 패리티 함수 관계이며(동시에 하나만 사용 가능합니다), 단일 클라이언트에 연결되었을 때 아주 조금 느려지지만 관리하거나 사용하기는 훨씬 쉬워집니다. HTTP 프로토콜을 사용할 때, 잠금 단계에서 Logstash를 업그레이드하지 않고도 Elasticsearch 버전을 업그레이드할 수 있습니다. 기본 설정으로 HTTP로 전환에 대한 자세한 내용(성능 번호 포함)은 beta1 블로그 에서 확인하시기 바랍니다.

나머지 (node 및 transport) 프로토콜도 계속 지원할 것입니다. 다만, 그러한 프로토콜을 사용하기 위한 plugin은 수동으로 설치해야 합니다.

bin/plugin install --version 2.0.0 logstash-output-elasticsearch_java

호환성 정보 표

아래 표에 Elasticsearch 버전과 Logstash의 호환성이 정리되어 있습니다.

matrix

Shield 2.0과 호환성

이 버전은 Elastic Shield 2.0과 호환됩니다. HTTP 프로토콜의 경우, 추가 plugin이 필요하지 않습니다. 여기에 설명된 문서의 지침을 따르십시오. transport 프로토콜의 경우, Shield 2.0 이상과 통합을 위해 별도 plugin을 설치해야 합니다.

bin/plugin install --version 2.0.0 logstash-output-elasticsearch_java_shield

성능 개선사항

이 버전에는 많은 분야의 성능 개선사항도 포함되어 Logstash로 데이터를 더욱 빠르게 처리할 수 있습니다. 몇 가지를 소개하면 다음과 같습니다.

  • UserAgent 및 GeoIP 필터: 두 필터 모두에 LRU 캐시를 추가하여 조회를 최적화하였습니다. 이는 웹 요청에서 흔히 보이는 IP와 사용자 에이전트가 종종 클러스터 시퀀스에 나타난다는 사실을 활용한 것입니다. UserAgent 필터의 경우, 샘플 데이터 세트에서 3.7x 정도의 향상을 확인했습니다. GeoIP에서는 성능이 기존 버전과 비교하여 1.69x 향상됩니다.
  • JSON 처리: Logstash에 사용되는 JSON 직렬화/역직렬화 라이브러리인 JrJackson의 새로운 버전으로 업데이트하였습니다. 몇 가지 수정사항 외에, JSON으로 작업할 때 성능도 향상됩니다.
  • 향상된 필터 작업자 기본값: 이전 버전에서는 filter_worker 설정이 기본적으로 1로 설정되었습니다. 즉, 한 작업 프로세스만이 필터 단계로 들어가는 이벤트를 처리할 수 있었습니다. 이제는 filter_workers 의 설정이 시스템 CPU 코어의 1/2로 설정됩니다. 작업 프로세스 수가 늘어나면 병렬 방식의 필터 실행이 지원됩니다. 이는 복잡한 grok 패턴이나 useragent 필터와 같이 부하가 심한 처리를 수행할 때 매우 중요한 장점입니다.

Filebeat 지원

아실지 모르겠지만, 최근에 차세대 Logstash Forwarder 인 Filebeat 베타 버전을 출시하였습니다. Filebeat는 처리를 위해 파일 기반 로그를 Logstash로 전송하는 에이전트입니다. 2.0.0 버전은 logstash-input-beats plugin을 사용하여 Filebeat 1.0.0-beta4 버전과 바로 호환됩니다.

시스템 종료 처리

이전 버전 Logstash에서는 시스템 종료가 시작될 때 예외 메커니즘을 사용하여 plugin에 시스템 종료를 시작하라는 신호를 보냈습니다. plugin이 빈번히 타사 코드를 사용하기 때문에 이 방식에는 문제가 있었습니다. Logstash가 예외를 처리하는 방법을 모르는 경우에 종종 예기치 못한 동작이 일어나고는 했습니다. 그래서 각 plugin에 시스템 종료 이벤트 신호를 전달하여 plugin 자체가 정상 종료를 수행할 수 있도록 하기 위한 API 호출(예: stop)을 추가하여 문제를 해결하였습니다. 즉, 새로운 API를 위해 Logstash 생태계에서 200개 이상의 plugin을 업데이트하는 과정을 밟았습니다! 아직 Logstash 종료 문제가 완전히 해결되지는 않아서 정지 상태 출력이 여전히 종료를 지연시키기도 하지만 2.0 버전에 획기적인 API 변경사항을 포함시켰고, 관련 버전의 수정에서 반복 작업을 시작할 수 있습니다.

Plugin 개발자: Logstash 1.5 Plugin 개발자인 경우, 획기적인 변경사항 도큐먼트에서 시스템 종료와 관련된 새로운 API 목록을 확인하시기 바랍니다. 또한 example input repo에서도 새로운 시스템 종료 메커니즘 사용 방법을 보여주는 샘플 코드를 소개하고 있습니다.

문서

2.0 버전과 모든 plugin에 대한 업데이트 문서는 여기에서 확인할 수 있습니다. 구성 변경사항에 대해서 이 문서를 참조하시기 바랍니다.

2.0으로 업데이트

2.0으로 업데이트하기 전에 참조 문서의 업데이트 가이드 를 참고하시기 바랍니다.

피드백

2.0 버전의 성공적인 출시에 기여한 분들과 사용자 여러분께 깊이 감사드립니다. 모든 출시 전 테스트와 수많은 패치들도 새 버전 출시에 큰 힘이 되었습니다. 당사 로드맵 을 팔로우하여 향후 개선사항, 새로 출시되는 버전 등에 관한 정보를 놓치지 마시길 바랍니다. 그리고 2.0 버전을 오늘 실행해보시고 의견을 남겨주시기 바랍니다!