1.1.2 Logstash

이 문서의 허가되지 않은 무단 복제나 배포 및 출판을 금지합니다. 본 문서의 내용 포함된 자료를 인용하고자 하는 경우 출처를 명시하고 김종민(kimjmin@gmail.com)에게 알려주시기 바랍니다.
데이터 집계, 변환, 저장 파이프라인 - https://www.elastic.co/kr/products/logstash

조던 시셀(Jordan Sissel)에 의해 탄생된 Logstash는 원래 Elasticsearch와 별개로 다양한 데이터 수집과 저장을 위해 개발된 프로젝트였습니다. 데이터의 색인, 검색 기능만을 제공하던 Elasticsearch는 데이터 수집을 위한 도구가 필요했는데, 때마침 Logstash가 출력 API로 Elasticsearch를 지원하기 시작하면서 많은 곳에서 Elasticsearch의 입력 수단으로 Logstash를 사용하기 시작했습니다. Elasticsearch와 Logstash는 서로 통합의 필요성을 느끼고 Logstash가 Elastic에 정식으로 합류하게 되어 하나의 스택으로 출범하게 되었습니다.

Logstash는 JRuby로 되어 있습니다. 루비 코드로 개발되어 자바의 런타임 머신 위에서 돌아갑니다. Elasticsearch와 마찬가지로 Apache 2.0 라이센스를 따르고 있어 자유롭게 사용이 가능합니다. Logstash는 데이터 처리를 위해서 크게 다음과 같은 과정들을 거치게 됩니다.

입력(Inputs) ➡️ 필터(Filters) ➡️ 출력(Outputs)

입력 기능에서 다양한 데이터 저장소로부터 데이터를 입력 받고 필터 기능을 통해 데이터를 확장, 변경, 필터링 및 삭제 등의 처리를 통해 가공을 합니다. 그 후 출력 기능을 통해 다양한 데이터 저장소로 데이터를 전송하게 됩니다.

Elasticsearch외에도 다양한 경로의 출력이 가능하기 때문에 Elasticsearch에 데이터를 색인하는 동시에 로컬 파일이나 아마존 AWS S3 저장소로 동시에 송출도 가능합니다. 그리고 Elasticsearch와 상관 없이 Redis의 데이터를 Kafka로 전송하는 경우 등과 같이 독자적으로 사용되기도 합니다.

지금은 로고 모양이 Elastic Stack 전체와 어울리는 모양으로 바뀌었지만 Logstash의 예전 로고는 통나무(log)가 콧수염(mustache)을 달고 있는 친근한 모습이었습니다. Log라는 영단어는 통나무 그리고 시계열 기록 이라는 이중적인 의미를 가지고 있고, 로고에는 콧수염으로도 표현되었지만 실제 stash라는 단어는 물건을 어딘가에 쌈(보관)하다는 의미를 가지고 있어 Logstash라는 이름은 이 도구가 하는 역할을 더할 나위 없이 잘 표현하는 이름입니다.

Logstash 옛 로고