Fluent Bit를 사용하여 데이터 가져오기
Fluent Bit는 다양한 원본에서 로그, 메트릭 및 추적을 수집하는 오픈 소스 에이전트입니다. 이를 통해 이벤트 데이터를 스토리지로 보내기 전에 필터링, 수정 및 집계할 수 있습니다. 이 문서에서는 Fluent Bit를 사용하여 KQL 데이터베이스로 데이터를 보내는 프로세스를 안내합니다.
이 문서에서는 Fluent Bit를 사용하여 데이터를 수집하는 방법을 보여줍니다.
데이터 커넥터의 전체 목록은 데이터 커넥터 개요참조하세요.
필수 조건
- Fluent Bit.
- Microsoft Fabric이 활성화된 용량의 작업 공간.
- 수집 권한이 있는 KQL 데이터베이스.
- KQL 쿼리 세트는 이후 쿼리 환경이라는입니다.
- TargetURI 값으로 사용할 데이터베이스 수집 URI입니다. 자세한 내용은 URI 복사를 참조하세요.
Microsoft Entra 서비스 주체 만들기
Microsoft Entra 서비스 주체는 다음 예제와 같이 Azure Portal 통해 만들거나 프로그래밍 방식으로 만들 수 있습니다.
이 서비스 프린시펄은 커넥터가 Kusto의 테이블에 데이터를 기록하는 데 사용하는 이름입니다. 이 서비스 주체가 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 데이터에서 나중에 사용할 수 있도록
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의 수신 로그에 대한 테이블을 만들려면 다음을 수행합니다.
쿼리 환경으로 이동합니다.
테이블을 만들 데이터베이스를 선택합니다.
다음
.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 | Microsoft Entra 서비스 주체만들기에서 생성된 애플리케이션 ID입니다. | ✔️ | |
클라이언트 비밀키 | microsoft Entra 서비스 주체만들기 |
✔️ | |
데이터 수집 엔드포인트 | Ingestion_Endpoint설명된 대로 값을 입력하십시오. | ✔️ | |
database_name (데이터베이스 이름) | 로크 테이블을 포함하는 데이터베이스의 이름. | ✔️ | |
테이블 이름 | 에서 대상 테이블을 만들기 위한테이블의 이름입니다. | ✔️ | |
데이터 수집 매핑 참조 | 대상 테이블 만들기에서 |
||
로그 키 | 로그 콘텐츠의 키 이름입니다. 예를 들어 log . |
log |
|
태그_키 | 태그의 키 이름입니다.
include_tag_key false이면 무시됩니다. |
tag |
|
include_time_key | 사용하도록 설정된 경우 타임스탬프가 출력에 추가됩니다.
time_key 속성을 사용합니다. |
true |
|
타임_키 | 로그 레코드의 타임스탬프에 대한 키 이름입니다.
include_time_key false이면 무시됩니다. |
timestamp |
|
인제스트 엔드포인트 연결 시간 초과 (ingestion_endpoint_connect_timeout) | 다양한 Kusto 엔드포인트의 연결 시간 제한(초)입니다. | 60s |
|
압축_사용가능 (compression_enabled) | 사용하도록 설정된 경우 압축된 HTTP 페이로드(gzip)를 Kusto로 보냅니다. | true |
|
데이터 수집 자원 새로고침 간격 (ingestion_resources_refresh_interval) | 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>
데이터 수집 확인
데이터가 테이블에 도착하면 행 수를 확인하여 데이터 전송을 확인합니다.
FluentBitLogs | count
로그 데이터 샘플을 보려면 다음 쿼리를 실행합니다.
FluentBitLogs | take 100