[ELK Stack] 6 - 운영
ELK Stask 을 본격적으로 사용하는 설정을 해봅니다.
Filebeat에서 파일을 수집하고 Logstash 에서 필터링을 거쳐서 ElasticSearch 에 적제를 하고 Kiana 에서 시각화를 합니다.
기본포트는 아래와 같이 사용하며 서버가 다르다면 방화벽 설정이 필요합니다.
Filebeat : 5044
Logstash : 9200
ElasticSearch : 9200
Kibana : 5601
서비스를 띄우는 설정을 .bat 파일로 만들어서 관리 하면 편합니다.
ElasticSearch (Rnn_ElasticSearch.bat) |
cd C:\ELK_Stack\ElasticSearch\bin elasticsearch.bat |
Filebeat (Run_Filebeat.bat) |
cd C:\ELK_Stack\FileBeat filebeat.exe -c filebeat.yml -e -v |
Kibana (Run_Kibana.bat) |
cd C:\ELK_Stack\Kibana\bin kibana.bat |
LogStash (Run_Logstash.bat) |
cd C:\ELK_Stack\LogStash\bin logstash.bat -f logstash.conf |
순서는 상관 없으나.
Filebeat -> Logstash -> Elasticsearch -> Kibana 로 한개 한개 서비스 시작되는것 확인 하고 다음꺼 실행하는것이 마음이 편합니다.
Filebeat 설정 (filebeat.yml)
https://www.elastic.co/guide/en/beats/filebeat/current/configuring-howto-filebeat.html
폴더에 생성되는 파일을 Logstash 로 보냅니다.
Input 과 Output 만 설정을 잘해도 문제 없이 사용 할 수 있습니다.
Input 은 두개의 폴더에 저장되는 .log 파일을 가져옵니다.
tag 는 특징 있는 단어로 지정합니다.
(여러 서버에서 Logstash 혹은 Elasticsearch 로 보낸다로 하면 tags 를 이용해서 어디서 온건지 알 수 있습니다.)
filebeat.inputs: - type: log paths: - C:\ELK_Stack\LogData\*.log tags: ["server1"] fields_under_root: true - type: log paths: - C:\ELK_Stack\LogFiles\*.log tags: ["server2"] fields_under_root: true #----------------------------- Logstash output -------------------------------- output.logstash: hosts: ["localhost:5044"] |
LogStash 설정 (logstash.conf)
https://www.elastic.co/guide/en/logstash/current/index.html
Filebeat 에서 넘어온 데이터를 Elasticsearch 로 보냅니다.
Filebeat 에서 설정한 tags 를 가지고 필터링과 Elasticsearch 로 보낼때 인덱스 설정을 해서 보냅니다.
#[Beats input plugin] #listen on port 5044 for incomming Beats connections input { beats { port => 5044 } } # The filter part of this file is commented out to indicate that it is # optional # filter { # if "server1" in [tags] { # grok { # match => {"message" => "%{IP:ipaddress} %{NUMBER:log_no} %{WORD:text1} %{WORD:text2}"} # } # } # [Elasticsearch output plugin] # index into Elasticsearch output { if "server1" in [tags] { elasticsearch { hosts => ["localhost:9200"] manage_template => true index => "server1" } } if "server2" in [tags] { elasticsearch { hosts => ["localhost:9200"] manage_template => true index => "server2" } } } |
Elasticsearch 인덱스 추가
https://www.elastic.co/guide/en/elasticsearch/reference/6.3/indices-create-index.html
elasticsearch.yml 파일에 action.auto_create_index: true 를 추가합니다.
Kibana DevTools 메뉴에서 명령어를 입력합니다.
PUT /server1?pretty
PUT /server2?pretty
GET /_cat/indices?v
인덱스는 소문자여야 합니다.
잘 만들어 졌습니다.
LogData, LogFiles 폴더에 데이터(마음껏 만들어 주세요)가 있는 .log 파일을 생성합니다.
저장을 하면 Filebeat 에 파일명과 데이터 정보가 표시되며 전달 되는걸 볼 수 있습니다.
kibana 에서 데이터 확인
잘 들어옵니다.
공식 사이트에서 여러 옵션에 대한 설명이 있으니 참고하며 기능을 확장해 나가시면 됩니다.