본문 바로가기
클라우드/ElasticStack

[ElasticStack] filebeat 설치와 실행

by 정권이 내 2021. 4. 20.

ELK 로그 수집기 filebeat

ElasticStack에서 로그를 활용하려면 로그를 옮겨줄 무언가가 필요한데 ElasticSearch에서 제공하는 filebeat 입니다.

물론 filebeat 가 아니여도 Logstash에서 직접 로그파일을 지정하거나 소켓을 열어서 로그를 받을수도 있지만 엘라스틱서치에서 제공하는만큼 사용 해보겠습니다.

 

filebeat 란

파일비트는 로그를 중앙집계해서 전송하는 경량 프로세스입니다. 로그파일을 모니터링하면서 로그 이벤트를 수집하고 Elasticsearch 또는 Logstash로 전송합니다.

파일비트가 기동되면 사용자가 지정한 경로에 존재하는 로그파일의 내용을 수집하여 집계한후 파일비트에서 설정한 곳으로 데이터를 전송합니다.

filebeat 설치

Redhat 계열 리눅스에서 설치할때는 다음과같이 명령을 실행합니다.

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.12.0-x86_64.rpm
sudo rpm -vi filebeat-7.12.0-x86_64.rpm

파일을 받고 정상적으로 설치가 되었는지 확인해봅시다.

rpm -qa | grep filebeat
systemctl status filebeat

img

아직 filebeat를 시작하지 않았기 때문에 inactive 상태입니다.

filebeat 실행

파일비트를 실행하고 로그데이터 전송의 결과를 확인하기 위해서는 Elasticsearch, Kibana 설치되있어야 합니다.

엘라스틱 서치가 실행중이라면 파일비트와 연결하기위해 파일비트 설정을 변경해야 합니다. 파일비트는 rpm을 통해 설치했으므로 설정 파일 경로가 지정되있습니다. 아래에 있는 경로로 들어가서 설정파일을 열어줍니다.

cd /etc/filebeat
sudo vi filebeat.yml

설정파일에서 Output을 설정하는곳이 있습니다. username, password 의 주석을 해제후 사용할 값으로 변경합니다.

# ================================== Outputs ===================================

# Configure what output to use when sending the data collected by the beat.

# ---------------------------- Elasticsearch Output ----------------------------
output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["localhost:9200"]

  # Protocol - either `http` (default) or `https`.
  #protocol: "https"

  # Authentication credentials - either API key or username/password.
  #api_key: "id:api_key"
  username: "elastic"
  password: "elastic"

키바나도 설치를 했다면 host 주석을 해제합니다.

# =================================== Kibana ===================================

# Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API.
# This requires a Kibana endpoint configuration.
setup.kibana:

  # Kibana Host
  # Scheme and port can be left out and will be set to the default (http and 5601)
  # In case you specify and additional path, the scheme is required: http://localhost:5601/path
  # IPv6 addresses should always be defined as: https://[2001:db8::1]:5601
  host: "localhost:5601"

 

로그 수집

파일비트에서 로그를 수집하는 방법에는 몇가지 종류가 있습니다.

데이터 수집용 모듈을 사용하거나 ECS-logger 혹은 사용자가 직접 경로를 설정하는방식입니다. 저는 사용자 지정경로의 로그를 읽는 방식으로 해보겠습니다.

 

filebeat.yml 수정

/etc/filebeat/filebeat.yml 파일을 다음과 같이 수정해봅시다.

# ============================== Filebeat inputs ===============================

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/*.log

경로를 나타내는 paths 가 /var/log/*.log 로 되있습니다. 해당 경로에 파일 확장자가 log인 파일 모두를 읽는다는 뜻입니다.

 

filebeat 로드

파일비트를 사용하기 전에 로그 데이터를 파싱, 인덱스, 시각화하기 위해 미리정의된 asset들을 불러와야 합니다.

filebeat setup -e

 

filebeat 실행

이제 모든 준비가 되었으니 파일비트를 실행시켜 봅시다.

systemctl start filebeat
systemctl status filebeat

img

파일비트의 상태를 확인후 Kibana 웹에 접속하여 로그가 들어왔는지 확인해봅시다.

Kibana 웹 확인

Kibana 웹에서 왼쪽의 Analytics 탭의 Discover 를 클릭하면 파일비트가 엘라스틱서치로 전송한 로그 데이터를 확인할수있습니다.

img

사진처럼 무언가 찍혀있다면 파일비트가 정상적으로 로그데이터를 전송한것입니다. 지금은 Kibana에서 단순하게 로그 데이터만 출력하지만 대시보드를 활용하면 훨씬 더 시각적이고 효과적인 로그 모니터링 화면을 만들수 있습니다.

반응형

댓글