Skip to content

Latest commit

 

History

History
127 lines (74 loc) · 7.34 KB

[5주차]7장 비츠.md

File metadata and controls

127 lines (74 loc) · 7.34 KB

비츠(Beats)


비츠는 수집한 데이터를 엘라스틱으로 실어 나르기 위해 최전방에 위치한 소프트웨어.

가벼운 프로그램을 지향하기 때문에 하나의 목적 만을 수행한다.

아래와 같은 종류들의 비트들이 있다.(아래에 기술되어있지 않은 수많은 비트가 존재)

  • 파일비트(로그 파일 수집)

  • 메트릭비트(메트릭 수집)

  • 패킷비트(네트워크 데이터 수집)

  • 원로그비트(윈도우 이벤트 로그 수집)

  • 오딧비트(감사 데이터 수집) ???

  • 하트비트(가동 시간 모니터링 데이터 수집)

  • 펑션비트(서버리스 데이터 수집)

  • 카프카비트(카프카 토픽 데이터 수집)

  • 엔진엑스비트(엔진엑스 상태 수집)

  • MySQL비트(MySQL 상태 수집)

립비트(Libbeat)란?

데이터 전달을 위한 공통 라이브러리이다. 모든 오픈 소스 Beats는 libbeat를 기반으로 한다.

모든 비츠는 립비트로 데이터를 먼저 보내서 처리한다.

비츠의 일반적인 동작 과정
  1. 비트를 다운로드한다.

  2. 비트 설정 파일을 수정한다.

  3. 엘라스틱서치와 키바나 대시보드를 사용할 수 있게 설정한다.

  4. 비트를 시작한다.

  5. 키바나 대시보드에서 데이터를 확인한다.

파일비트

책에서는 파일비트를 위주로 다루고 있다.

구성요소 내용
입력 설정 파일에서 하베스터에 대한 입력 소스를 정한다. 파일비트는 하나 혹은 여러 개의 입력을 가질 수 있다.
하베스터 입력에 명시된 파일을 직접 수집하는 주체이다. 파일 하나 당 하나의 하베스터를 가지며, 하베스터는 파일을 한 줄씩 읽고 내보내는 역할을 한다. 또한 파일을 열고 닫는 역할도 한다. 하베스터가 실행되는 동안에는 파일 디스크립터가 열려 있다.
스풀러 하베스터가 수집한 이벤트를 엘라스틱서치나 로그스태시 같은 장소로 전달한다.

파일비트의 인풋 타입

인풋 타입 설명
log 가장 기본이 되는 타입으로, 파일시스템의 지정한 경로에서 로그 파일을 읽어 들인다.
container 도커 같은 컨테이너의 로그를 수집하기 위한 입력으로, 파일을 읽어 들인다는 점에서 log와 유사하다.
s3 log 타입과 유사하나, 아마존 웹 서비스의 S3 버킷에 위치한 파일을 읽어 들인다.
kafka 다른 타입과는 다르게 파일을 읽어 들이는 대신 카프카의 토픽을 읽어 들인다.

파일비트의 아웃풋 타입

아웃풋 타입 설명
elasticsearch 가장 많이 사용되는 타입으로, 수집한 이벤트를 엘라스틱서치로 직접 인덱싱한다.
logstash 수집할 양이 많거나 처리하기 어려운 가공작업이 필요할 때 별도의 로그스태시를 구축한 뒤 수집한 이벤트를 전송한다. 다수의 인덱싱 요청이 로그스태시에서 단일 벌크 리퀘스트로 묶여 인덱싱 효율의 개선을 기대할 수 있다. -> 즉, logstash로 보내서 복잡한걸 간단하게 만들어서 저장한다는 얘기인가?
kafka 파일비트에서 1차적으로 수집한 이벤트를 카프카로 전송한다. 수집 중 장애 발생 시 데이터 손실을 최소화 하기 위한 방안으로 활용된다.
console 수집한 이벤트를 시스템 콘솔에 출력한다. 일반적으로 테스트 목적으로 사용된다.

파일비트의 하베스트는 파일을 한 줄씩 읽고 내보내는 역할을 한다고 했는데, 하나의 로그가 여러 줄로 나올 때(java log pattern)를 멀티라인 옵션을 제공하고 있다.

옵션 설명
pattern 정규식을 이용해 패턴을 지정한다. 패턴과 일치하는 라인이 나타나면 멀티라인으로 인식한다.
negate true: 패턴 일치 조건을 반전시킨다. false: 패턴 일치 조건 그대로 유지
match after: 패턴이 일치하던/일치하지않던 라인을 앞쪽에 붙인다. before: 뒷쪽에 붙인다.

모듈

모듈은 많이 사용되고 잘 알려진 시스템 데이터를 수집하기 위한 일반적인 설정을 사전 정의해둔 것이다. 모듈을 이용하면 복잡한 가공이 필요한 이벤트인 경우에도 최소한의 비츠 설정으로 손쉽게 로그들을 수집할 수 있다.

책에서는 파일비트 기준으로 설명.

파일비트 모듈

모듈 설명
aws AWS의 CloudWatch, CloudTrail 같은 서비스에서 발생하는 로그들을 수집할 수 있다.
cef 시스로그를 통해 CEF(Common Event Format) 이벤트를 입력받을 수 있다.
cisco 시스코사의 ASA, Nexus 등 네트워크 장비에서 발생되는 이벤트를 수집한다.
elasticsearch 엘라스틱서치의 클러스터, GC, 감사로그 등을 수집할 때 사용한다.
googleclude 구글 클라우드 플랫폼의 VPC 플로우, 방화벽 로그 등을 수집할 수 있다.
logstash 로그스태시에서 발생한 로그들을 수집할 수 있다.

모니터링

비츠가 데이터 입출력을 잘하고 있는지 비츠가 동작 중인 호스트의 리소스들은 문제가없는지 등을 엘라스틱서치와 키바나를 통해 확인할 수 있는 기능이다. filebeat.yml 파일비트 설정 파일에서 모니터링 설정 추가

monitoring.enabled: true
// 모니터링 클러스터 주소
// uuid는 엘라스틱서치 API를 통해서 알 수 있다.
// curl -XGET "localhost:9200"
# monitoring.cluster_uuid: PRODUCTION_ES_CLUSTER_UUID 
monitoring.elasticsearch:
    hosts: ["localhost:9200"]