Computer >> 컴퓨터 >  >> 프로그래밍 >> 데이터베이스

Filebeat 모듈을 활용한 손쉬운 로그 분석 완벽 가이드

Filebeat 모듈을 활용한 손쉬운 로그 분석 완벽 가이드

Elastic{on} 2017 이후 Elastic Stack에 추가될 새로운 기능들에 대한 기대가 높아지고 있는데, 그중에서도 가장 주목할 만한 것이 바로 Filebeat 모듈(Module) 개념입니다. 예전에는 Filebeat로 데이터를 수집하려면 상당히 번거로운 준비 과정이 필요했습니다. Filebeat 환경설정을 직접 작성하고, Elasticsearch 매핑 템플릿을 생성하고, Ingest 파이프라인이나 Logstash 인스턴스를 구축·테스트한 뒤, 마지막으로 해당 데이터셋을 위한 Kibana 시각화까지 일일이 만들어야 했습니다.

Beats 팀은 이러한 설정 절차를 모두 하나의 패키지로 묶어 명령어 한 줄로 활성화할 수 있도록 개선했습니다. Filebeat 5.3.0부터는 MySQL, Nginx, Apache, 시스템 로그용 모듈이 기본 포함되어 배포되며, 필요하다면 자신만의 모듈을 만드는 것도 어렵지 않습니다.

Filebeat 모듈이 공개된 지 몇 주가 지났습니다. 이 글에서는 ObjectRocket과 같이 외부에 호스팅된 Elasticsearch 클러스터와 함께 Filebeat 모듈을 사용하는 방법을 소개합니다. ObjectRocket 서비스는 최근 Elasticsearch 5.4 버전을 출시했기 때문에, 지금 바로 Filebeat 모듈을 사용해 보며 새로운 auditd 모듈과 Linux system.auth 파일셋(fileset)의 장점을 누릴 수 있습니다.

준비하기

아래 설명은 ObjectRocket for Elasticsearch 인스턴스와 해당 UI를 기준으로 작성되었지만, 다른 서비스나 직접 운영하는 클러스터에서도 큰 어려움 없이 응용할 수 있습니다. 이번 예제에서는 'system' 모듈을 사용하지만, 다른 모듈을 추가하는 방법 역시 매우 간단합니다.

준비물은 다음과 같습니다:

  • Elasticsearch 5.3 이상 인스턴스 (일부 초기 5.x 버전에서도 정상 동작했지만 보장은 어렵습니다)
  • 동일한 버전의 Kibana
  • Elasticsearch 클러스터 접속용 호스트명
  • 클러스터에 쓰기 및 인덱스 생성 권한이 있는 사용자 자격 증명
  • Filebeat 5.3 이상

Elasticsearch 클러스터와 Kibana가 이미 준비되어 있다고 가정하면, 먼저 사용 중인 운영체제에 맞는 Filebeat를 내려받아 로그를 수집할 시스템에 압축을 해제합니다. 이 글의 예제는 macOS를 실행하는 맥북에서 Elasticsearch 5.4.0 클러스터에 연결하는 환경이므로 filebeat-5.4.0-darwin-x86_64.tar.gz 패키지를 사용했습니다. 아카이브를 풀면 Filebeat 설정을 시작할 준비가 완료됩니다.

Filebeat 설정하기

기본값으로 Filebeat는 포함된 filebeat.yml 파일을 기준으로 로컬 머신의 Elasticsearch 인스턴스에 연결을 시도하고 /var/log/*.log 경로의 모든 로그를 읽어 들입니다. 따라서 먼저 이 파일을 수정해 여러분의 클러스터를 가리키도록 하고, 불필요한 프로스펙터(prospector) 항목은 제거해야 합니다. ObjectRocket 서비스를 사용한다면 UI에서 제공하는 Beats 스니펫을 복사하는 것만으로도 클러스터 전용 호스트명이 자동으로 채워지므로 편리합니다.

Filebeat 모듈을 활용한 손쉬운 로그 분석 완벽 가이드

불필요한 내용을 모두 정리하고 사용자 이름과 비밀번호를 채워 넣으면, filebeat.yml 파일은 대략 다음과 같은 형태가 됩니다:

output:
  elasticsearch:
    # The Elasticsearch cluster
    hosts: ["https://dfw-xxxx-0.es.objectrocket.com:xxxx", "https://dfw-xxxx-1.es.objectrocket.com:xxxx", "https://dfw-xxxx-2.es.objectrocket.com:xxxx", "https://dfw-xxxx-3.es.objectrocket.com:xxxx"]

    # HTTP basic auth
    username: "elasticsearch"
    password: "supersecretpassword"

이것으로 설정은 끝입니다. 입력(input) 항목은 모두 제거되고 파일에는 Elasticsearch 연결 정보만 남아 있습니다. 이 시점에서 여러분의 머신에서 Elasticsearch 클러스터에 실제로 접근 가능한지, ACL이 올바르게 추가되었는지도 반드시 확인하세요. 이제 Filebeat를 실행해 모든 것을 움직여 보겠습니다.

Filebeat 실행하기

클러스터와 통신하기 위한 설정은 모두 끝났습니다. filebeat.yml을 기본 위치에 그대로 두고 수정했다면, filebeat 디렉터리에서 다음 명령어만 실행하면 됩니다:

./filebeat -e -modules=system -setup

-e 옵션은 Filebeat가 syslog 대신 stderr로 로그를 출력하게 하고, -modules=system은 system 모듈을 사용하도록 지정하며, -setup은 해당 모듈의 Kibana 대시보드를 불러오라는 의미입니다. -setup 옵션은 처음 실행할 때와 Filebeat를 업그레이드한 후에만 필요합니다. 기본 대시보드를 Kibana에 등록하는 작업이기 때문입니다. 여러 모듈을 동시에 실행하고 싶다면 쉼표로 구분해 나열하면 됩니다(공백 없이).

참고: Filebeat 5.4.0에는 특정 시스템에서 -setup 명령이 실패할 수 있는 버그가 있습니다. 이 경우 ulimit -n 2048처럼 ulimit 값을 더 높게 설정하거나, filebeat 5.3.x 버전을 사용하면 우회할 수 있습니다.

이제 Filebeat가 로그 수집을 시작했을 것입니다. 오류 메시지가 보이지 않는다면 Kibana로 이동해 결과를 확인해 보겠습니다.

데이터 확인하기

Kibana에 로그인하면 새로운 filebeat-* 인덱스 패턴과 함께 몇 가지 새로운 시각화 및 대시보드가 생성되어 있을 것입니다. 'Dashboards' 메뉴로 이동해 'Filebeat syslog dashboard'를 열어 보세요.

짜잔! 시스템 로그에 데이터가 조금이라도 있다면 멋진 데이터 시각화 결과를 확인할 수 있습니다.

Filebeat 모듈을 활용한 손쉬운 로그 분석 완벽 가이드

참고: Filebeat에서 눈에 띄는 오류가 없는데도 Kibana에 데이터가 나타나지 않는다면, 시스템 로그 자체가 조용해서일 가능성이 높습니다. 실제로 저도 기본값인 'Last 15 minutes'보다 날짜 범위를 더 넓혀야 데이터를 볼 수 있었습니다.

마무리

모듈 개념은 가장 흔한 사용 사례에서 Beats를 더욱 쉽게 활용할 수 있게 해주는 멋진 진전입니다. 이번 예제의 기본 원리는 그대로 확장해 현재 제공되는 다른 모듈에도 적용할 수 있습니다. 예를 들어 WordPress, Drupal, Magento 같은 많은 웹 애플리케이션은 웹 서버와 MySQL을 함께 사용합니다. 이 모듈 세트 하나와 명령어 한 줄이면 웹 서버, 데이터베이스, 그리고 애플리케이션의 시스템 로그까지 한 번에 수집을 시작할 수 있습니다.

더 자세한 정보가 필요하거나 모듈이 어떻게 구성되어 있는지 깊이 살펴보고 싶다면 개발자 문서를 참고하고, Filebeat 설치 디렉터리의 모듈 폴더를 둘러보세요. 모듈이 사용하는 프로스펙터, 파이프라인, 템플릿, 시각화 요소들을 Kibana에서 보이는 결과물과 직접 대조해 볼 수 있을 것입니다.