[ELK 스택] Elasticsearch + Logstash + Kibana debian 설치

91Savage·2022년 12월 5일
0

Server

목록 보기
22/24

Elastic search 설치

  • Elasticsearch용 PGP키 가져오기

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
  • apt-transport-https 패키지 설치

sudo apt-get install apt-transport-https
  • Elastic Repository 추가

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
  • ElasticSearch 설치

sudo apt-get update && sudo apt-get install elasticsearch
  • Elasticsearch.yml 설정


- cluster.name: test
- node.name: test-node

- network.host: 0.0.0.0 
- http.port: 9200 

- discovery.seed_hosts: ["127.0.0.1"]

- xpack.security.enabled: false
옵션명	     		옵션 설명
- cluster.name		클러스터 명 설정 (default는 elasticsearch이며 충돌을 방지하기 위해 반드시 고유한 이름으로 설정 필요)
- node.name			elasticsearch 노드 명 설정
- path.data			색인된 데이터를 저장하는 경로 지정
- path.logs			elasticsearch 실행 로그를 저장하는 경로 지정
- bootstrap.memory_lock		Elasticsearch가 사용중인 힙메모리 영역을 다른 자바 프로그램이 간섭 못하도록 미리 점유하는 설정 (항상 true로 사용하는 것을 권장)
- network.host		Elasticsearch가 실행되는 서버의 ip 주소 (default는 127.0.0.1(loopback)이며 0.0.0.0으로 설정 시 ANY로 통신이 가능)
- http.port			Elasticsearch가 클라이언트와 통신하기 위한 http 포트를 설정 (default는 9200이며, 포트가 이미 사용 중인 경우 9200 ~ 9299 사이 값을 차례대로 사용)
- transport.port		Elasticsearch 노드들 끼리 서로 통신하기 위한 tcp 포트를 설정 (default는 9300이며, 포트가 이미 사용 중인 경우 9300 ~ 9399 사이 값을 차례대로 사용)
- cluster.initial_master_nodes		클러스터가 최초 실행 될 때 명시된 노드들을 대상으로 마스터 노드를 선출
- node.master		마스터 후보(master eligible) 노드 여부를 설정
  • jvm 힙 크기 설정

  • 기본 힙 크기는 1GB
  • 전체 메모리 크기의 절반이하로 설정하는것이 좋음.
  • vim /etc/elasticsearch/jvm.options
    Xms512m
    Xmx512m
  • Elasticsearch 시작

systemctl enable elasticsearch
systemctl start elasticsearch

  • Elasticsearch 테스트

    curl -X GET "localhost:9200"

Logstash 설치

1) input 
- filebeat에서 데이터를 받을 때는 input을 beats로 설정한다.
- 데이터를 받을 포트 지정 (기본 포트 5044)
- 호스트 상관없이 모든 데이터를 받을 경우 호스트는 0.0.0.0으로 작성

2) filter
- elasticsearch로 전달하기 전에 원하는 데이터의 타입, 형태 등으로 필터링/전처리하는 과정
(이번 글에서는 작성하지 않고 데이터를 받아오는 과정만 진행한다.)

 
3) output
- filebeat에서 데이터를 받아 logstash에서 전처리를 한 데이터를 전송할 곳을 지정
  • vim /etc/logstash/conf.d/logstash.conf (신규 생성)
input {
  beats {
    port => 5044
    host => "0.0.0.0"
  }
}

output {
  elasticsearch {
    hosts => "localhost:9200"
    index => "%{[some_field][sub_field]}-%{+YYYY.MM.dd}"
  }
}

logstash script 적용

cd /usr/share/logstash/bin
./system-install
(체크) Successfully created system startup script for Logstash

logstash 실행

systemctl start logstash
systemctl enable logstash

logstash 로그 체크

tail -f /var/log/logstash/logstash-plain.log

Kibana 설치

  • Kibana 설치

sudo apt-get update && sudo apt-get install kibana
  • Kibana.yml 설정

server.host: "0.0.0.0"    # "localhost" > "0.0.0.0" 으로 변경
  • kibana 실행

systemctl daemon-reload
systemctl start kibana
systemctl enable kibana
  • Kibana Dashboard 접속

http://3.38.138.101:5601

0개의 댓글