상세 컨텐츠

본문 제목

Windwos 10에서 Docker Compose로 TLS가 적용된 Elastic Cluster 구성 - Logstash 연결 (7.16.3 버전)

Data Platform/Elastic Stack

by leediz 2022. 6. 12. 17:41

본문

Windwos 10에서 Docker Compose로 TLS가 적용된 Elastic Cluster 구성 - Logstash 연결 (7.16.3 버전)

사전 준비 : Docker 설치, Docker Compose로 TLS가 적용된 Elastic Cluster 구성

지난 포스팅에서는 Windows OS에서 Docker-Compose를 사용하여 SSL/TLS가 적용된 Elasitcsearch Cluster를 구축하는 방법에 대해 소개를 했다. 이번 포스팅에서는 구축한 Elasticsearch Cluster에 Logstash를 연결하여 데이터를 저장하는 방법에 대해 알아본다.

0. Logstash란

Logstash에 대해 소개하는 별도의 포스팅을 할 예정이지만 이번에는 간단하게 알아보고 넘어가겠다.

  • Elastic Stack 구성요소 중 Elasticsearch에 수집된 데이터를 저장하는 역할을 한다.
  • input - filter - output 순으로 데이터 처리를 하게 되며 ETL 과정과 일치한다.
  • output을 꼭 Elasticsearch로 하지 않아도 된다. 즉, Elasticsearch가 아닌 다른 곳으로 데이터를 저장할 수 있다.(Logstash output plugin에서 제공한다는 전제)

 

1. Logstash 다운로드

Logstash의 설치는 간단하다. Logstash의 파일을 Windows 로컬에 다운로드 받으면 끝이다. 다운로드 페이지에서 WINDOWS로 다운로드 후 압축풀기하면 된다. 이전에 Docker-Compose로 Elasticsearch Cluster를 구성할 때에 7.16.3 버전으로 구성을 했기 때문에 Logstash도 7.16.3 버전으로 설치를 진행했으며 버전은 필요에 따라 바꿔서 진행해도 된다. 단, Elasticsearch의 버전과 맞춰주는 것을 권장한다.

 

2. Cert 파일 복사

Elasticsearch Cluster 구성 시에 SSL/TLS 설정을 위해 Elasticsearch에서 제공한 보안 관련 파일을 생성하여 적용을 했다. 실제 실무에서는 보안을 위해 많이 사용하는 방법이다. 그래서 Elasticsearch의 노드를 추가하거나 Logstash 또는 Filebeat 등을 Elasticsearch에 연결할 때에도 보안 관련 파일을 옵션에 설정해주어야 한다. 지난 포스팅에서는 crt파일을 생성하여 설정을 해주었기 때문에 Docker Volume에 저장된 파일을 로컬로 가져와야 한다. 과정은 아래와 같다.

  • Windows 탐색기에서 주소창 클릭 후 \\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes 경로로 이동

 

  • es_certs > _data > ca > ca.crt 파일 복사 (본인의 로컬 폴더에 복사)

 

 

3. 간단한 테스트 파일로 Logstash → Elasticsearch 데이터 저장

이제 준비는 끝났으니 Logstash를 실행하여 Elasticsearch로 데이터를 저장하는 테스트를 해서 잘 되는지 확인하면 된다. 파이프라인을 명시한 파일을 만들어 실행시키면 되는데 관례적으로 conf 확장자로 파일을 만들었다. 그리고 개인적으로 하나의 폴더를 만들어서 파이프라인을 관리하는 것을 선호하므로 pipelines라는 폴더를 만들어 해당 폴더에 모든 conf 파일들을 저장한다.

  • logstash 폴더 > config 폴더에 pipelines 폴더 생성

 

  • pipelines 폴더 하위에 아래와 같이 sample-test.conf 파일 생성 (VSCode 등과 같은 에디터 활용)
    • 테스트이므로 input plugin에서 generator를 사용하여 2개의 라인을 생성하여 별도의 처리 없이 바로 Elasticsearch에 저장하는 파이프라인이다.
    • sample-test.conf 파일 예시
input {
  generator {
    lines => [
      "Hello Elasticsearch",
      "This is from Logstash"
    ]
    count => 1
  }
}
    
filter {
}
    
output {
  elasticsearch {
    hosts => ["https://localhost:9200"]
    user => "elastic"
    password => "elastic"
    
    ssl => true
    cacert => "D:/Elastic/elastic_docker/certs/ca.crt" ## 본인의 path로 변경
    ssl_certificate_verification => false
    
    index => "sample-test"
  }
    
  stdout { }
}

 

  • VSCode 터미널 또는 Powershell에서 logstash_home 디렉토리로 이동 후 다음과 같은 명령어 실행
    • 실무에서는 멀티파이프라인 방식으로 여러 conf파일들을 실행시키도록 하지만, 이번에는 conf 파일 하나만 테스트 용도로 실행하기 때문에 단일 conf 파일을 실행하도록 했다.
logstash-7.16.3> .\bin\logstash.bat -f .\config\pipelines\sample-test.conf

 

  • 에러 로그가 있긴 하지만 Elasticsearch로 데이터를 저장하는데는 문제가 없다. 인증서 이슈로 보이는데 로컬에서 Docker로 테스트하는 것이기 때문에 테스트에 지장 없으므로 일단 넘어간다.
  • Kibana에서 sample-test 인덱스를 검색해보면 데이터가 잘 저장된 것을 확인할 수 있다.

 

마무리

이번 포스팅에서는 Docker-Compose로 설치한 Elasticsearch Cluster에 데이터를 저장하는 방법 중 하나인 Logstash를 사용하는 방법에 대해 소개했다. Elasticsearch도 그렇지만 Logstash 또한 설치 자체는 간단하지만 설정하는 측면에서의 노하우가 필요하다. 이번 포스팅에서는 간단하게 Test 파일을 만들어서 단순하게 Elasticsearch와 연결이 되는지, 저장이 잘 되는지를 테스트하는데 집중했다. 또한 Logstash를 실행할 때 여러 conf 파일들을 함께 실행시킬수도 있는데 이번에는 테스트로 명령어를 통해 하나의 파일만 실행하도록 했다. 향후에는 실무레벨에서의 작업수준으로 준비를 해서 포스팅해보겠다.

 

참고자료

관련글 더보기

댓글 영역