다음을 통해 공유


Fluent Bit를 사용하여 Azure Data Explorer로 데이터 수집

Fluent Bit는 다양한 원본에서 로그, 메트릭 및 추적을 수집하는 오픈 소스 에이전트입니다. 이를 통해 이벤트 데이터를 스토리지로 보내기 전에 필터링, 수정 및 집계할 수 있습니다. 이 문서에서는 Fluent Bit를 사용하여 KQL 데이터베이스로 데이터를 보내는 프로세스를 안내합니다.

이 문서에서는 Fluent Bit를 사용하여 데이터를 수집하는 방법을 보여줍니다.

데이터 커넥터의 전체 목록은 데이터 커넥터 개요를 참조하세요.

필수 조건

Microsoft Entra 서비스 주체 만들기

Microsoft Entra 서비스 주체는 다음 예제와 같이 Azure Portal 통해 만들거나 프로그래밍 방식으로 만들 수 있습니다.

이 서비스 프린시펄은 커넥터가 Kusto의 테이블에 데이터를 쓰는 데 사용되는 ID입니다. 이 서비스 주체가 Kusto 리소스에 액세스할 수 있는 권한을 부여합니다.

  1. Azure CLI를 통해 Azure 구독에 로그인합니다. 그런 다음 브라우저에서 인증합니다.

    az login
    
  2. 서비스 주체를 호스트하는 구독을 선택합니다. 이 단계는 여러 구독이 있는 경우에 필요합니다.

    az account set --subscription YOUR_SUBSCRIPTION_GUID
    
  3. 서비스 주체를 만듭니다. 이 예시에서는 서비스 주체를 my-service-principal이라고 합니다.

    az ad sp create-for-rbac -n "my-service-principal" --role Contributor --scopes /subscriptions/{SubID}
    
  4. 반환된 JSON 데이터에서 나중에 사용할 수 있도록 appId, password, tenant를 복사합니다.

    {
      "appId": "00001111-aaaa-2222-bbbb-3333cccc4444",
      "displayName": "my-service-principal",
      "name": "my-service-principal",
      "password": "00001111-aaaa-2222-bbbb-3333cccc4444",
      "tenant": "00001111-aaaa-2222-bbbb-3333cccc4444"
    }
    

Microsoft Entra 애플리케이션과 서비스 주체를 만들었습니다.

대상 테이블 만들기

Fluent Bit는 세 가지 속성(log(dynamic), tag(string), timestamp(datetime))을 포함하는 JSON 형식으로 로그를 전달합니다.

이러한 각 속성에 대한 열이 있는 테이블을 만들 수 있습니다. 또는 구조적 로그가 있는 경우 사용자 지정 열에 로그 속성이 매핑된 테이블을 만들 수 있습니다. 자세히 알아보려면 관련 탭을 선택합니다.

Fluent Bit의 수신 로그에 대한 테이블을 만들려면 다음을 수행합니다.

  1. 쿼리 환경으로 이동합니다.

  2. 테이블을 만들 데이터베이스를 선택합니다.

  3. 다음 .create table 명령을 실행합니다.

    .create table FluentBitLogs (log:dynamic, tag:string, timestamp:datetime)
    

    수신 JSON 속성은 올바른 열에 자동으로 매핑됩니다.

서비스 주체에 권한 부여

Microsoft Entra 서비스 주체가데이터베이스 수집기 역할 권한을 통해 데이터베이스와 작업할 수 있도록 서비스 주체에 권한을 부여합니다. 자세한 내용은 예제참조하세요. 자리 표시자 DatabaseName을 대상 데이터베이스의 이름으로 바꾸고 ApplicationID을 Microsoft Entra 서비스 주체를 생성할 때 저장한 AppId 값으로 바꾸세요.

.add database <DatabaseName> ingestors ('aadapp=<ApplicationID>;<TenantID>')

테이블에 로그를 보내도록 Fluent Bit 구성

Kusto에서 테이블에 로그를 보내도록 Fluent Bit를 구성하려면 다음 출력 속성을 사용하여 클래식 모드 또는 YAML 모드 구성 파일을 만듭니다.

필드 설명 필수 기본값
이름 파이프라인 이름입니다. azure_kusto
테넌트 ID Microsoft Entra 서비스 주체 생성에서 나온 테넌트 ID 입니다. ✔️
클라이언트 ID Microsoft Entra 서비스 주체만들기의 애플리케이션 ID는 입니다. ✔️
클라이언트 비밀키 (client_secret) Microsoft Entra 서비스 주체만들기 에서 가져온 클라이언트 암호 키 값(암호)입니다. ✔️
수집_엔드포인트 Ingestion_Endpoint에 설명된 대로 값을 입력하세요. ✔️
데이터베이스_이름 로크 테이블을 포함하는 데이터베이스의 이름. ✔️
table_name 대상 테이블 만들기 의 테이블 이름은입니다. ✔️
수집_매핑_참조 수집 매핑의 이름은 대상 테이블 만들기로부터입니다. 수집 매핑을 만들지 않은 경우 구성 파일에서 속성을 제거합니다.
로그 키 로그 콘텐츠의 키 이름입니다. 예를 들어 log. log
태그_키 태그의 키 이름입니다. include_tag_key false이면 무시됩니다. tag
include_time_key 사용하도록 설정된 경우 타임스탬프가 출력에 추가됩니다. time_key 속성을 사용합니다. true
시간_키 로그 레코드의 타임스탬프에 대한 키 이름입니다. include_time_key false이면 무시됩니다. timestamp
데이터 수집 지점 연결 시간 초과 다양한 Kusto 엔드포인트의 연결 시간 제한(초)입니다. 60s
압축_사용가능 사용하도록 설정된 경우 압축된 HTTP 페이로드(gzip)를 Kusto로 보냅니다. true
데이터_수집_자원_갱신_간격 Kusto 엔드포인트의 수집 리소스 새로 고침 간격(초). 3600
노동자 이 출력에 대한 플러시 작업을 수행할 작업자 수입니다. 0

예제 구성 파일을 보려면 관련 탭을 선택합니다.

[SERVICE]
    Daemon Off
    Flush 1
    Log_Level trace
    HTTP_Server On
    HTTP_Listen 0.0.0.0
    HTTP_Port 2020
    Health_Check On

[INPUT]
    Name tail
    Path /var/log/containers/*.log
    Tag kube.*
    Mem_Buf_Limit 1MB
    Skip_Long_Lines On
    Refresh_Interval 10

[OUTPUT]
    match *
    name azure_kusto
    tenant_id <TenantId>
    client_id <ClientId>
    client_secret <AppSecret>
    ingestion_endpoint <IngestionEndpoint>
    database_name <DatabaseName>
    table_name <TableName>
    ingestion_mapping_reference <MappingName>
    ingestion_endpoint_connect_timeout <IngestionEndpointConnectTimeout>
    compression_enabled <CompressionEnabled>
    ingestion_resources_refresh_interval <IngestionResourcesRefreshInterval>

데이터 수집 확인

  1. 데이터가 테이블에 도착하면 행 수를 확인하여 데이터 전송을 확인합니다.

    FluentBitLogs
    | count
    
  2. 로그 데이터 샘플을 보려면 다음 쿼리를 실행합니다.

    FluentBitLogs
    | take 100