Logstash 5.0.0 출시
Logstash 5.0.0이 출시되었습니다. 잠시만요. 뭐라고요? 5.0.0이라고요? 예! 최신 버전은 5.0.0입니다. Elastic{ON} 2016 중에 있었던 저희 발표를 놓치신 분들께 알려드리자면, Elastic Stack의 모든 구성 요소를 단일 버전으로 정리하기로 했습니다. 따라서, 5개의 알파, 1개의 베타, 그리고 1개의 RC를 거쳐 지금까지 역대 최대 메이져 릴리스가 된 Logstash 버전 공개를 발표하게 되어 기쁩니다. 그리고 Logstash 뿐만 아니라, 전체 Elastic Stack도 신규 출시를 축하하는 상태에서 모든 것을 즉시 체험해 보실 수 있도록 Elastic Cloud 에 공개됩니다.
출시일까지 기다릴 수 없다면 지금 바로 다운로드 페이지를 방문하십시오. 단, 중요 변경 사항 목록을 꼼꼼히 읽어보시기를 권장합니다. 전체 릴리스 노트는 여기에서 확인하실 수 있습니다.
주요 변경 사항
이전 버전에서 업그레이드하기 전에 여기 있는 주요 정보 를 읽어보시기 바랍니다.
하이라이트
이번 릴리스에서 Logstash와 관련하여 중요한 주제는 셀프 서비스 문제 해결의 지원이었습니다. 성능 개선은 모든 릴리스에서 우리가 주요하게 여기는 주제이며, 5.0.0에서는 전반적으로 성능이 크게 개선되었습니다. 아래에서 이번 릴리스의 주요 기능을 확인하실 수 있습니다.
Logstash는 더 이상 블랙박스가 아닙니다
새로운 모니터링 기능을 사용하면 Logstash 파이프 라인 및 플러그인 실행시의 상황을 파악할 수 있습니다. 이 구성 요소는 Logstash가 데이터를 처리하는 동안 다양한 운영 메트릭을 수집하며, 이 모든 정보는 간단한 API를 이용해 쿼리할 수 있습니다. 대부분의 API는 Elasticsearch 이후에 모델링되었으며, 우리는 엔드포인트는 물론 JSON 응답까지 고려하여 구성되어야 할 항목을 평가했습니다. 모니터링 API는 크게 다음과 같은 영역으로 구분할 수 있습니다.
- 노드 정보 API: Logstash 인스턴스와 JVM와 같은 환경에 관한 static 정보, OS 레벨 정보 등.
- 플러그인 정보 API: 현재 설치되어 있는 모든 Logstash 플러그인에 관한 정보 수집.
- 노드 통계 API: 단계에서 처리되는 이벤트, CPU 및 시스템 통계와 같은 다양한 런타임 통계.
- Hot Threads API: CPU를 계속 사용 중인 Logstash 부하 확인.
자세한 내용은 참조 문서 를 참조하십시오.
로깅 개선
Logstash 내부 작업에 대한 가시성 향상이라는 과제를 수행하는 과정에서, Logstash의 내부 로깅 프레임워크를 향상시켰습니다. 우선, 인기 있는 Java 로깅 라이브러리인 Log4j2로 전환했습니다. 이제 사용자는 단일 플러그인 수준까지 세분화된 로그를 얻을 수 있습니다. log4j2.properties 파일을 수정하고 Logstash를 재시작하면 세분성과 로그 수준을 향상시킬 수 있지만, 번거로운 작업과 불필요한 가동 중지 시간이 초래됩니다. 그 대신, API를 이용해 로그 수준을 동적 업데이트할 수 있습니다. 이 설정은 바로 사용 가능하며 재시작할 필요가 없습니다. Log4j2로의 전환으로 얻을 수 있는 또 다른 이점은 properties 파일을 이용해 파일 로테이션 정책을 바로 구성할 수 있다는 점입니다.
성능: Java Event
이번 릴리스에서는 Logstash 파이프라인 인프라의 중요 부분을 Java로 완전히 다시 작성했습니다. Logstash의 데이터 흐름은 내부 Event 객체를 통해 캡슐화되었다가 플러그인으로 전달되고 나중에 조건, 필드 참조 조회에 사용되므로 디스크에 남게 됩니다. 그러면 이는 사용자에게는 어떤 의미일까요? 우리의 성능 테스트에서는 여러 설정에 걸쳐 처리량이 지속적으로 향상되었습니다. 몇몇 경우에는 Logstash 이벤트 처리량이 최대 75% 높아진 경우도 있습니다.
플러그인 개발자이거나 사용자 정의 플러그인을 유지하고자 하는 경우에는 이 섹션 을 읽고 새 플러그인 API에 기존 코드를 적용하는 방법을 알아보시기 바랍니다.
사용 용이성
설정 파일: 이제 사용자는 커맨드 라인를 사용하는 대신에 설정 파일 logstash.yml에서 Logstash 옵션을 설정할 수 있습니다. 예를 들어, 파이프라인 설정, 구성 파일의 위치, 로깅 옵션을 하나의 파일에 지정할 수 있습니다.
배포 패키지: 이번 버전에서는 Logstash 배포 패키지(Debian, RPM)가 완전 개조되었습니다. 기존의 Logstash는 /opt/logstash 디렉터리를 사용해 바이너리를 설치한 반면, Elasticsearch는 /usr/share와 /var를 사용했습니다. 5.0.0 릴리스에서 자주 듣게 될 테마인 제품 스택간의 일관성을 위해 Logstash 가 Elasticsearch RPM 및 DEB 레이아웃을 반영하도록 변경했습니다. 또한, *nix 플랫폼에서 LaaS(Logstash as aservice) 를 실행하기 위해 시스템 및 업스타트 지원도 추가했습니다.
향상된 통합과 새로운 플러그인
Elasticsearch 출력: 이 플러그인은 Elasticsearch 5.0.0에 바로 사용 가능합니다. 최근 파이프라인 아키텍처에 가해진 변경 사항을 더 잘 활용할 수 있도록 스레드 안전성을 향상시켰습니다. 그 외 향상된 점은 Elasticsearch 연결을 효율적으로 재사용할 수 있는 새로운 연결 풀, 연결 재시도를 위한 exponential backoff, 스니핑 처리 성능 향상이 있습니다.
참고: Logstash 5.0은 Elasticsearch 5.x, 2.x, 는 물론 1.x. 과도 호환됩니다.
Kafka 0.10 지원: 새로운 보안 기능들(SSL, 클라이언트 기반 인증, 액세스 제어), 개선된 소비자 API 등이 적용된 Apache Kafka 버전 0.9 및 0.10이 몇 달 전에 출시되었습니다. 이번 Logstash 릴리스는 Kafka의 SSL 암호화 및 클라이언트 인증 기능을 별도의 설정 없이 바로 지원합니다.
dissect 필터 도입: 비정형 데이터에서 필드를 추출하는 것은 Logstash의 인기 기능입니다. 지금까지, Grok 필터가 유일한 필드 추출 방법이었습니다. Grok은 내부의 정규식을 사용하며, 사용자가 식 때문에 고생할 여지가 많았습니다. 즉, 단순한 필드 추출에 Grok을 사용하는 것은 호두를 깨는데 거대 망치를 사용하는 것과 같은 것이었습니다. Dissect 필터는 구분기호 분할(delimiter splitting)을 사용하여 데이터의 추출이 가능합니다. 정규 표현식은 사용하지 않고 말이죠. 이는 구조를 잘 알고 있는 로그 줄에서만 dissect가 작동한다는 의미이기도 합니다. Grok을 대체할 수는 없지만, dissect 필터를 유용한 보완 수단으로 사용 가능할거라 기대합니다.
Google Protobuf 코덱: protobuf 메시지를 구문 분석하고 Logstash 이벤트로 전환할 수 있는 새로운 코덱. Inga Feick 를 제공합니다.
언어 필터: 특정 필드의 언어를 감지합니다. Elasticsearch에서 올바른 analyzer를 설정하기 위한 경우 등에 사용할 수 있습니다. Justin Bovee 로 부터 제공을 받았습니다.
시험판
각 5.0 시험판에 대한 블로그 게시물은 여기에서 확인하실 수 있습니다.
Logstash 5.0.0-alpha1 출시
Logstash 5.0.0-alpha2 출시
Logstash 5.0.0-alpha3 출시
Logstash 5.0.0-alpha4 출시
Logstash 5.0.0-alpha5 출시
Logstash 5.0.0-beta1 출시
피드백
Logstash 5.0.0는 사용자 커뮤니티의 기여, 피드백, 의견, 향상 요청이 없었다면 탄생하지 못했을 방대한 노력의 산물입니다. 5.0.0 제작에 도움을 주신 멋진 플러그인 제작자들에게 특별히 감사드립니다. 파이어니어 프로그램에 참여하신 분께는 곧 개발자 커뮤니티 팀에서 연락을 드릴 것입니다. Logstash를 사용하고 기여해 주신 사용자 분들께 Logstash 팀에서 감사의 인사를 전합니다.
이제 새로운 5.0.0을 이용해 보시고 사용 후기 를 남겨주세요. 즐거운 stashing 되시길 바랍니다!