Fluent Bit 문서/주요 개념

1 개요[ | ]

Key Concepts
주요 개념

Fluent Bit의 작동 방식을 이해하는 데 정말 중요한 몇 가지 핵심 개념이 있습니다.

Fluent Bit 에 대해 알아보기 전에 서비스의 몇 가지 주요 개념을 숙지하는 것이 좋습니다. 이 문서에서는 이러한 개념과 일반적인 Fluent Bit 용어를 자세히 소개합니다. 용어 목록이 아래에 있지만, 로그 및 스트림 프로세서에 대해 보다 폭넓게 이해하려면, 이 문서를 처음부터 끝까지 읽는 것이 좋습니다.

2 이벤트 또는 레코드[ | ]

Fluent Bit에서 검색한 로그 또는 메트릭에 속하는 모든 수신 데이터 조각은 이벤트 또는 레코드로 간주됩니다.

예를 들어, 다음과 같은 Syslog 파일이 있다고 생각해봅시다.

Jan 18 12:52:16 flb systemd[2222]: Starting GNOME Terminal Server
Jan 18 12:52:16 flb dbus-daemon[2243]: [session uid=1000 pid=2243] Successfully activated service 'org.gnome.Terminal'
Jan 18 12:52:16 flb systemd[2222]: Started GNOME Terminal Server.
Jan 18 12:52:16 flb gsd-media-keys[2640]: # watch_fast: "/org/gnome/terminal/legacy/" (establishing: 0, active: 0)

여기에는 4개의 행이 포함되어 있으며, 각각 독립적인 이벤트 4개를 나타냅니다.

내부적으로 이벤트는 다음으로 구성됩니다.

  • 타임스탬프
  • 키/값 메타데이터(v2.1.0부터)
  • 페이로드

2.1 이벤트 형식[ | ]

Fluent Bit 와이어 프로토콜은 이벤트를 첫 번째 요소로 포개진 배열이 있는 2요소 배열로 나타냅니다.

[[TIMESTAMP, METADATA], MESSAGE]

여기서

  • TIMESTAMP는 정수 또는 부동 소수점 값(문자열 아님)으로 된 초 단위의 타임스탬프입니다.
  • METADATA는 이벤트 메타데이터를 포함하는 비어 있을 수 있는 객체입니다.
  • MESSAGE는 이벤트 본문을 포함하는 객체입니다.

Fluent Bit 버전 v2.1.0 이전에는, 이벤트를 표현하는 데에 다음 형식을 사용했습니다.

[TIMESTAMP, MESSAGE]

이 형식은 입력 이벤트 스트림을 읽는 데 계속 지원됩니다.

3 필터링[ | ]

이벤트 내용을 수정해야 하는 경우도 있습니다. 이벤트를 변경, 보강, 제거하는 프로세스를 필터링이라고 합니다.

필터링이 필요한 사용 사례는 다음과 같습니다.

  • IP 주소나 메타데이터와 같은 특정 정보를 이벤트에 추가합니다.
  • 이벤트 내용의 일부분을 선택합니다.
  • 특정 패턴과 일치하는 이벤트를 제거합니다.

4 태그[ | ]

Fluent Bit에 들어가는 모든 이벤트에는 태그가 할당됩니다. 이 태그는 라우터가 통과해야 하는 필터 또는 출력 단계를 결정하기 위해 이후 단계에서 사용되는 내부 문자열입니다.

대부분의 태그는 구성에서 수동으로 할당됩니다. 태그가 지정되지 않은 경우, Fluent Bit는 해당 이벤트가 생성된 입력 플러그인 인스턴스의 이름을 할당합니다.

태그를 할당하지 않는 유일한 입력 플러그인은 Forward 입력입니다. 이 플러그인은 모든 이벤트가 이미 연결된 태그와 함께 제공되는 Forward라는 Fluentd 와이어 프로토콜을 사용합니다. Fluent Bit는 항상 클라이언트가 설정한 수신 태그를 사용합니다.

태그된 레코드에는 항상 매치 규칙이 있어야 합니다. 태그 및 매치 항목에 대해 자세히 알아보려면 라우팅 섹션을 확인하세요.

5 타임스탬프[ | ]

타임스탬프는 이벤트가 생성된 시간을 나타냅니다. 모든 이벤트에는 연결된 타임스탬프가 포함되어 있습니다. 타임스탬프는 다음 형식의 숫자입니다.

SECONDS.NANOSECONDS

5.1[ | ]

Unix epoch 이후 경과된 초 수입니다 .

5.2 나노초[ | ]

분수초 또는 1억분의 1초입니다.

타임스탬프는, 입력 플러그인에 의해 설정되거나 데이터 파싱 프로세스를 통해 발견되며, 항상 존재합니다.

6 매치[ | ]

Fluent Bit를 사용하면 수집 및 처리된 이벤트를 하나 이상의 대상으로 전달할 수 있으며, 이는 라우팅 단계를 통해 수행됩니다. 매치는 태그가 정의된 규칙과 일치하는 이벤트를 선택하는 간단한 규칙을 나타냅니다.

태그 및 일치 항목에 대해 자세히 알아보려면 라우팅 섹션을 확인하세요.

7 구조화된 메시지[ | ]

소스 이벤트에는 구조가 있을 수도 있고 없을 수도 있습니다. 구조는 이벤트 메시지 내의 키와 값 세트를 정의합니다. 예를 들어 다음 두가지 메시지를 생각해봅시다.

7.1 구조화되지 않은 메시지[ | ]

"Project Fluent Bit created on 1398289291"

7.2 구조화된 메시지[ | ]

{"project": "Fluent Bit", "created": 1398289291}

낮은 수준에서는 둘 다 단지 바이트 배열이지만, 구조화된 메시지는 키와 값을 정의하므로 구조를 갖는 것은 데이터 수정에 대한 더 빠른 작업을 구현하는 데 도움이 됩니다.

Fluent Bit는 항상 모든 이벤트 메시지를 구조화된 메시지로 처리합니다. 성능상의 이유로 우리는 MessagePack이라는 이진 직렬화 데이터 형식을 사용합니다 .

MessagePack을 JSON의 바이너리 버전이라고 생각해 보세요.

8 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}