사내 M/L 개발자 '고강빈'님의 강의자료 입니다.
⇒ Server Cluster → Aggregator → Store
아마존 웹서비스 (AWS)에서 EC2 우분투 서버를 구축하고 해당 서버 위에서 데이터 수집 및 전달을 실습해보자.
로그스태시(logstash)와 비츠(beats - filebeat)를 이용하여 데이터를 수집하고 이를 서버에 전달해보자.
# install java
sudo apt update
sudo apt install openjdk-11-jdk -y
# download & unzip logstash
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.16.2-linux-x86_64.tar.gz
tar -zxvf logstash-7.16.2-linux-x86_64.tar.gz
# download & unzip filebeat
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.16.2-linux-x86_64.tar.gz
tar -zxvf filebeat-7.16.2-linux-x86_64.tar.gz
# clone repository & copy files
git clone https://github.com/sangyun-han/aws-based-data-engineering
cp aws-based-data-engineering/week-1/logstash/logstash-config-* logstash-7.16.2/config/
# check logstash-config-generator.conf
cat logstash-7.16.2/config/logstash-config-generator.conf
# run it!
./logstash-7.16.2/bin/logstash -f logstash-7.16.2/config/logstash-config-generator.conf
⇒ 임의 데이터를 count만큼 반복 생산해주는 input plugin이 내용을 path의 파일로 작성
# reset output file
rm logstash-output-*
# check logstash-config-file.conf
cat logstash-7.16.2/config/logstash-config-file.conf
# run it
./logstash-7.16.2/bin/logstash -f logstash-7.16.2/config/logstash-config-file.conf
⇒ input.file의 내용을 읽어서 path의 파일로 저장
# open new tab
# write data into input.file
echo "1" >> input.file
echo "blahblah" >> input.file
# check output
cat logstash-output-YY_MM_dd_HH.log
# reset input, output file
rm input.file
rm logstash-output-*
# check logstash-config-filter.conf
cat logstash-7.16.2/config/logstash-config-filter.conf
# check sample log
cat aws-based-data-engineering/week-1/apache-sample-log
# run it!
./logstash-7.16.2/bin/logstash -f logstash-7.16.2/config/logstash-config-filter.conf
Filter plugin
# 다른 필터
vi logstash-7.16.2/config/logstash-config-filter.conf
# check logstash-config-filebeat.conf
cat logstash-7.16.2/config/logstash-config-filebeat.conf
# run logstash
cd logstash-7.16.2/config
~/logstash-7.16.2/bin/logstash -f logstash-config-filebeat.conf
⇒ port 5044번으로 logstash를 열었다. output path는 따로 지정하지 않았기에 저장되진 않는다.
# check filebeat.yml & copy
cat aws-based-data-engineering/week-1/filebeat/filebeat.yml
cp aws-based-data-engineering/week-1/filebeat/filebeat.yml filebeat-7.16.2-linux-x86_64
chmod go-w aws-based-data-engineering/week-1/filebeat/filebeat.yml
# run it
cd filebeat-7.16.2-linux-x86_64
./filebeat run -e filebeat.yml
⇒ home에 있는 input.file을 읽어서 logstash가 있는 localhost:5044로 output
⇒ 실제로 로그가 계속 찍히는 환경을 가정하기 위해, 무한루프문으로 문자열을 계속 input.file로 날려주자
for ((i=0; ;i+=1 )); do echo $i >> input.file;sleep 1; done