[Filebeat] 가볍게 사용해 볼까요?

Elastic/Beats 2015. 10. 27. 15:13
filebeat 가 릴리즈 되었습니다.
▶ elastic blog : https://www.elastic.co/blog/weekly-beats-first-filebeat-release

GA 버전은 아니고 beta4 이지만 그래도 의미 있는 릴리즈이기 때문에 소식을 전하지 않았나 싶습니다.

여기서는 가볍게 FEL (Filebeat + Elasticsearch + Logstash) 구성으로 /var/log 아래 파일로그에 대한 수집과 색인까지 살펴 보도록 하겠습니다.


Kibana를 이용한 dashboard 구성은 제가 직접 만들면 되는데 귀찮아서 그냥 이건 skip 하도록 하겠습니다.

기본적으로 elastic에서 제공하고 있는 dashboard sample 데이터가 있으니 참고 하시면 좋을 것 같습니다.

(2015.10.27일 기준으로 filebeat 는 등록되어 있지 않습니다.)


▶ elastic reference : https://www.elastic.co/guide/en/beats/libbeat/current/getting-started.html#load-kibana-dashboards


curl -L -O http://download.elastic.co/beats/dashboards/beats-dashboards-1.0.0-beta4.tar.gz

tar xzvf beats-dashboards-1.0.0-beta4.tar.gz

cd beats-dashboards-1.0.0-beta4/

./load.sh


[FEL Architecture]

기본적인 아키텍쳐링은 elastic 문서에 잘 나와 있습니다.



[Filebeat 란?]

filebeat는 기본적으로 logstash forwarder를 기반으로 만들어 졌습니다.

개별 노드에 agent 형태로 설치가 되어 동작 하게 되며, log directories or specific log files, tails the files 에 대해서 elasticsearch로 색인하게 됩니다.


참고 문서)

* "logstash-forwarder" : https://github.com/elastic/logstash-forwarder

* "libbeat platform" : https://www.elastic.co/guide/en/beats/libbeat/current/index.html


[Filebeat 설치]

※ 개발 장비로 macbook 을 사용중이기 때문에 mac 기준으로 작성 합니다.


Step 1) 다운로드를 받고 압축을 해제 합니다.

다운로드 링크 : https://www.elastic.co/downloads/beats/filebeat

$ tar -xvzf filebeat-1.0.0-beta4-darwin.tgz

$ cd filebeat-1.0.0-beta4-darwin

$ vi filebeat.yml


Step 2) filebeat.yml 설정
 filebeat configure : https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-configuration-details.html
filebeat도 elasticsearch와 마찬가지로 잘 모르면 기본 설정으로 사용 하시면 됩니다.
기본적으로 설정 하셔야 하는 값들은 "paths", "log", "elasticsearch", "logstash" 설정입니다.

...중략...
      paths:
        - /var/log/*.log

      type: log
...중략...
output:

  ### Elasticsearch as output
  elasticsearch:

    # Set to true to enable elasticsearch output
    enabled: false

...중략...

  logstash:

    # Uncomment out this option if you want to output to Logstash. The default is false.

    enabled: true


    # The Logstash hosts

    hosts: ["localhost:5044"]

...중략...


※ 여기서 elasticsearch.enabled: false 로 하는 것은 F -> L -> E 구조로 사용하기 위해서 입니다.


 filebeat logstash output configure : https://www.elastic.co/guide/en/beats/libbeat/master/configuration.html#logstash-output


Step 3) dynamic template 설정

이 설정은 logstash를 사용해 보신 분이라면 어떤 용도인지 잘 아실거라고 생각 합니다.

짧게 설명 드리면 dynamic mapping에 의한 특정 index 패턴에 사전 mapping 구성을 통해 생성되는 field의 특성을 pre-define 하는 설정을 하는 것입니다.


$ curl -XPUT 'http://localhost:9200/_template/filebeat?pretty' -d@filebeat.template.json

※ filebeat.template.json 파일은 압축 해제 하신 경로에 포함되어 있습니다.


Step 4) filebeat 실행

※ elasticsearch와 logstash를 먼저 실행 시켜 둔 후 아래 명령어로 실행 합니다.


$ sudo ./filebeat -e -c filebeat.yml -d "publish"


[Logstash 구성]

  1. filebeat 데이터를 받아 줄 logstash를 구성 합니다.
  2. logstash 1.5.4 이상
  3. beats plugin 설치
    $ bin/plugin install logstash-input-beats

[Filebeat용 logstash config 생성]

아래 설정은 libbeat reference 문서에 자세히 나와 있습니다.

 libbeat reference : https://www.elastic.co/guide/en/beats/libbeat/current/getting-started.html

input {

  beats {

    port => 5044

  }

}


output {

  elasticsearch {

    host => "localhost"

    port => "9200"

    protocol => "http"

    index => "%{[@metadata][index]}"

    document_type => "%{[@metadata][type]}"

  }

}


아래 그림은 제 맥북에서 실행 시킨 명령어 스크린샷 입니다.



logstash) bin/logstash -f conf/filebeat.config

filebeat) sudo ./filebeat -e -c filebeat.yml -d "publish"

kibana) bin/kibana

elasticsearch) bin/elasticsearch


간단하게 요약을 하면 이렇습니다.)


1. 수집 할 대상 서버에 filebeat 를 설치하고 실행 합니다.

2. logstash input beat 를 실행하고 output 으로 elasticsearch로 색인 되도록 합니다.

3. elasticsearch에 적재된 로그를 기반으로 kibana에서 dashboard를 구성 합니다.


: