[ELK] #2 log stash는 어떤 작업을 수행하나요? 나 : ?? 그냥 ES 전에 아닌가여 ..

송명규·2023년 5월 3일
0

무친단어장시리즈

목록 보기
4/4

ES는 검색 엔진를 접할때 자주 보는 개념이지만, Logstash는 log를 대략적으로 뭐.. 암튼 ES 전, Beat 이후 정도 .. 만 알고 있었다.

앞에서 ES는 어찌되었든 Storage라는 것을 알았다.
그러면 아무튼 Storage에 데이터를 넣어야 검색을 하고 분석을 하던말던 할 것이 아닌가?

logstash 바로 이녀석이 데이터를 넣어주는 녀석이다!

정의(logstash가 뭔가요?)

Logstash는 형식이나 복잡성과 관계 없이 데이터를 동적으로 수집, 전환, 전송합니다. grok을 이용해 비구조적 데이터에서 구조를 도출하여 IP 주소에서 위치 정보 좌표를 해독하고, 민감한 필드를 익명화하거나 제외시키며, 전반적인 처리를 손쉽게 해줍니다.

라고 공식 홈페이지에 적혀있다.(https://www.elastic.co/kr/logstash/)

간단히 말하면, 플러그인 기반의 실시간 데이터 수집 파이프라인이다.

더 쉽게 말하면, logstash는 복잡하고 다양한 데이터를 pipeline(inputs, filters, outputs)를 통해 ES에 쌓기 좋은 형태로 변환해서 전달해주는 녀석이다.

특징(logstash의 특징으로는 뭐가 있나요?)

logstash는 저 pipeline 혹은 pipelines가 가장 핵심적인 기능 및 특징이다.

위 그림은 logstash 파이프라인 구성 파일인데, 누가봐도 한번에 쓰임새를 알만큼 쉽다.

그 중 input과 output은 다양한 plugin을 사용하는데, 여기서 플러그인은 호스트 프로그램과 상호작용하며 호스트 프로그램은 돕는 프로그램을 말한다.(크롬의 번역기능 같은 녀석)

  • input의 자주 사용하는 입력 플러그인
    file : 리눅스의 tail -f 명령처럼 파일을 스트리밍하며 이벤트를 읽어 들인다.
    syslog : 네트워크를 통해 전달되는 시스로그를 수신
    kafka : 카프카 토픽에서 데이터를 읽어드린다.
    jdbc: JDBC 드라이버로 지정한 일정마다 쿼리를 실행해 결과를 읽어들인다.

  • filter의 자주 사용하는 입력 플러그인
    grok : grok 패턴을 사용해 메시지를 구조화된 형태로 분석한다. grok 패턴은 일반적인 정규식과 유사하나, 추가적으로 미리 정의된 패턴이나 이름 설정, 데이터 타입 정의 등을 도와준다.
    dissect : 간단한 패턴을 사용해 메시지를 구조화 된 현태로 분석한다. 정규식을 사용하지 않아 grok에 비해 자유도는 조금 떨어지지만 더 빠른 처리가 가능하다.
    mutate : 필드명을 변경하거나 문자열 처리 등 일반적인 가공 함수들을 제공한다.
    date : 문자열을 지정한 패턴의 날짜형으로 분석한다.

  • output의 자주 사용하는 입력 플러그인
    elasticsearch: bulk API를 사용해 엘라스틱 서치에 인덱싱을 수행
    file : 지정한 파일의 새로운줄에 데이터 기록
    kafka : 카프카 토픽에 데이터를 기록

추가적으로 파이프라인을 여러개 만들어서 다중 파이프라인을 구성할 수 있다!

또한 Dashboard 역시 지원 가능하다.

9600 포트에 logstash를 열고 접속하면, logstash에서 기본적으로 지원하는 Dashboard를 볼 수 있다.

위의 그림처럼 현재 로그 수집량, 타입별 수집량, outcome 별 포트 점유량, 프로토콜 등 다양한 정보를 볼 수 있다.

이유(왜 logstash를 쓰나요?)

1. 다양한 형태의 input를 받을 수 있다.

실제로 log나 데이터를 쌓을려면, 한가지 Source에서만 데이터를 받는 것이 아닌 다양한 input를 받아야할 때가 많다.

예를 들어, 우리 어플에서 맛집 데이터를 구성하기 위해 맛집 데이터를 받으려면
1. 네이버지도에서 위치, 별점
2. 네이버지도에서 사진
3. 구글 지도에서 위치, 별점
4. 구글 지도에서 사진
5. 우리 어플에서 별점, 시간대, 위치
6. 우리 어플에서 결제 정보

등등 정말 많은 데이터들이 다양한 형태로 쏟아진다.

logstash는 이것을 지속적으로 스트리밍 되는 형태로 수집할 수 있다!

2. 다양한 형태의 Transform 이 가능하다.

ETL 혹은 ELT의 T인 Transform을 다양한 형태로 가능하게 만들었다.
공식 홈페이지에서 자랑하는 logstash의 능력은 다음과 같다.

  • grok을 통해 비정형 데이터에서 구조 도출
  • IP 주소에서 위치 좌표 해독
  • PII 데이터의 익명화, 민감한 정보 필드 완전 제외
  • 데이터 소스나 형태, 스키마에 상관없이 전체적으로 손쉬운 처리

이처럼 input에 적절한 Transform를 가하여 이후 문제가 되거나, 연산해야할 것을 미리 처리한다!

3. 다양한 다운 스트림 지원

공식 홈페이지에서도, ES는 진짜 좋은 프로그램이지만 logstash는 다양한 다운 스트림을 지원한다고 적혀있다.

즉, ES말고도 csv, email, kafka, redis, s3 등 다양한 다운 스트림을 지원함으로써 ELK에서도 독립적으로 사용될 수 있다!

참고

https://www.elastic.co/kr/logstash/
https://sondahum.tistory.com/25
https://cornswrold.tistory.com/568

profile
안녕하세요

0개의 댓글