지구정복

[Elastic Stack] AWS 리눅스 단일서버에서 ELK 사용하기(Metricbeat, Filebeat로부터 Logstash > elasticsearch > kibana) 본문

데이터 엔지니어링 정복/Elastic Stack

[Elastic Stack] AWS 리눅스 단일서버에서 ELK 사용하기(Metricbeat, Filebeat로부터 Logstash > elasticsearch > kibana)

eeaarrtthh 2021. 7. 5. 14:40
728x90
반응형

저번 게시글에 이어서 이번에는 metricbeat와 filebeat에서 생성된 데이터를 logstash로 보내서 전처리 작업이후

elasticsearch로 적재된 뒤 kibana에서 데이터를 시각화해서 보는 작업들을 진행해보려고 한다.

 

구축과정 게시글은 아래 참고

https://earthconquest.tistory.com/266

 

[Elastic Stack] AWS 리눅스 단일서버 이용해서 ELK 구축하기

1. AWS에서 EC2 인스턴스 생성 더보기 서버 사양은 다음과 같다. m4.xlarge: 4 vCPU / 16GB OS: Amazon Linux2 AMI EBS: 200GB 비용은 아마존 비용설명 참고! 요금폭탄 맞을수도 있으니 사용하지 않을 때는 중지시..

earthconquest.tistory.com

 

 

1. Metricbeat 설치하기

더보기

# 메트릭비트 설치하기

 

rpm을 다운받아서 설치한다.

> cd
> curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-7.10.2-x86_64.rpm
> sudo rpm -vi metricbeat-7.10.2-x86_64.rpm

 

# 설정파일 수정하기

 

메트릭비트의 설정파일을 수정해준다.

아래처럼 메트릭비트의 출력값들이 엘라스틱서치가 아니라 로그스태시로 전송될 수 있도록 지정해준다.

그리고 키바나 대시보드를 사용하기 위해 키바나 IP주소와 포트번호를 지정한다.
그 외에는 건드릴게 없다.

> sudo vi /etc/metricbeat/metricbeat.yml

키바나 설정은 아래처럼 한다. 키바나가 설치되어 있는 서버의 AWS 공인 IP를 적어준다.

 

 

 

2. Logstash 설정 및 실행하기

더보기

# 로그스태시 설정파일 수정

 

로그스태시의 conf파일을 수정해준다.

ec2-user 홈디렉터리에 파일을 생성한다. 이때 output에 elasticsearch에 로그스태시로 들어오는 데이터가 저장되도록 하고 index를 설정해주어야지 kibana discover에서 실시간으로 데이터를 시각화해서 볼 수 있다.
index는 아래와 같이 적어주면 된다.

> cd
> vi logstash-metricbeat.conf

input {
  beats {
    port => 5044
  }
}

filter {
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
  }
}

 

 # 로그스태시 및 메트릭비트 실행하기

 

로그스태시 먼저 실행해서 대기시켜놓는다. 뒤에 automatic속성값은 로그스태시가 실행도중에 conf파일이 바뀌면 자동으로 바뀐 conf파일로 저절로 적용시킨다는 것이다.

> sudo /usr/share/logstash/bin/logstash -f /home/ec2-user/logstash-metricbeat.conf --config.reload.automatic

 

메트릭비트 실행하기

> sudo /etc/init.d/metricbeat start

종료하는 명령어는 뒤에 stop을 붙여주면 된다. 

 

 

밑의 캡처는 메트릭비트 데이터가 로그스태시 출력값으로 나오는 과정이다. 아래와 같이 나오면 정상이다.

 

# 엘라스틱서치 데이터 적재여부 확인

 

이제 로그스태시에서 엘라스틱서치로 넘어가는 데이터가 잘 적재되고 있는지 확인해보자.

먼저 인덱스 생성여부를 확인한다.

 

> curl localhost:9200/_cat/indices?v

위 명령어를 계속입력하면 아래의 네모칸의 docs.count가 증가하는 것을 확인할 수 있을 것이다.

 

해당 인덱스의 데이터를 살펴보자. 엘라스틱서치에서도 데이터가 잘 적재되고 있는 것을 확인할 수 있다.

> curl -XGET localhost:9200/logstash-2021.07.04-000001/_search?pretty

 

# 키바나에서 데이터 확인하기 

 

이제 키바나 웹UI의 discover 메뉴에 들어가본다.

아래처럼 데이터가 시각화되어서 나타나는 것을 확인할 수 있다.

 

 

3. Filebeat 설치하기

더보기

# 파일비트 설치하기

 

파일비트도 yum으로 설치한다.

> sudo yum install filebeat -y

 

# 예제파일 다운로드

 

예제로 사용할 로그 데이터를 다운받는다.

> cd
> wget https://download.elastic.co/demos/logstash/gettingstarted/logstash-tutorial.log.gz
> gzip -d logstash-tutorial.log.gz

 

 

# 파일비트 설정파일 수정

 

> sudo vi /etc/filebeat/filebeat.yml

먼저 타입을 log로 해주고 위에서 다운받은 예제 파일의 경로를 설정해준다. 이때 enabled는 true로 해준다.

키바나 공인IP와 포트번호를 적어준다.

filebeat의 결과는 로그스태시로 향하게 설정하고 이때 엘라스틱서치로 가지 않도록 주의한다.

 

파일비트 서비스를 재시작해준다.

> sudo service filebeat restart

 

 

# 로그스태시 conf파일 수정

 

파일비트에 맞는 로그스태시conf파일을 사용자 홈디렉터리에 만들어준다.

> cd
> vi logstash-beat.conf

 

# 로그스태시와 파일비트 실행하기

 

먼저 로그스태시부터 실행시켜서 대기시킨다.

> sudo /usr/share/logstash/bin/logstash -f /home/ec2-user/logstash-beat.conf --config.reload.automatic

 

현재 실시간으로 만들어지는 로그파일이 아니라 정적인 예제파일을 사용하므로 파일비트가 한 번 읽으면 두 번째 실행할 때는 읽었던 파일을 읽지 않는다. 따라서 예제파일로 실행을할 때는 실행전에 파일비트를 초기화해줘야 한다.

미리 초기화를 한 번 진행한다.

 

> sudo service filebeat stop

> cd /var/lib/filebeat

#파일비트 초기화
> sudo rm -rf registry

#파일비트 실행하기
> sudo filebeat -e -c filebeat.yml -d "publish"

파일비트는 30초마다 한 번씩 데이터를 읽어온다.

 

로그스태시로 데이터가 들어오는지 확인한다.

 

# 엘라스틱서치 적재여부 확인하기

 

> curl localhost:9200/_cat/indices?v

해당 인덱스의 데이터를 살펴보자. 아까 로그스태시에서 출력된 데이터와 같은 데이터임을 확인할 수 있다.

> curl -XGET localhost:9200/filebeat-7.13.2-2021.07.05/_search?pretty

 

 

# 키바나 discovery에서 데이터 확인하기

 

 

 

 

 

 

끝 ㅎㅎ  다음에는 클러스터를 구성해봐야겠다 !

 

 

728x90
반응형
Comments