비츠는 수집한 데이터를 엘라스틱으로 실어 나르기 위해 최전방에 위치한 소프트웨어.
가벼운 프로그램을 지향하기 때문에 하나의 목적 만을 수행한다.
아래와 같은 종류들의 비트들이 있다.(아래에 기술되어있지 않은 수많은 비트가 존재)
-
파일비트(로그 파일 수집)
-
메트릭비트(메트릭 수집)
-
패킷비트(네트워크 데이터 수집)
-
원로그비트(윈도우 이벤트 로그 수집)
-
오딧비트(감사 데이터 수집) ???
-
하트비트(가동 시간 모니터링 데이터 수집)
-
펑션비트(서버리스 데이터 수집)
-
카프카비트(카프카 토픽 데이터 수집)
-
엔진엑스비트(엔진엑스 상태 수집)
-
MySQL비트(MySQL 상태 수집)
데이터 전달을 위한 공통 라이브러리이다. 모든 오픈 소스 Beats는 libbeat를 기반으로 한다.
모든 비츠는 립비트로 데이터를 먼저 보내서 처리한다.
-
비트를 다운로드한다.
-
비트 설정 파일을 수정한다.
-
엘라스틱서치와 키바나 대시보드를 사용할 수 있게 설정한다.
-
비트를 시작한다.
-
키바나 대시보드에서 데이터를 확인한다.
책에서는 파일비트를 위주로 다루고 있다.
구성요소 | 내용 |
---|---|
입력 | 설정 파일에서 하베스터에 대한 입력 소스를 정한다. 파일비트는 하나 혹은 여러 개의 입력을 가질 수 있다. |
하베스터 | 입력에 명시된 파일을 직접 수집하는 주체이다. 파일 하나 당 하나의 하베스터를 가지며, 하베스터는 파일을 한 줄씩 읽고 내보내는 역할을 한다. 또한 파일을 열고 닫는 역할도 한다. 하베스터가 실행되는 동안에는 파일 디스크립터가 열려 있다. |
스풀러 | 하베스터가 수집한 이벤트를 엘라스틱서치나 로그스태시 같은 장소로 전달한다. |
파일비트의 인풋 타입
인풋 타입 | 설명 |
---|---|
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"]