본문 바로가기
DevOps

[ELK Stack 로그 수집 2/4] Logstash 설치

by 헬로월드 2021. 9. 10.
반응형

이전 글

2021.09.10 - [DevOps] - [Spring Boot 로그 수집] AWS Elasticsearch Service 설치

 

개요

지난 글에서 설치한 Elasticsearch에 로그를 전달해 줄 Logstash를 설치하겠습니다.

AWS와 Elastic의 라이선스 분쟁으로 OSS(Open Source Software) 버전을 설치해야 합니다.

 

EC2 생성

인스턴스 생성

AWS 'EC2' > '인스턴스'에서 새로운 인스턴스를 생성합니다.

 

AMI 선택

이미지는 Amazon Linux 2 AMI를 선택합니다. 해당 이미지는 AWS 주요 에이전트들이 설치되어 있고 프리티어로 사용할 수 있습니다.

 

인스턴스 유형 선택

프리티어 사용 가능한 t2.micro를 선택하고 '다음:인스턴스 세부 정보 구성'을 클릭합니다.

'인스턴스 구성', '스토리지 추가', '태그 추가' 페이지는 기본 설정으로 선택합니다.

 

보안 그룹 구성

Logstash에서 로그를 받을 때 5000번 포트로 TCP로그를 받고 5044 포트로 Filebeat 로그를 받습니다.

위 설정처럼 2개의 포트를 열어줘야 합니다.

'검토 및 시작', 다음 페이지의 '시작하기'로 인스턴스 생성을 합니다.

 

키페어 생성

EC2 인스턴스에 SSH로 접속할 때 사용할 키를 생성하여 다운로드하고 '인스턴스 시작'을 클릭합니다.

해당 키는 분실되면 안 되니 잘 보관해주세요.

 

SSH 접속

퍼블릭 IP 주소는 인스턴스를 재시작하게 될 경우 변경될 수 있기 때문에 퍼블릭 DNS 주소로 접속합니다.

 

SSH를 접속하기 위해서 OS에서 기본으로 제공하는 터미널을 사용하거나 다른 툴들을 사용할 수 있습니다.

저는 'Terminus'(https://termius.com/)라는 툴을 사용하는데 무료로 사용할 수 있고 UI도 깔끔하여 주로 사용하고 있습니다.

해당 툴을 기준으로 설명하겠습니다.

'NEW HOST'로 호스트 등록 창을 열고 'Label'과 EC2 DNS를 입력합니다.

'Username'에 'ec2-user'라고 입력합니다. 이 사용자 이름은 AWS에서 기본 값으로 설정한 사용자 이름입니다.

'Keys'를 클릭해서 EC2 생성 시 다운로드한 키페어를 등록합니다.

 

등록된 호스트로 EC2에 접속합니다.

 

 

Logstash 설치

Docker 설치 및 Logstash 이미지 받기

AWS Elasticsearch 버전과 동일한 7.10.2의 OSS버전으로 도커를 이용해서 설치하겠습니다.

# 도커 설치
sudo amazon-linux-extras install docker
sudo usermod -a -G docker ec2-user

# 재부팅
sudo reboot

재부팅 후 다시 접속해주세요.

# 도커 시작
sudo service docker start

# 도커 이미지 다운로드
sudo docker pull docker.elastic.co/logstash/logstash-oss:7.10.2

# 도커 이미지 확인
sudo docker images

Logstash 설정 파일 생성

pipeline 폴더 생성 후 logstash.conf 파일을 생성하고 아래 내용을 수정해서 넣어 주세요.

# 폴더 생성
mkdir pipeline

# 폴더 이동
cd pipeline

# 설정파일 생성
vi logstash.conf

해당 내용을 저장합니다.

input {
 tcp {
  port => 5000
  codec => json_lines
 }
}

output {
 elasticsearch {
  hosts => ["AWS ES Endpoint"]
  ssl => true	  
  index => "logstash-%{+YYYY.MM.dd}"
  user => "AWS ES 마스터 상용자명"
  password => "AWS ES 마스터 비밀번호"
  ilm_enabled => false
 }
}
  • 'hosts'는 AWS Elasticsearch에서 생성된 Endpoint입니다. (이전 포스팅 참고)
  • AWS Elasticsearch Endpoint는 https를 기본 사용하고 포트는 443을 사용합니다.
    ex) https://.....:443
  • user, password는 AWS Elasticsearch 생성 시 추가한 마스터 사용자입니다.
  • 마스터 사용자는 추후 Kibana에서 추가 및 변경할 수 있습니다.

Logstash 실행

# Logstash 실행
docker run --name logstash -p 5000:5000 -p 5044:5044 -d -e LS_JAVA_OPTS="-Xms512M -Xmx512M -XX:ParallelGCThreads=1" -v ~/pipeline/:/usr/share/logstash/pipeline/ docker.elastic.co/logstash/logstash-oss:7.10.2

# 로그 확인
docker logs -f logstash

마지막 라인에 'Successfully started....' 이 표시되면 성공적으로 설치가 된 것입니다.

 


다음 글에서는 Spring Boot에서 Logstash로 로그를 보내는 방법과 Kibana로 로그를 보는 법을 알아보겠습니다.

728x90