Fluent Bit 문서/모니터링

1 개요[ | ]

Monitoring
모니터링

Fluent Bit 데이터 파이프라인을 모니터링하는 방법 알아보기

Fluent Bit에는 파이프라인 내부를 모니터링하고, Prometheus 및 Grafana에 연결하고, 상태 확인 및 커넥터를 사용하여 이러한 목적으로 외부 서비스를 사용할 수 있는 기능이 내장되어 있습니다.

2 HTTP 서버[ | ]

Fluent Bit에는 내부 정보를 쿼리하고 실행 중인 각 플러그인의 지표를 모니터링하는 데 사용할 수 있는 HTTP 서버가 내장되어 있습니다.

모니터링 인터페이스는 기본 형식을 지원하므로 Prometheus와 쉽게 통합될 수 있습니다.

2.1 시작하기[ | ]

시작하기 위한 첫 번째 단계는 설정 파일에서 HTTP 서버를 활성화하는 것입니다.

[SERVICE]
    HTTP_Server  On
    HTTP_Listen  0.0.0.0
    HTTP_PORT    2020

[INPUT]
    Name cpu

[OUTPUT]
    Name  stdout
    Match *

위의 설정 스니핏은 Fluent Bit에 TCP 포트 2020에서 HTTP 서버를 시작하고 모든 네트워크 인터페이스에서 수신하도록 지시합니다.

$ bin/fluent-bit -c fluent-bit.conf
Fluent Bit v1.4.0
* Copyright (C) 2019-2020 The Fluent Bit Authors
* Copyright (C) 2015-2018 Treasure Data
* Fluent Bit is a CNCF sub-project under the umbrella of Fluentd
* https://fluentbit.io

[2020/03/10 19:08:24] [ info] [engine] started
[2020/03/10 19:08:24] [ info] [http_server] listen iface=0.0.0.0 tcp_port=2020

이제 간단한 curl 명령어만으로 몇 가지 정보를 수집할 수 있습니다.

$ curl -s http://127.0.0.1:2020 | jq
{
  "fluent-bit": {
    "version": "0.13.0",
    "edition": "Community",
    "flags": [
      "FLB_HAVE_TLS",
      "FLB_HAVE_METRICS",
      "FLB_HAVE_SQLDB",
      "FLB_HAVE_TRACE",
      "FLB_HAVE_HTTP_SERVER",
      "FLB_HAVE_FLUSH_LIBCO",
      "FLB_HAVE_SYSTEMD",
      "FLB_HAVE_VALGRIND",
      "FLB_HAVE_FORK",
      "FLB_HAVE_PROXY_GO",
      "FLB_HAVE_REGEX",
      "FLB_HAVE_C_TLS",
      "FLB_HAVE_SETJMP",
      "FLB_HAVE_ACCEPT4",
      "FLB_HAVE_INOTIFY"
    ]
  }
}

터미널에서 JSON 데이터를 쉽게 읽을 수 있도록 도와주는 jq 프로그램에 curl 명령 출력을 보내고 있다는 점을 참고하세요. Fluent Bit는 JSON을 예쁘게 인쇄하는 것을 목표로 하지 않습니다.

2.2 REST API 인터페이스[ | ]

Fluent Bit는 모니터링을 위한 유용한 인터페이스를 노출하는 것을 목표로 하며, Fluent Bit v0.14부터 다음의 엔드포인트를 사용할 수 있습니다.

URI 설명 데이터 형식
/ Fluent Bit 빌드 정보 JSON
/api/v1/uptime 업타임 정보를 초 단위로 사람이 읽을 수 있는 형식으로 가져옵니다. JSON
/api/v1/메트릭 로드된 플러그인당 내부 메트릭 JSON
/api/v1/metrics/prometheus Prometheus 서버에서 사용할 준비가 된, 로드된 플러그인당 내부 메트릭 Prometheus Text 0.0.4
/api/v1/storage 스토리지 계층/버퍼링된 데이터의 내부 메트릭을 가져옵니다. 이 옵션은 SERVICE 섹션의 storage.metrics 속성이 활성화된 경우에만 활성화됩니다. JSON
/api/v1/health Fluent Bit 헬스 체크 결과 문자열
/api/v2/metrics 로드된 플러그인당 내부 측정항목 cmetrics text 형식
/api/v2/metrics/prometheus Prometheus 서버에서 사용할 준비가 된, 로드된 플러그인당 내부 메트릭 Prometheus Text 0.0.4
/api/v2/reload 핫 리로딩을 실행하거나 핫 리로딩 상태를 가져옵니다. 자세한 내용은 핫 리로드 문서를 참조하세요. JSON

2.3 메트릭 설명[ | ]

2.3.1 v1 메트릭[ | ]

다음은 /api/v1/metrics/prometheus에서 prometheus 형식으로 출력되는 메트릭에 대한 자세한 설명입니다 .

다음 정의를 이해하는 것이 중요합니다.

  • 레코드: 파일의 긴 한 줄과 같이 소스에서 수집된 단일 메시지입니다.
  • 청크: Fluent Bit 입력 플러그인 인스턴스는 로그 레코드를 수집하여 청크로 저장합니다. 청크의 레코드 배치는 단일 단위로 함께 추적됩니다. Fluent Bit 엔진은 레코드를 최대 2MB의 청크로 맞추려고 시도하지만 크기는 런타임에 달라질 수 있습니다. 그런 다음 청크가 출력으로 전송됩니다. 출력 플러그인 인스턴스는 전체 청크를 대상으로 성공적으로 보내고 이를 성공으로 표시하거나, 복구불가 오류가 발생한 경우 청크를 완전히 실패시키거나 청크를 재시도하도록 요청할 수 있습니다.
메트릭 이름 레이블 설명 유형 단위
fluentbit_input_bytes_total 이름: 입력 인스턴스의 이름 또는 별칭 이 입력 인스턴스가 성공적으로 수집된 로그 레코드의 바이트 수 카운터 바이트
fluentbit_input_records_total 이름: 입력 인스턴스의 이름 또는 별칭 이 입력이 성공적으로 수집한 로그 레코드 수 카운터 레코드
fluentbit_output_dropped_records_total 이름: 출력 인스턴스의 이름 또는 별칭 출력에 의해 삭제된 로그 레코드 수. 이는 복구불가 오류가 발생했거나 해당 청크에 대한 재시도가 만료되었음을 의미합니다. 카운터 레코드
fluentbit_output_errors_total 이름: 출력 인스턴스의 이름 또는 별칭 오류(복구불가 또는 재시도가능)가 발생한 청크 수. 이는 청크가 실패한 횟수이며 Fluent Bit 로그 출력에 표시되는 오류 메시지 수와 일치하지 않습니다. 카운터 청크
fluentbit_output_proc_bytes_total 이름: 출력 인스턴스의 이름 또는 별칭 이 출력 인스턴스가 성공적으로 보낸 로그 레코드의 바이트 수. 이는 이 출력에서 ​​전송된 모든 고유 청크의 총 바이트 크기입니다. 오류로 인해 레코드가 전송되지 않으면 이 메트릭에 포함되지 않습니다. 카운터 바이트
fluentbit_output_proc_records_total 이름: 출력 인스턴스의 이름 또는 별칭 이 출력 인스턴스가 성공적으로 보낸 로그 레코드 수. 이는 이 출력에서 ​​전송된 모든 고유 청크의 총 레코드 수입니다. 레코드가 성공적으로 전송되지 않으면 이 메트릭에 포함되지 않습니다. 카운터 레코드
fluentbit_output_retried_records_total 이름: 출력 인스턴스의 이름 또는 별칭 재시도가 발생한 로그 레코드 수. 이는 청크 수준에서 계산되며 전체 청크가 재시도 대상으로 표시되면 개수가 증가합니다. 출력 플러그인은 단일 청크를 업로드할 때 많은 오류 메시지를 생성하는 여러 작업을 수행할 수도 있고 수행하지 않을 수도 있습니다. 카운터 레코드
fluentbit_output_retries_failed_total 이름: 출력 인스턴스의 이름 또는 별칭 청크에 대해 만료된 재시도 횟수. 각 플러그인은 청크에 적용되는 Retry_Limit를 구성합니다. 청크에 대한 Retry_Limit에 도달하면 해당 청크는 삭제되고 이 메트릭은 증가합니다. 카운터 청크
fluentbit_output_retries_total 이름: 출력 인스턴스의 이름 또는 별칭 출력 인스턴스가 청크에 대해 재시도를 요청한 횟수 카운터 청크
fluentbit_uptime Fluent Bit가 실행된 시간(초) 카운터
process_start_time_seconds Fluent Bit가 시작된 시점에 대한 Unix Epoch 타임스탬프 게이지

다음은 /api/v1/storage에서 JSON 형식으로 출력하는 메트릭에 대한 자세한 설명입니다.

메트릭 키 설명 단위
청크.total_chunks Fluent Bit가 현재 버퍼링하고 있는 총 레코드 청크 수 청크
청크.mem_chunks 현재 메모리에 버퍼링된 총 청크 수. 청크는 메모리와 파일 시스템에 동시에 있을 수 있습니다. 청크
청크.fs_chunks 파일 시스템에 저장된 총 청크 수 청크
청크.fs_chunks_up 청크가 메모리에 있으면 "업(up)" 상태입니다. 따라서 이것은 파일시스템과 메모리 모두에 있는 청크의 수입니다. 청크
청크.fs_chunks_down 파일시스템에만 있는 , "다운(down)" 상태 청크 수 청크
 
input_chunks.{플러그인 이름}.status.overlimit 이 입력 인스턴스가 설정된 Mem_Buf_Limit 초과 여부 boolean
input_chunks.{플러그인 이름}.status.mem_size 이 입력이 로그를 청크로 버퍼링하기 위해 소비하는 메모리 크기 바이트
input_chunks.{플러그인 이름}.status.mem_limit 이 입력 플러그인에 적용되는 버퍼 메모리 제한(Mem_Buf_Limit) 바이트
input_chunks.{플러그인 이름}.chunks.total 현재 이 입력 인스턴스가 소유한 총 청크 수 청크
input_chunks.{플러그인 이름}.chunks.up 이 입력에 대해 메모리에 "작동"된 현재 청크 수입니다. 파일 시스템 저장소가 활성화된 경우 "업(up)" 상태 청크는 파일시스템 계층에도 포함됩니다. 청크
input_chunks.{플러그인 이름}.chunks.down 이 입력에 대해 파일시스템에서 현재 "다운(down)" 상태 청크 수 청크
input_chunks.{플러그인 이름}.chunks.busy "사용 중(busy)" 청크는 출력에 의해 처리/전송되고 있으며 새 데이터를 추가할 수 없는 청크입니다. 청크
input_chunks.{플러그인 이름}.chunks.busy_size 현재 사용 중으로 표시된 각 청크의 바이트 크기 합계 바이트

2.3.2 v2 메트릭[ | ]

다음은 /api/v2/metrics/prometheus 또는 /api/v2/metrics에서 prometheus 형식으로 출력되는 메트릭에 대한 자세한 설명입니다.

다음 정의를 이해하는 것이 중요합니다.

  • 레코드: 파일의 긴 한 줄과 같이, 소스에서 수집된 단일 메시지
  • 청크: Fluent Bit 입력 플러그인 인스턴스는 로그 레코드를 수집하여 청크로 저장합니다. 청크의 레코드 배치는 단일 단위로 함께 추적됩니다. Fluent Bit 엔진은 레코드를 최대 2MB의 청크로 맞추려고 시도하지만, 크기는 런타임에 달라질 수 있습니다. 그런 다음 청크가 출력으로 전송됩니다. 출력 플러그인 인스턴스는 전체 청크를 대상으로 성공적으로 보내고 이를 성공으로 표시하거나, 복구불가 오류가 발생한 경우 청크를 완전히 실패시키거나 청크를 재시도하도록 요청할 수 있습니다.
메트릭 이름 레이블 설명 유형 단위
fluentbit_input_bytes_total 이름: 입력 인스턴스의 이름 또는 별칭 이 입력 인스턴스가 성공적으로 수집된 로그 레코드의 바이트 수 카운터 바이트
fluentbit_input_records_total 이름: 입력 인스턴스의 이름 또는 별칭 이 입력이 성공적으로 수집한 로그 레코드 수 카운터 레코드
fluentbit_filter_bytes_total 이름: 필터 인스턴스의 이름 또는 별칭 이 필터 인스턴스가 성공적으로 수집된 로그 레코드의 바이트 수 카운터 바이트
fluentbit_filter_records_total 이름: 필터 인스턴스의 이름 또는 별칭 이 필터가 성공적으로 수집한 로그 레코드 수 카운터 레코드
fluentbit_filter_add_records_total 이름: 필터 인스턴스의 이름 또는 별칭 필터에 의해 추가된 로그 레코드 수입니다. 이는 데이터 파이프라인에 추가되었음을 의미합니다. 카운터 레코드
fluentbit_filter_dropped_records_total 이름: 필터 인스턴스의 이름 또는 별칭 필터에 의해 삭제된 로그 레코드 수입니다. 이는 데이터 파이프라인에서 제거되었음을 의미합니다. 카운터 레코드
fluentbit_output_dropped_records_total 이름: 출력 인스턴스의 이름 또는 별칭 출력에 의해 삭제된 로그 레코드 수입니다. 이는 복구할 수 없는 오류가 발생했거나 해당 청크에 대한 재시도가 만료되었음을 의미합니다. 카운터 레코드
fluentbit_output_errors_total 이름: 출력 인스턴스의 이름 또는 별칭 오류(복구 불가능 또는 재시도 가능)가 발생한 청크 수입니다. 이는 청크가 실패한 횟수이며 Fluent Bit 로그 출력에 표시되는 오류 메시지 수와 일치하지 않습니다. 카운터 청크
fluentbit_output_proc_bytes_total 이름: 출력 인스턴스의 이름 또는 별칭 이 출력 인스턴스가 성공적으로 보낸 로그 레코드의 바이트 수입니다 . 이는 이 출력에서 ​​전송된 모든 고유 청크의 총 바이트 크기입니다. 오류로 인해 레코드가 전송되지 않으면 이 측정항목에 포함되지 않습니다. 카운터 바이트
fluentbit_output_proc_records_total 이름: 출력 인스턴스의 이름 또는 별칭 이 출력 인스턴스가 성공적으로 보낸 로그 레코드 수입니다 . 이는 이 출력에서 ​​전송된 모든 고유 청크의 총 레코드 수입니다. 레코드가 성공적으로 전송되지 않으면 이 지표에 포함되지 않습니다. 카운터 레코드
fluentbit_output_retried_records_total 이름: 출력 인스턴스의 이름 또는 별칭 재시도가 발생한 로그 레코드 수입니다. 이는 청크 수준에서 계산되며 전체 청크가 재시도 대상으로 표시되면 개수가 증가합니다. 출력 플러그인은 단일 청크를 업로드할 때 많은 오류 메시지를 생성하는 여러 작업을 수행할 수도 있고 수행하지 않을 수도 있습니다. 카운터 레코드
fluentbit_output_retries_failed_total 이름: 출력 인스턴스의 이름 또는 별칭 청크에 대해 만료된 재시도 횟수입니다. 각 플러그인은 청크에 적용되는 Retry_Limit를 구성합니다. 청크에 대한 Retry_Limit에 도달하면 해당 청크는 삭제되고 이 지표는 증가됩니다. 카운터 청크
fluentbit_output_retries_total 이름: 출력 인스턴스의 이름 또는 별칭 이 출력 인스턴스가 청크에 대한 재시도를 요청한 횟수입니다. 카운터 청크
fluentbit_uptime 호스트 이름: Fluent-BIT 실행 시 호스트 이름 Fluent Bit가 실행된 시간(초)입니다. 카운터
fluentbit_process_start_time_seconds 호스트 이름: Fluent-BIT 실행 시 호스트 이름 Fluent Bit가 시작된 시점의 Unix Epoch 타임스탬프입니다. 게이지
fluentbit_build_info 호스트 이름: 호스트 이름, 버전: fluent-bit 버전, os: OS 유형 버전 정보를 빌드합니다. 반환된 값은 구성 컨텍스트의 Unix Epoch 타임스탬프 초기화에서 비롯됩니다. 게이지
fluentbit_hot_reloaded_times 호스트 이름: Fluent-BIT 실행 시 호스트 이름 핫 리로드 횟수를 수집합니다. 게이지

다음은 스토리지 계층에서 수집하는 메트릭에 대한 자세한 설명입니다.

측정항목 이름 레이블 설명 유형 단위
fluentbit_input_chunks.storage_chunks 없음 Fluent Bit가 현재 버퍼링하고 있는 총 레코드 청크 수입니다. 게이지 청크
fluentbit_storage_mem_chunk 없음 현재 메모리에 버퍼링된 총 청크 수입니다. 청크는 메모리와 파일 시스템에 동시에 있을 수 있습니다. 게이지 청크
fluentbit_storage_fs_chunks 없음 파일 시스템에 저장된 총 청크 수입니다. 게이지 청크
fluentbit_storage_fs_chunks_up 없음 청크가 메모리에 있으면 "작동(up)" 상태입니다. 따라서 이것은 파일 시스템과 메모리 모두에 있는 청크의 수입니다. 게이지 청크
fluentbit_storage_fs_chunks_down 없음 파일시스템에만 있는, "다운(down)" 상태의 청크 수 게이지 청크
fluentbit_storage_fs_chunks_busy 없음 총 청크 수가 사용 중 상태입니다. 게이지 청크
fluentbit_storage_fs_chunks_busy_bytes 없음 청크의 총 바이트 수는 사용 중 상태입니다. 게이지 바이트
 
fluentbit_input_storage_overlimit 이름: 입력 인스턴스의 이름 또는 별칭 이 입력 인스턴스가 구성된 Mem_Buf_Limit를 초과합니까? 게이지 boolean
fluentbit_input_storage_memory_bytes 이름: 입력 인스턴스의 이름 또는 별칭 이 입력이 로그를 청크로 버퍼링하기 위해 소비하는 메모리 크기입니다. 게이지 바이트
 
fluentbit_input_storage_chunks 이름: 입력 인스턴스의 이름 또는 별칭 현재 이 입력 인스턴스가 소유한 총 청크 수입니다. 게이지 청크
fluentbit_input_storage_chunks_up 이름: 입력 인스턴스의 이름 또는 별칭 이 입력에 대해 메모리에 "작동"된 현재 청크 수입니다. 파일 시스템 저장소가 활성화된 경우 "작동"된 청크는 파일 시스템 계층에도 포함됩니다. 게이지 청크
fluentbit_input_storage_chunks_down 이름: 입력 인스턴스의 이름 또는 별칭 이 입력에 대해 파일 시스템에서 현재 "다운"된 청크 수입니다. 게이지 청크
fluentbit_input_storage_chunks_busy 이름: 입력 인스턴스의 이름 또는 별칭 "사용 중(up)" 청크는 출력에 의해 처리/전송되고 있으며 새 데이터를 추가할 수 없는 청크입니다. 게이지 청크
fluentbit_input_storage_chunks_busy_bytes 이름: 입력 인스턴스의 이름 또는 별칭 현재 사용 중으로 표시된 각 청크의 바이트 크기 합계입니다. 게이지 바이트
 
fluentbit_output_upstream_total_connections 이름: 출력 인스턴스의 이름 또는 별칭 각 출력 플러그인의 연결 수의 합입니다. 게이지 바이트
fluentbit_output_upstream_busy_connections 이름: 출력 인스턴스의 이름 또는 별칭 각 출력 플러그인의 사용 중 상태에서의 연결 수의 합계입니다. 게이지 바이트

2.4 Uptime 예시[ | ]

다음 명령어를 사용하여 서비스 업타임을 쿼리합니다.

$ curl -s http://127.0.0.1:2020/api/v1/uptime | jq

다음과 같은 결과 출력될 것입니다.

{
  "uptime_sec": 8950000,
  "uptime_hr": "Fluent Bit has been running:  103 days, 14 hours, 6 minutes and 40 seconds"
}

2.5 메트릭 예시[ | ]

다음 명령어를 사용하여 JSON 형식의 내부 메트릭을 쿼리합니다.

$ curl -s http://127.0.0.1:2020/api/v1/metrics | jq

다음과 같은 결과 출력될 것입니다.

{
  "input": {
    "cpu.0": {
      "records": 8,
      "bytes": 2536
    }
  },
  "output": {
    "stdout.0": {
      "proc_records": 5,
      "proc_bytes": 1585,
      "errors": 0,
      "retries": 0,
      "retries_failed": 0
    }
  }
}

2.6 Prometheus 형식의 메트릭[ | ]

Prometheus Text 0.0.4 형식으로 내부 메트릭을 쿼리합니다.

$ curl -s http://127.0.0.1:2020/api/v1/metrics/prometheus

동일한 메트릭이 이번에는 JSON 대신 Prometheus 형식으로 표시됩니다.

fluentbit_input_records_total{name="cpu.0"} 57 1509150350542
fluentbit_input_bytes_total{name="cpu.0"} 18069 1509150350542
fluentbit_output_proc_records_total{name="stdout.0"} 54 1509150350542
fluentbit_output_proc_bytes_total{name="stdout.0"} 17118 1509150350542
fluentbit_output_errors_total{name="stdout.0"} 0 1509150350542
fluentbit_output_retries_total{name="stdout.0"} 0 1509150350542
fluentbit_output_retries_failed_total{name="stdout.0"} 0 1509150350542

2.7 별칭 설정[ | ]

3 Grafana 대시보드와 알림[ | ]

Fluent Bit의 노출된 Prometheus 스타일 메트릭을 활용하여 대시보드 및 알림를 생성할 수 있습니다. 제공된 예시 대시보드Banzai Cloud로깅 오퍼레이터 대시보드에서 많은 영감을 받았지만, instance 레이블 사용(이유는 여기 참조), 누적 그래프, Fluent Bit 메트릭에 중점을 두는 등 몇 가지 주요 차이점이 있습니다.

Spaces-wOptY6OABpfLp0KVgOvv-uploads-git-blob-4b267767a24f5bdb21bcafbef0bc49efeed8f616-dashboard.png

3.1 알림[ | ]

샘플 알림은 여기에서 확인할 수 있습니다 .

4 Fluent Bit 헬스 체크[ | ]

5 Calyptia[ | ]

Calyptia는 데이터 흐름, 지표 및 구성을 포함하여 Fluent Bit 에이전트를 모니터링할 수 있는 호스팅 서비스입니다.

Spaces-wOptY6OABpfLp0KVgOvv-uploads-git-blob-7cf6d8ace22cb03a3bb769bf6a1e7729c096b3aa-image-19-.png

5.1 Calyptia Cloud 시작하기[ | ]

Fluent Bit 에이전트를 등록하는 데는 1분도 안 걸립니다. 절차는:

  • Calyptia Core 콘솔로 이동하여 로그인합니다.
  • 왼쪽 메뉴에서 설정을 클릭하고 API 키를 생성/복사하세요.

Fluent Bit 설정 파일에 다음 설정 섹션을 추가합니다.

[CUSTOM]
    name     calyptia
    api_key  <YOUR_API_KEY>

설정에서 API 키를 교체하세요.

Fluent Bit 에이전트를 다시 시작한 후 몇 초 후에 Calyptia Cloud 대시보드에 에이전트가 나열됩니다. 메트릭이 표시되는 데 약 30초 정도 걸립니다.

Spaces-wOptY6OABpfLp0KVgOvv-uploads-git-blob-19eceaa08b667812bf549ac6c7e388347ace7c44-agent.png

5.2 Calyptia에 연락하기[ | ]

Calyptia 팀에 연락하려면 hello@calyptia.com 으로 이메일을 보내주세요.

6 참고[ | ]

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