본문 바로가기
ELK/ElasticSearch

AWS EC2 ELK Elasticsearch7.x + Logstash7.x + Kibana7.x + beats 최신버전 설치

by by 앵과장 2021. 7. 29.
반응형

안녕하세요 앵과장입니다.

개발블로그를 너무 오랜만에 쓰고있네요


항상 평생직장이다 라고 생각하고 들어가는데 
내마음에 드는곳은 찾기가 쉽지가 않습니다.

간만에 아무것도 없는곳에서 개발하려니 아주많은 단점이 있지만
한가지 장점이라고 하면 시스템을 구축해볼수 있다는 것입니다.

DEV 환경 구축

version :  2021.07.28 기준 7.13.x 진행
EC2  : centos 7.x 

JDK : 11
Cpu : 2

Memory : 4~8
Disk : 20~50G

 

선행조건 : 

ec2 인스턴스 중 도메인이 필요한 부분은 미리 alb A recode 도메인 설정되었으며

방화벽 또는 dev환경 vpc구성후 private Network 생성 한뒤 보안 이슈 최소화될수있도록 구성되었습니다

 

AWS Cloud

ELK 구성 하기에 앞서서 아키텍처 부터 간단하게 그림으로 공유드립니다.

공식사이트 있을겁니다 어디서 봤는데 기억이 안나네요

 

 

Elasticsearch : ec2 3대

 

master node 1 + data node 2 기본적인 구조

개발은 3대로 진행하며 real환경에서는 로드밸런싱 read, write 형태로 나누는 구조 개선 그리고 Hot Warm Cool형태 필요

기본적으로 인스턴스1개에 1 node이며 
검색최적화 권장 노드당 20기가 유지하는것을 추천드립니다. 실질적으로 50기가까지 할수있다고는 하지만 

권장하지 않습니다. 

리플리카를 통해서 같은노드를 복제할수 있는데 검색을 빨리하기위해 복제노드를 여러대 늘리기보다는 상황에 맡는 방법을 사용하시기 바랍니다. 

 

Elasticsearch 공식 가이드 

https://www.elastic.co/guide/en/elasticsearch/reference/7.13/install-elasticsearch.html

 

Installing Elasticsearch | Elasticsearch Guide [7.13] | Elastic

Installing Elasticsearchedit Hosted Elasticsearchedit You can run Elasticsearch on your own hardware, or use our hosted Elasticsearch Service on Elastic Cloud. The Elasticsearch Service is available on both AWS and GCP. Try out the Elasticsearch Service fo

www.elastic.co

 

Step1 : GPG Key import 샤이닝 키 다운받고 설치

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Step2: repo 파일생성

vim /etc/yum.repos.d/elasticsearch.repo

//아래내용 생성

[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md

Step3: yum 설치

sudo yum install --enablerepo=elasticsearch elasticsearch

Step4: EC2 인스턴스 재기동시 자동실행 설정

(centos 7하위 버전은 명령어가 다를수 있습니다. 참고하세요)

sudo systemctl enable elasticsearch

Step5: elasticsearch 실행

(centos 7하위 버전은 명령어가 다를수 있습니다. 참고하세요)

sudo systemctl start elasticsearch

Step6: elasticsearch 상태확인

sudo systemctl elasticsearch status

Step7: 

Elasticsearch 기본 Port는 9200 입니다.

ES간 통신은 9300 으로 진행됩니다.

변경하셔도 되지만 그냥 기본포트 쓰시는것을 추천합니다.

 

해당 명령어 호출하면 Elasticsearch 에서 전달할수있는 JSON Response확인이 가능합니다.

curl {localhost}:9200

 

Kibana : ec2 1대
많이 바뀌었네요 내가알고있던 느낌이 아닙니다.

해당내용 쓸때만해도 Legacy를 논하며 쓴거같은데 개발자는 항상 열린마음으로 그럴수있다는 생각을 가지고 사셔야합니다.

첫느낌은 신선하며 
여러가지 커스텀할수있는 기능들이 존재하며 

여러가지 플러그인들을 사용하기 위한 설명들이 존재합니다.

 

메뉴얼이 영어이기때문에 번역기를 돌리시고 ES모니터링, dev Tool 등이 눈에 바로 보이지 않습니다. dashboard를 만드셔야되는데

이부분 천천히 시간날때 공부하시면 저좀 알려주세요 ㅎㅎ

 

오래된 Legacy 기술을 만났을 때 우리가 대처하는 방법, 무정지 서비스로 ELK 신규 노드 증설하는

안녕하세요 티몬 서비스 개발 1팀에서 근무하고 있는 이순우입니다. 서비스 개발팀은 티몬에서 제공하는 상...

blog.naver.com

 

Step1 : kibana repo 생성

# vi /etc/yum.repos.d/kibana.repo


[kibana-7.x]
name=Kibana repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

Step2: intall

sudo yum install kibana -y

Step3: EC2 인스턴스 재기동시 자동실행 설정

(centos 7하위 버전은 명령어가 다를수 있습니다. 참고하세요)

sudo systemctl enable kibana

Step4: Kibana 실행

sudo systemctl start kibana

Step5: Kibana 확인

sudo systemctl status kibana

kibana 기본 port 5601 이며
시각화 + devtool 지원하기때문에 web 에서 확인이 가능합니다.

 

정상적이라면 아래 화면을 볼수 있습니다. 

Kibana 6.x 버전만 사용하셨다면

7.x버전부터 달라진점을 아주크게 느낄수 있습니다.

약간에 러닝커브가 존재하니 하나씩 확인해주시면됩니다.

 

 

 

 

Logstash : ec2 1대
7.13.x버전 rpm 

logstash 는 여러가지 데이터 파이프라인이며 되도록이면 별도 서버 구성이 필요함 여러가지 비지니스로직수행되기 때문에 I/O memory 로 인해서 ES와 함께 사용하면 서비스하다 밤을 셀수있는 경우를 만들수있으니 별도로 구성하는것을 권장합니다.

 

간단하게 설명하면 Logstash 는 Input -> filter -> output 형태로 구성할수있으며 

데이터를 전달할수 있는 파이프라인을 구성할수 있게 합니다.

 

Step1 : kibana repo 생성

# vi /etc/yum.repos.d/logstash.repo

[logstash-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

Step2: install

sudo yum install logstash -y

Step3: EC2 인스턴스 재기동시 자동실행 설정

(centos 7하위 버전은 명령어가 다를수 있습니다. 참고하세요)

sudo systemctl enable logstash

Step4: logstash 실행

sudo systemctl start logstash

Step5 : logstash 확인

sudo systemctl status logstash

 

Beats : ec2 1대

apache, was Log 부터 해서 kibana, elasticsearch log 등 수집하는 Agent이며 이부분도 별도로 설치해서 진행하는것을 권장함

 

Metricbeat 설치

Step1: Metricbeat RPM 다운로드

curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-7.13.4-x86_64.rpm

 Step2: RPM 설치

rpm -vi metricbeat-7.13.4-x86_64.rpm

Step3: Metricbeat 설정

# vi /etc/metricbeat/metricbeat.yml

Kibana end point 설정

# =================================== Kibana ===================================

# Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API.
# This requires a Kibana endpoint configuration.
setup.kibana:

  # Kibana Host
  # Scheme and port can be left out and will be set to the default (http and 5601)
  # In case you specify and additional path, the scheme is required: http://localhost:5601/path
  # IPv6 addresses should always be defined as: https://[2001:db8::1]:5601
  host: "{설치된 키바나 IP}:5601"

  # Kibana Space ID
  # ID of the Kibana Space into which the dashboards should be loaded. By default,
  # the Default Space will be used.
  #space.id:

Step4: Elasticsearch Output

# vi /etc/metricbeat/metricbeat.yml

Kibana tool에서 설정한 정보확인

# ================================== Outputs ===================================

# Configure what output to use when sending the data collected by the beat.

# ---------------------------- Elasticsearch Output ----------------------------
output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["{elasticsearch IP}:9200"]

  # Protocol - either `http` (default) or `https`.
  #protocol: "https"

  # Authentication credentials - either API key or username/password.
  #api_key: "id:api_key"
  #username: "elk-user"
  #password: "P@ssword!"

# ------------------------------ Logstash Output -------------------------------
#output.logstash:
  # The Logstash hosts
  #hosts: ["localhost:5044"]

  # Optional SSL. By default is off.
  # List of root certificates for HTTPS server verifications
  #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]

  # Certificate for SSL client authentication
  #ssl.certificate: "/etc/pki/client/cert.pem"

  # Client Certificate Key
  #ssl.key: "/etc/pki/client/cert.key"

Step5: Kibana Dashboard 설정

metricbeat setup --dashboards

Step6: Metricbeat 실행

 

기본초기화 setting

metricbeat setup -e

서비스활성화

sudo systemctl enable metricbeat
sudo chkconfig --add metricbeat

서비스 시작

sudo systemctl start metricbeat

 

 

 

레퍼런스 : 

 

 

Elastic Stack and Product Documentation | Elastic

 

www.elastic.co

 

 

Elastic 가이드 북

 

esbook.kimjmin.net