데이터 분석/툴

[ELK Stack] 6 - 운영

nethunter 2018. 7. 10. 10:32
반응형


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 에서 데이터 확인




잘 들어옵니다.


공식 사이트에서 여러 옵션에 대한 설명이 있으니 참고하며 기능을 확장해 나가시면 됩니다. 


반응형