다음을 통해 공유


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

Fluent Bit 는 다양한 원본에서 로그, 메트릭 및 추적을 수집하는 오픈 소스 에이전트입니다. 이를 통해 이벤트 데이터를 스토리지로 보내기 전에 필터링, 수정 및 집계할 수 있습니다. Azure 데이터 탐색기는 로그 및 원격 분석 데이터에 사용 가능한 빠르고 확장성이 우수한 데이터 탐색 서비스입니다. 이 문서에서는 Fluent Bit를 사용하여 Azure Data Explorer로 데이터를 보내는 프로세스를 안내합니다.

이 문서에서는 다음을 수행하는 방법을 알아봅니다.

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

필수 조건

쿼리 환경에 사용 가능한 쿼리 도구를 사용할 수 있습니다.

로그를 저장할 테이블 만들기

Fluent Bit는 (동적), (문자열) 및 timestamp (datetime) tag 의 세 가지 log 속성을 사용하여 JSON 형식으로 로그를 전달합니다.

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

Fluent Bit에서 들어오는 로그에 대한 테이블을 만들려면 다음을 수행합니다.

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

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

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

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

    들어오는 JSON 속성은 올바른 열에 자동으로 매핑됩니다.

데이터를 수집할 수 있는 권한이 있는 Microsoft Entra 앱 등록

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

이 서비스 주체는 커넥터가 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 데이터에서 복사 passwordtenant 하고 appId나중에 사용할 수 있습니다.

    {
      "appId": "1234abcd-e5f6-g7h8-i9j0-1234kl5678mn",
      "displayName": "my-service-principal",
      "name": "my-service-principal",
      "password": "1234abcd-e5f6-g7h8-i9j0-1234kl5678mn",
      "tenant": "1234abcd-e5f6-g7h8-i9j0-1234kl5678mn"
    }
    

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

서비스 주체에 사용 권한 부여

데이터베이스 이름으로 바꿔 <MyDatabase> 서 다음 명령을 실행합니다.

.add database MyDatabase ingestors ('aadapp=<Application (client) ID>;<Directory (tenant) ID>')

이 명령은 데이터를 테이블에 수집할 수 있는 권한을 애플리케이션에 부여합니다. 자세한 내용은 역할 기반 액세스 제어를 참조 하세요.

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

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

필드 설명
이름 azure_kusto
Match 들어오는 레코드의 태그와 일치하는 패턴입니다. 대/소문자를 구분하고 별(*) 문자를 와일드카드로 지원합니다.
Tenant_Id 데이터를 수집할 수 있는 권한이 있는 Microsoft Entra 앱 등록의 디렉터리(테넌트) ID입니다.
Client_Id 데이터를 수집할 수 있는 권한이 있는 Microsoft Entra 앱 등록의 애플리케이션(클라이언트) ID입니다.
Client_Secret 클라이언트 비밀 키 값 은 데이터를 수집할 수 있는 권한이 있는 Microsoft Entra 앱을 등록합니다.
Ingestion_Endpoint 클러스터 개요 아래의 Azure Portal에 있는 데이터 수집 URI를 사용합니다.
Database_Name 로그 테이블을 포함하는 데이터베이스의 이름입니다.
Table_Name 로그를 저장할 테이블 만들기의 테이블 이름입니다.
Ingestion_Mapping_Reference 테이블 만들기에서 수집 매핑의 이름입니다. 수집 매핑을 만들지 않은 경우 구성 파일에서 속성을 제거합니다.

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

[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]
    Name azure_kusto
    Match *
    Tenant_Id azure-tenant-id
    Client_Id azure-client-id
    Client_Secret azure-client-secret
    Ingestion_Endpoint azure-data-explorer-ingestion-endpoint
    Database_Name azure-data-explorer-database-name
    Table_Name azure-data-explorer-table-name

데이터가 테이블에 배치되었는지 확인합니다.

구성이 완료되면 로그가 테이블에 도착해야 합니다.

  1. 로그가 수집되었는지 확인하려면 다음 쿼리를 실행합니다.

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

    FluentBitLogs
    | take 100