logstash와 filebeat 설정하기

Elasticsearch의 버전업을 지원하기 위해서 logstash 와 filebeat를 새롭게 설치하고 설정해보았다. 진행한 작업 내용을 정리 해보았다.

먼저 서버 구성은 다음과 같다.

시스템 구성도

filebeat

filebeat 설치

  1. filebeat 를 yum을 통해서 설치

    sudo rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
    
  2. /etc/yum.repods.d/elastic.repo 추가

    [elastic-6.x]
    name=Elastic repository for 6.x packages
    baseurl=https://artifacts.elastic.co/packages/6.x/yum
    gpgcheck=1
    gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
    enabled=1
    autorefresh=1
    type=rpm-md
    
  3. yum 을 통해서 설치

    yum install filebeat
    

filebeat 설정

filebeat 에서는 json 형태로 logstash 에게 데이터를 전달하고, 이때 message 필드에 수집한 로그 파일의 데이터가 담겨진다. 수집하려는 log file 의 유형에 따라서 community beats를 사용할 수도 있지만, 나의 경우에는 Custom pattern의 로그 파일을 수집할 예정이라 logstash에서 pasring 하는 형태를 선택했다. (직접 beat를 만들 수도 있다.링크, 언어는 golang.)

  1. /etc/filebeat/filebeat.yml 파일 변경

filebeat.prospectors:

# Each - is a prospector. Most options can be set at the prospector level, so
# you can use different prospectors for various configurations.
# Below are the prospector specific configurations.

- type: log
  enabled: true
  paths:
    - /var/log/my_log_path/*.log
  fields:
    index_name: "my_custom_file_index_name"

#----------Elasticsearch output--------------- 주석처리
# (beats 에서 바로 ES 로 데이터 전달하지 않음)


#----------Logstash output ------------------- 주석해제
# (beats 에서 logstash 로 데이터 전달)

output.logstash:
  # The Logstash hosts
  hosts: ["my-logstash-server-host:5044"]

...

filebeat 실행

service filebeat start

filebeat 데몬 로그 확인

tail -f /var/log/filebeat/filebeat

filebeat 에서 file 을 다시 읽어 들어야 하는 경우

echo "[]" > /var/lib/filebeat/registry

logstash

logstash 설치

logstash plugin 설치

bin/logstash-plugin install logstash-filter-alter
Validating logstash-filter-alter
Installing logstash-filter-alter
Installation successful

logstash 에 filter 설정

logstash 실행

nohup logstash/bin/logstash -f logstash.conf > /var/log/logstash/logstash.out

elasticsearch 확인

참고

J.S Ahn

J.S Ahn

Software Developer, I love code.

comments powered by Disqus
rss facebook twitter github youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora