본문 바로가기
Server

Elasticsearch + kibana를 통한 ec2 서버 모니터링

by Ahngyuho 2023. 7. 11.

Debian package 로 Elasticsearch 설치

아래 명령어를 차례대로 입력해주시면 됩니다. 참고로 저는 aws ec2 Ubuntu20.04를 사용하고 있습니다.

1.

공개 서명키를 다운로드하고 설치합니다.

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg

 

2.  apt-transport-https 패키지 설치

sudo apt-get install apt-transport-https

 

3. /usr/share/keyrings에 GPG 추가 + 리포지토리 정의

echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list

 

4. 실제 Elasticsearch 설치

sudo apt-get update && sudo apt-get install elasticsearch

 

차례대로 적어주셨다면 정상적으로 잘 설치될겁니다.

 

아래 링크로 들어가셔서 

https://www.elastic.co/guide/en/elasticsearch/reference/8.8/deb.html#deb-repo

 

Install Elasticsearch with Debian Package | Elasticsearch Guide [8.8] | Elastic

On systemd-based distributions, the installation scripts will attempt to set kernel parameters (e.g., vm.max_map_count); you can skip this by masking the systemd-sysctl.service unit.

www.elastic.co


Kibana 도 동일하게 위와 같은 방식으로 설치해주시면 됩니다. 바로 아래 링크 남겨드리겠습니다.

위 Elasticsearch 설치를 진행하셨다면 Kibana 설치는 아래 명령어만 입력해주셔도 됩니다. 

sudo apt-get update && sudo apt-get install kibana

https://www.elastic.co/guide/en/kibana/8.8/deb.html#deb-repo

 

Install Kibana with Debian package | Kibana Guide [8.8] | Elastic

Do not use add-apt-repository as it will add a deb-src entry as well, but we do not provide a source package. If you have added the deb-src entry, you will see an error like the following: Unable to find expected entry 'main/source/Sources' in Release file

www.elastic.co

 


설정 파일 작성( /etc/elasticsearch/elasticsearch.yml, /etc/kibana/kibana.yml )

이제 설정파일을 작성해 보겠습니다. 

 

sudo vi /etc/elasticsearch/elasticsearch.yml

# ---------------------------------- Network -----------------------------------
#
# By default Elasticsearch is only accessible on localhost. Set a different
# address here to expose this node on the network:
#
network.host: 0.0.0.0
#
# By default Elasticsearch listens for HTTP traffic on the first free port it
# finds starting at 9200. Set a specific HTTP port here:
#
#http.port: 9200
#
# For more information, consult the network module documentation.

 

Elasticsearch로 모든 ip 접근을 허용했습니다.

문제가 생길만하다면 Elasticsearch로 접근하는 ip들을 특정해서 넣어줄 계획입니다.

 

# --------------------------------------------------------------------------------

# Enable security features
xpack.security.enabled: false

xpack.security.enrollment.enabled: true

그리고 이 xpack.security.enable: true -> false 로 바꿔주었습니다.

이렇게 해주지 않으면 브라우저로 Kibana에 접근할 때 접근이 막힙니다.

이럴 땐 추가적인 설정이 더 필요한데 이는 나중에 필요한 상황이 오면 설정 추가해서 따로 포스팅 하겠습니다.

 

이젠 kibana입니다.

sudo vi /etc/kibana/kibana.yml

 

# =================== System: Kibana Server ===================
# Kibana is served by a back end server. This setting specifies the port to use.
#server.port: 5601

# Specifies the address to which the Kibana server will bind. IP addresses and host names are both valid values.
# The default is 'localhost', which usually means remote machines will not be able to connect.
# To allow connections from remote users, set this parameter to a non-loopback address.
server.host: "0.0.0.0"

server.host 를 모든 ip 접속 허용으로 바꿔주었습니다.

 

# =================== System: Elasticsearch ===================
# The URLs of the Elasticsearch instances to use for all your queries.
elasticsearch.hosts: ["http://서버주소:9200"]

Elasticsearch 와 Kibana를 하나의 서버내에 설치하시는 분들이라면 저 서버 주소는 localhost가 될거고,

그게 기본 세팅입니다. 서로 다른 환경에서 구축하시는 분들이라면 Elasicsearch 서버 주소를 적어주시면 됩니다.

 

이제 설치 및 설정파일 작성 후 서비스 가동을 위해

sudo systemcstl start elasticsearch.service

sudo systemcstl start kibana.service

각각 명령어 입력해주시면 됩니다.

 

그리고 서버를 끄고 다시 켰을 경우 자동으로 해당 서비스들이 동작하길 원하시면

sudo systemctl enable elasticsearch.service

sudo systemctl enable kibana.service

두 명령어를 적어주시면 됩니다.

 

그리고 설정파일 변경 후 적용은 아래와 같은 명령어로

sudo systemctl restart elasticsearch.service

sudo systemctl restart kibana.service

서비스 재시작 해주시면 됩니다.

 

systemctl status elasticsearch.service 로 잘 동작하는지 확인해주시고, 혹시 inactive로 나오면 어디가 문제가 생겼는지

아래처럼 찍힌 정보들을 잘 살펴봐주세요.

systemctl status kibana.service

 

이제 설치는 잘 되었습니다. 다음에는 filebeat,metricbeat를 이용해서 ec2 서버의 log, metricebeat 전송과 kibana 시각화에 대해서 포스팅 해보겠습니다.