[Elasticsearch] Logstash 설치

Jaewon Lim·2025년 4월 13일

Elasticsearch

목록 보기
4/12

[버전]
8.17.4 tar
[서버]
192.168.219.159 (master) : Elasticsearch, Kibana, Logstash, CA 인증서
192.168.219.157 (data) : Elasticsearch, Metricbeat
192.168.219.158 (data) : Elasticsearch

Logstash-8.17.4 (tar 설치)

  1. 마스터노드 서버에서 Logstash 설치(159 서버)
[root@localhost ~] su - elastic
[elastic@localhost ~]
  • Logstash 를 마스터노드(159)에 설치 🔥 적절한 리소스 확보 & 테스트용 구성에서는 OK
    • 관리 편리, but 마스터노드는 클러스터 관리 역할 → 추가 부하 생기면 성능 저하
  • Logstash 를 데이터노드(157,158)에 설치 ⚠️ 대규모 환경에서는 비추천
    • 가까운 위치에서 데이터를 처리 가능, but 데이터 저장 & 처리 동시에 되면 메모리/CPU 병목 발생 위험
  • 테스트/학습/PoC 단계에서는 굳이 분리 x, Metricbeat나 Filebeat처럼 수집 대상이 많아지고, 필터링 작업이 많아질수록 → 분리 필요
  1. Logstash 설치
wget https://artifacts.elastic.co/downloads/logstash/logstash-8.17.4-linux-x86_64.tar.gz
tar -xzf logstash-8.17.4-linux-x86_64.tar.gz
cd logstash-8.17.4
  1. Logstash 설정 파일 작성
    • 수집-전처리-전송 파이프라인을 구성하는 과정
    • .conf 확장자를 가지며 logstash 가 어떤 데이터를 받고, 어떻게 처리해서, 어디로 보낼지를 정의하는 구성 파일
  • input{}

    • 지금은 터미널에서 직접 입력한 데이터를 실시간으로 수집하겠다는 의미(학습용, 테스트용)
  • filter{}

    • 어떻게 데이터를 전처리할지” 정의. 필터 플러그인 넣을 수 있음
    • gsub, grok, mutate 같은 플로그인으로 데이터 가공 가능
  • output{}

    • 가공된 데이터를 어디로 보낼지” 정의
    • ES로 보냄 : 보안 연결(https + 인증서), 로그인 인증 포함
    • stdout{} : 터미널에도 출력(디버깅/학습에 유용)
      vi config/test.conf
      input {
      stdin {}
      }
      filter {
      }
      output {
      elasticsearch {
      hosts => ["https://192.168.219.159:9200"]
      cacert => "/home/elastic/elasticsearch-8.17.4/config/certs/http_ca.cr
      t"
      index => "test_1"
      user => "elastic"
      password => "elastic"
      }
      stdout {}
      }

Logstash 실행

  1. Logstash 실행
./bin/logstash -f config/test.config
  • -f : 사용할 config 파일 지정
  • config/ : 보통 이 디렉토리 안에 conf 파일을 둠
  • 실시간 로그 확인 + 에러 추적
    ./bin/logstash -f config/test.conf --config.debug  
  • 백그라운드 실행
    nohup ./bin/logstash -f config/test.conf > logstash.out 2>&1 &
  • 파이프라인 모드(여러 conf 사용시)
    ./bin/logstash
  1. 동작 확인
    ps -ef | grep logstash
    ss -nltp | grep 9600       # logstash monitoring API 포트
  • ps -ef | grep logstash

    • 현재 시스템에서 실행 중인 프로세스 목록 중 logstash 라는 이름이 포함된 것만 보여줌
    • logstash가 실제로 실행 중인지 확인
  • ss -nltp | grep 9600

    • 시스템의 열려 있는 포트 목록 중 logstash 의 REST API 포트(9600)를 열고 있는지 확인
    • 내부 API 서비스(모니터링 포트)를 정상적으로 열고 있는지 확인
    • Logstash 가 네트워크 레벨에서 살아 있는지 체크
  1. 수집된 데이터 조회
  • curl
    curl --cacert config/certs/http_ca.crt -u elastic:{$password} https://localhost:9200/{index_name}/_search?pretty
  • Kibana UI (Dev tool)
    GET test1/_search 

0개의 댓글