Develop-Study / ElasticSearch-study

0 stars 0 forks source link

7장. 비츠 #10

Open seryang opened 2 years ago

seryang commented 2 years ago

비츠란

7.1 비츠 소개

7.3 파일비트

파일비트 구성 요소

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

7.3.3 파일비트 실행

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

filebeat.inputs:

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

# filestream is an input for collecting log messages from files.
- type: log
- 
  # Change to true to enable this input configuration.
  enabled: true

# ---------------------------- Elasticsearch Output ----------------------------
output.elasticsearch:
  hosts: ["localhost:9200"]

# =================================== 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"

파일비트 인풋 타입

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

파일비트 아웃풋 타입

아웃풋 타입 설명
elasticsearch 가장 많이 사용되는 타입으로, 수집한 이벤트를 엘라스틱서치로 직접 인덱싱
logstash 다수의 비츠를 사용해 엘라스틱서치로 전송되는 인덱싱 리퀘스트의 양이 많거나, 비츠나 인제스트 노드 수준에서 처리하기 어려운 가공 작업이 필요할 때 별도의 로그스태시를 구축 한 후 수집한 이벤트를 전송. 다수의 인덱싱 요청이 로그스태시에서 단일 벌크 리퀘스트로 묶여 인덱싱 효율의 개선을 기대할 수 있음. 이때 전송한 이벤트는 로그스태시의 beats 인풋을 이용해 입력받을 수 있음
kafka 파일비트에서 1차적으로 수집한 이벤트를 카프카로 전송. 카프카는 좀 더 안정적인 수집 파이프라인을 구성할 때 신뢰할 만한 중간 저장소/큐이므로 수집 중 장애 발생 시 데이터 손실을 최소화하기 위한 방안으로 활용. 최종적으로 엘라스틱서치의 인덱싱을 원할 경우 이후 다시 파일비트의 카프카 인풋을 이용하거나 로그스태시의 카프카 인풋을 이용해 입력할 수 있음
console 수집한 이벤트를 시스템 콘솔에 출력. 일반적으로 수집이 정상적으로 이뤄지는지 입력 설정을 테스트하기 위한 목적으로 사용
./filebeat setup -e

7.3.4 파일비트 설정

7.3.4.1 유용한 설정

output.elasticsearch: ...

setup.kibana: host: ...


- ignore_older는 인풋 타입이 log인 경우 사용할 수 있는 옵션으로 ignore_older 값은 10h(10시간), 10m(10분)처럼 타임스트링 형식으로 작성
- 예를 들어, ignore_older를 10h로 설정하면 최근 10시간 전의 로그만 수집하겠다는 의미
- ignore_older의 기본값은 0으로, 특별히 값을 명시하지 않으면 파일의 생성/수정 시간과 무관하게 모든 내용을 읽어 들임
- 다음은 특정 라인이나 파일을 추가/제외하흔 옵션이다
```text
filebeat.inputs:
- type : log
  enalbed : true
  paths: xxx
  include_lines: ['^ERR', '^WARN']
  exclude_lines: ['^DBG']
  exclude_files: ['\.gz$']

...

7.3.4.2 멀티라인 로그 처리

filebeat.inputs:
- type : log
  enalbed : true
  paths: xxx
  multiline.pattern: '^[[:space:]]'
  multiline.negate: false
  multiline.match: after
...

멀티라인 로그

aoo
koo
boo
boo
zoo
boo

멀티라인 처리를 위한 설정

filebeat.inputs:
- type : log
 ...
   multiline.pattern: '^b'
   multiline.negate: true or false
   multiline.match: before or after