본문 바로가기
Server

filebeat, metricbeat의 module 사용해서 Kibana로 시각화해보기

by Ahngyuho 2023. 7. 16.

Beats

 

What is Beast?

filebeat, metricbeat와 같은 Beats 제품군들은 Elastic에서 개발한 데이터 수집기 입니다.

Beats는 Go 언어로 개발된 프로그램으로 설치된 서버에 큰 부담을 주지 않고, ELK와 연계되어 다양한 시스템 이벤트를 

수집할 수 있습니다.

 

https://www.elastic.co/kr/downloads/beats/

 

Beats 다운로드: Elasticsearch를 위한 데이터 수집기

Elastic Stack용 경량 데이터 수집기인 Beats를 사용하여 데이터를 Elasticsearch로 손쉽게 수집하고 로그 파일, CPU 메트릭, 네트워크 데이터 등을 처리하세요.

www.elastic.co

 

설치 및 실행은 블로그에 포스팅 되어 있으니 참고 부탁드립니다.

https://agh-dev.tistory.com/3

 

Nginx 서버에 filebeat와 metricbeat 설치 후 설정파일 작성

이제 ec2에 nginx 서버를 설치해보고 이 웹 서버의 로그와 메트릭 정보를 Elasticsearch로 넘겨서 Kibana로 시각화 해보겠습니다. 환경은 ec2의 Ubuntu 22.04버전 입니다. Nginx 설치 sudo apt-get update sudo apt-get in

agh-dev.tistory.com

 

환경 설정까지 끝마친 이후 이제 module을 적용해 보겠습니다.

module이란 다양한 유형의 데이터를 생성하도록 자동으로 Beats 제품군들을 설정하여 사용자들에게 편의성을 가져다주는 기능입니다. 예를 들어 Nginx에서 일반적으로 유용하게 사용되는 로그 데이터들을 모듈을 사용하여 filebeat에서 자동으로 데이터를 생성하도록 도와주는 것입니다. 

 

module 적용

저의 filebeat,metricbeat는 apt-get 으로 설치한 deb 기반 프로그램 입니다. tar ~ 를 통해 설치한 경우 명령어가 다르니 주의해주세요. 

우선 module들이 정의되어 있는 폴더로 가봅시다. 혹시 접근 제한에 걸리는 경우 sudo -su 를 통해 root 계정으로 들어가주시기 바랍니다.

cd /etc/filebeat/modules.d
ls

그리고 존재하는 파일들의 list를 출력해보면

이런 식으로 굉장히 많은 module 들이 존재합니다. 저 모듈들은 해당 서비스에서 가장 유용하고 일반적으로 사용되는 데이터들을 자동으로 filebeat가 내보내주는 로그 데이터들에 포함시켜 줍니다.

 

이제 module을 적용시켜 봅시다.

sudo filebeat modules enable aws
sudo systemctl restart filebeat.service

 

그러면 이제 error가 발생했다고 나올텐데 이럴 경우 모듈이 제대로 적용되지 않은 겁니다.

 

문제의 원인은 module 활성화 이고 활성화는 간단합니다.

sudo vi aws.yml

# Module: aws
# Docs: https://www.elastic.co/guide/en/beats/filebeat/8.8/filebeat-module-aws.html

- module: aws
  cloudtrail:
    enabled: true

처음엔 enabled에 false 가 되어 있습니다. 이걸 true 로 바꿔주시면 됩니다.

 

이젠 Nginx도 마찬가지로 활성화 해보겠습니다.

cd /etc/filebeat/modules.d

sudo filebeat modules enable nginx
sudo vi nginx.yml

# Module: nginx
# Docs: https://www.elastic.co/guide/en/beats/filebeat/8.8/filebeat-module-nginx.html

- module: nginx
  # Access logs
  access:
    enabled: true

    # Set custom paths for the log files. If left empty,
    # Filebeat will choose the paths depending on your OS.
    var.paths: ["/var/log/nginx/access.log"]

  # Error logs
  error:
    enabled: true

    # Set custom paths for the log files. If left empty,
    # Filebeat will choose the paths depending on your OS.
    var.paths: ["/var/log/nginx/error.log"]

sudo systemctl restart filebeat.service

 

지금 저는 module이 제공하는 filebeat 자동 데이터 생성과 이 데이터를 통해 Kibana에서 시각화를 해볼 예정이므로

아래 명령어를 입력해주세요. Kibana와 반드시 연결되어 있어야 하고, Kibana 서버가 아닌 filebeat가 설치된 서버에 입력해주세요.

filebeat setup --dashboards

 

Kibana 시각화

수많은 대시보드를 보실 수 있으실 겁니다. 여기에 nginx라고 검색어를 적어주시면

Kibana에서 Nginx 모듈을 활성화하면서 사용할 수 있게되는 대시보드들이 이렇게 나옵니다.

 

 

저는 system도 활성화 했으니 Kibana가 지원하는 system 대시보드도 한번 살펴보겠습니다.

 

자 이렇게 filebeat와 metricbeat 제품을 사용하여 각 서비스에서 유용하게 사용되는 데이터들을 자동으로 가져와 생성해주는 module과 활성화 설정 및 활성화를 해보았고, Kibana와 연동하여 데이터 시각화까지 해보았습니다.