본문 바로가기
컴퓨터

👨‍💻 [Elastic] 엘라스틱 스택 (Elastic Stack) 의 구성 요소 중 Logstash 의 역할과 활용법은 어떻게 되나요?

by 밝음의기둥 2024. 11. 28.
반응형

👨‍💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.

엘라스틱 스택 (Elastic Stack) 의 구성 요소 중 Logstash 의 역할과 활용법은 어떻게 되는지 간략히 알아보았습니다.


질문 >

엘라스틱 스택 (Elastic Stack) 의 구성 요소 중 Logstash 의 역할과 활용법은 어떻게 되나요?

답변 >

LogstashElastic Stack의 데이터 처리 파이프라인 구성 요소로, 다양한 소스에서 데이터를 수집, 변환, 필터링한 후 다른 시스템으로 전송하는 역할을 수행합니다. Logstash는 데이터 파싱 및 변환에 특화되어 있으며, Elasticsearch와 함께 사용하면 강력한 로그 관리 및 분석 환경을 제공합니다.


Logstash의 역할

  1. 데이터 수집
    • 다양한 데이터 소스에서 데이터를 수집합니다.
    • 예: 파일, 데이터베이스, 메시징 큐(Kafka, RabbitMQ), 클라우드 서비스 등.
  2. 데이터 변환
    • 수집된 데이터를 변환하고 구조화하여 분석 가능한 형태로 만듭니다.
    • 정규식, 조건문, 데이터 형식 변환 등을 지원하여 데이터를 정리합니다.
  3. 데이터 필터링
    • 수집된 데이터에서 필요한 정보만 선별하여 처리할 수 있습니다.
    • 데이터 내 특정 패턴을 기반으로 데이터를 걸러내거나 필드를 추가/제거합니다.
  4. 데이터 전달
    • 변환된 데이터를 Elasticsearch, 파일, 메시징 큐, 또는 다른 시스템으로 전송합니다.

Logstash의 주요 구성

  1. Input 플러그인
    • 데이터를 수집하는 입력 소스입니다.
    • 지원되는 소스: 파일, HTTP, Kafka, RabbitMQ, 데이터베이스 등.
    • 예: file, http, jdbc, beats 등.
  2. Filter 플러그인
    • 수집된 데이터를 변환하고 필터링하는 단계입니다.
    • 데이터를 구조화하거나, 불필요한 데이터를 제거하거나, 특정 조건에 따라 데이터를 처리합니다.
    • 예: grok(패턴 매칭), mutate(필드 변환), date(시간 형식 변환), geoip(IP 기반 위치 정보 추가).
  3. Output 플러그인
    • 변환된 데이터를 저장하거나 전송하는 대상입니다.
    • 지원되는 출력: Elasticsearch, 파일, 메시징 큐, 이메일 등.
    • 예: elasticsearch, file, stdout, kafka 등.

Logstash의 활용법

  1. 로그 처리 및 중앙화
    • 여러 서버의 로그 데이터를 수집하여 Elasticsearch로 전송.
    • 로그 데이터를 파싱하여 구조화된 데이터로 저장.
    • 예: 웹 서버 로그(Nginx, Apache)를 분석 가능한 JSON 형식으로 변환.
  2. 데이터 변환 및 정리
    • 비구조화된 데이터를 구조화된 데이터로 변환.
    • 정규식을 사용해 텍스트 데이터를 필드로 분리.
    • 예: 로그 메시지에서 IP 주소, 타임스탬프, 오류 코드를 추출.
  3. 데이터 통합
    • 여러 소스에서 데이터를 수집하고 통합하여 중앙 저장소로 전송.
    • 예: Kafka에서 데이터를 수집한 뒤 Elasticsearch로 전달.
  4. 모니터링 및 경고 시스템
    • 시스템 메트릭 데이터나 애플리케이션 로그 데이터를 수집하여 분석.
    • 특정 조건에 따라 데이터를 필터링하고 알림 시스템과 연동.

Logstash의 장점

  1. 다양한 데이터 소스 지원
    • 파일, 데이터베이스, 클라우드 서비스, 네트워크 등 거의 모든 데이터 소스와 통합 가능.
  2. 유연한 데이터 변환
    • Grok, Mutate 등의 플러그인을 통해 데이터를 자유롭게 변환하고 구조화 가능.
  3. 확장성
    • 수평 확장이 가능하여 대량의 데이터를 처리할 수 있음.
  4. 오픈소스와 확장성
    • 플러그인을 통해 쉽게 새로운 기능을 추가하거나 사용자 정의를 할 수 있음.

Logstash 활용 예제

1. Nginx 로그 처리

  • Input: Nginx 로그 파일
  • Filter: Grok을 사용해 로그를 파싱하고 IP, 상태 코드, URL 등을 추출
  • Output: Elasticsearch로 전송
input {
  file {
    path => "/var/log/nginx/access.log"
    start_position => "beginning"
  }
}

filter {
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
  geoip {
    source => "clientip"
  }
}

output {
  elasticsearch {
    hosts => ["<http://localhost:9200>"]
    index => "nginx-logs"
  }
}


2. Kafka 데이터를 Elasticsearch로 전송

  • Input: Kafka에서 데이터 수집
  • Filter: 데이터 정규화
  • Output: Elasticsearch로 전송
input {
  kafka {
    bootstrap_servers => "localhost:9092"
    topics => ["app-logs"]
  }
}

filter {
  mutate {
    rename => { "old_field" => "new_field" }
    convert => { "response_time" => "integer" }
  }
}

output {
  elasticsearch {
    hosts => ["<http://localhost:9200>"]
    index => "app-logs"
  }
}


Logstash의 한계와 보완

  1. 리소스 소모
    • 데이터 처리 과정에서 메모리와 CPU를 많이 사용할 수 있습니다.
    • 해결: 경량 데이터 수집 도구인 Beats와 조합하여 처리 효율성을 높임.
  2. 복잡한 설정
    • 필터 구성이 복잡할 수 있음.
    • 해결: 기본적인 데이터 변환은 Beats와 Elasticsearch의 Ingest Pipeline을 활용.

Logstash와 Elastic Stack의 통합

Logstash는 Elastic Stack의 다른 구성 요소와 원활하게 작동하며, 특히 ElasticsearchKibana를 통해 로그 데이터의 실시간 분석과 시각화를 제공합니다. 로그 데이터 관리, 보안 데이터 분석, 모니터링 데이터 처리 등에서 Logstash는 중요한 역할을 합니다.


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."


🎬 유튜브 채널 🎬

 

위로그@WiLog

📢 안녕하세요, 위로그@WiLog 시청자 여러분, 저는 윌리 입니다. 📢 위로그@WiLog 는 자기주도학습을 목적으로 라이브 스트리밍을 합니다. 📢 1인 게임 개발을 목표로 Unreal과 Blender를 학습 중입니

www.youtube.com

🎬 치지직 채널 🎬

 

위로그 채널 - CHZZK

지금, 스트리밍이 시작됩니다. 치지직-

chzzk.naver.com


반응형