Fluent Bit를 사용하여 Azure Data Explorer로 데이터 수집
Fluent Bit는 다양한 원본에서 로그, 메트릭 및 추적을 수집하는 오픈 소스 에이전트입니다. 이를 통해 이벤트 데이터를 스토리지로 보내기 전에 필터링, 수정 및 집계할 수 있습니다. 이 문서에서는 Fluent Bit를 사용하여 KQL 데이터베이스로 데이터를 보내는 프로세스를 안내합니다.
이 문서에서는 Fluent Bit를 사용하여 데이터를 수집하는 방법을 보여줍니다.
데이터 커넥터의 전체 목록은 데이터 커넥터 개요를 참조하세요.
필수 조건
- Fluent Bit.
- Azure Data Explorer 클러스터 및 데이터베이스. 클러스터 및 데이터베이스를 만듭니다.
- 쿼리 환경입니다. 자세한 내용은 쿼리 통합 개요참조하세요.
- Ingestion_endpoint 값에 대한 Kusto 클러스터 URI는 https://ingest-<클러스터>입니다.<지역>.kusto.windows.net. 자세한 내용은 클러스터 연결추가를 참조하세요.
Microsoft Entra 서비스 주체 만들기
Microsoft Entra 서비스 주체는 다음 예제와 같이 Azure Portal 통해 만들거나 프로그래밍 방식으로 만들 수 있습니다.
이 서비스 프린시펄은 커넥터가 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 데이터에서 나중에 사용할 수 있도록
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 |
✔️ | |
클라이언트 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>
데이터 수집 확인
데이터가 테이블에 도착하면 행 수를 확인하여 데이터 전송을 확인합니다.
FluentBitLogs | count
로그 데이터 샘플을 보려면 다음 쿼리를 실행합니다.
FluentBitLogs | take 100