Fluent Bit를 사용하여 Azure Data Explorer로 데이터 수집
Fluent Bit 는 다양한 원본에서 로그, 메트릭 및 추적을 수집하는 오픈 소스 에이전트입니다. 이를 통해 이벤트 데이터를 스토리지로 보내기 전에 필터링, 수정 및 집계할 수 있습니다. Azure 데이터 탐색기는 로그 및 원격 분석 데이터에 사용 가능한 빠르고 확장성이 우수한 데이터 탐색 서비스입니다. 이 문서에서는 Fluent Bit를 사용하여 Azure Data Explorer로 데이터를 보내는 프로세스를 안내합니다.
이 문서에서는 다음을 수행하는 방법을 알아봅니다.
데이터 커넥터의 전체 목록은 데이터 커넥터 개요를 참조하세요.
필수 조건
- Fluent 비트입니다.
- Azure Data Explorer 클러스터 및 데이터베이스. 클러스터 및 데이터베이스를 만듭니다.
쿼리 환경에 사용 가능한 쿼리 도구를 사용할 수 있습니다.
로그를 저장할 테이블 만들기
Fluent Bit는 (동적), (문자열) 및 timestamp
(datetime) tag
의 세 가지 log
속성을 사용하여 JSON 형식으로 로그를 전달합니다.
이러한 각 속성에 대한 열이 있는 테이블을 만들 수 있습니다. 또는 구조적 로그가 있는 경우 사용자 지정 열에 매핑된 로그 속성을 사용하여 테이블을 만들 수 있습니다. 자세히 알아보려면 관련 탭을 선택합니다.
Fluent Bit에서 들어오는 로그에 대한 테이블을 만들려면 다음을 수행합니다.
쿼리 환경으로 이동합니다.
테이블을 만들 데이터베이스를 선택합니다.
다음 명령을 실행합니다.
.create table
.create table FluentBitLogs (log:dynamic, tag:string, timestamp:datetime)
들어오는 JSON 속성은 올바른 열에 자동으로 매핑됩니다.
데이터를 수집할 수 있는 권한이 있는 Microsoft Entra 앱 등록
다음 예제와 같이 Azure Portal을 통해 또는 프로그래밍 방식으로 Microsoft Entra 서비스 주체를 만들 수 있습니다.
이 서비스 주체는 커넥터가 Kusto에서 테이블을 작성하는 데 사용하는 ID입니다. 나중에 이 서비스 주체가 Kusto 리소스에 액세스할 수 있는 권한을 부여합니다.
Azure CLI를 통해 Azure 구독에 로그인합니다. 그런 다음 브라우저에서 인증합니다.
az login
보안 주체를 호스트할 구독을 선택합니다. 이 단계는 여러 구독이 있는 경우에 필요합니다.
az account set --subscription YOUR_SUBSCRIPTION_GUID
서비스 주체를 만듭니다. 이 예에서는 서비스 주체를
my-service-principal
이라고 합니다.az ad sp create-for-rbac -n "my-service-principal" --role Contributor --scopes /subscriptions/{SubID}
반환된 JSON 데이터에서 복사
password
tenant
하고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
데이터가 테이블에 배치되었는지 확인합니다.
구성이 완료되면 로그가 테이블에 도착해야 합니다.
로그가 수집되었는지 확인하려면 다음 쿼리를 실행합니다.
FluentBitLogs | count
로그 데이터 샘플을 보려면 다음 쿼리를 실행합니다.
FluentBitLogs | take 100