Fluent Bit는 다양한 원본에서 로그, 메트릭 및 추적을 수집하는 오픈 소스 에이전트입니다. 이를 통해 이벤트 데이터를 스토리지로 보내기 전에 필터링, 수정 및 집계할 수 있습니다. 이 문서에서는 Fluent Bit를 사용하여 KQL 데이터베이스로 데이터를 보내는 프로세스를 안내합니다.
이 문서에서는 Fluent Bit를 사용하여 데이터를 수집하는 방법을 보여줍니다.
데이터 커넥터의 전체 목록은 데이터 커넥터 개요를 참조하세요.
필수 조건
- Fluent 비트입니다.
- 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 서비스 주체만들기 에서 가져온 클라이언트 암호 키 값(암호)입니다. | ✔️ | |
managed_identity_client_id (관리되는 ID 클라이언트 ID) | 인증에 사용할 관리 ID의 클라이언트 ID입니다. | ✔️ | |
수집_엔드포인트 | Ingestion_Endpoint에 설명된 대로 값을 입력하세요. | ✔️ | |
데이터베이스_이름 | 로크 테이블을 포함하는 데이터베이스의 이름. | ✔️ | |
테이블 이름 | 대상 테이블 만들기 의 테이블 이름은입니다. | ✔️ | |
수집_매핑_참조 | 수집 매핑의 이름은 대상 테이블 만들기로부터입니다. 수집 매핑을 만들지 않은 경우 구성 파일에서 속성을 제거합니다. | ||
로그 키 | 로그 콘텐츠의 키 이름입니다. 예를 들어 log . |
log |
|
태그 키 포함 | 사용하도록 설정하면 태그가 출력에 추가됩니다. | On |
|
태그_키 | 태그의 키 이름입니다.
include_tag_key false이면 무시됩니다. |
tag |
|
include_time_key (시간_키_포함) | 사용하도록 설정된 경우 타임스탬프가 출력에 추가됩니다.
time_key 속성을 사용합니다. |
On |
|
시간_키 | 로그 레코드의 타임스탬프에 대한 키 이름입니다.
include_time_key false이면 무시됩니다. |
timestamp |
|
데이터 수집 지점 연결 시간 초과 | 다양한 Kusto 엔드포인트의 연결 시간 제한(초)입니다. | 60 |
|
압축_사용가능 | 사용하도록 설정된 경우 압축된 HTTP 페이로드(gzip)를 Kusto로 보냅니다. | true |
|
데이터_수집_자원_갱신_간격 | Kusto 엔드포인트의 수집 리소스 새로 고침 간격(초). | ||
노동자 | 이 출력에 대한 플러시 작업을 수행할 |
0 |
|
버퍼링_활성화됨 | 사용하도록 설정된 경우 Kusto로 수집하기 전에 데이터를 디스크에 버퍼링합니다. | Off |
|
버퍼 경로 | 버퍼링된 데이터가 저장될 디렉터리의 위치(있는 경우 buffering_enabled On )를 지정합니다. |
/tmp/fluent-bit/azure-kusto/ |
|
업로드 시간 초과 | 업로드 시간 제한(있는 경우 buffering_enabled On )을 지정합니다. 이보다 오래된 파일은 크기 제한이 낮더라도 수집됩니다. |
30m |
|
업로드 파일 크기 | 업로드할 파일의 최대 크기(있는 경우 buffering_enabled On )를 지정합니다. |
200MB |
|
애저_쿠스토_버퍼_키 | Azure Kusto 버퍼 키는 buffering_enabled 가 On 일 때 플러그인 인스턴스를 식별하기 위한 것입니다. 버퍼링이 있는 여러 Azure Kusto 출력에 필요합니다. |
key |
|
저장소 디렉토리 제한 크기 | 버퍼링된 데이터가 저장되는 디렉터리의 최대 크기(있는 경우 buffering_enabled )입니다 On . |
8GB |
|
버퍼_파일_조기_삭제 |
buffering_enabled 가 On 일 때, Blob을 성공적으로 생성한 후 버퍼링된 파일을 조기에 삭제할지 여부입니다. |
Off |
|
unify_tag |
buffering_enabled 가 On 일 때 단일 버퍼 파일을 만듭니다. |
On |
|
blob_uri_길이 | Kusto로 수집하기 전에 생성된 Blob URI의 길이를 지정합니다. | 64 |
|
스케줄러_max_재시도 횟수 |
buffering_enabled 이 On 인 경우, 스케줄러를 사용하여 수집의 최대 재시도 횟수를 설정합니다. |
3 |
|
최대 업로드 오류 시 삭제 |
buffering_enabled 이 On 인 경우, 최대 업로드 오류 시 버퍼 파일을 삭제할지 여부입니다. |
Off |
|
IO_timeout | 업로드에 대한 HTTP IO 시간 제한을 구성합니다. | 60s |
예제 구성 파일을 보려면 관련 탭을 선택합니다.
[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]
[OUTPUT]
Match *
Name azure_kusto
Tenant_Id <app_tenant_id>
Client_Id <app_client_id>
Client_Secret <app_secret>
Ingestion_Endpoint https://ingest-<cluster>.<region>.kusto.windows.net
Database_Name <database_name>
Table_Name <table_name>
Ingestion_Mapping_Reference <mapping_name>
ingestion_endpoint_connect_timeout <ingestion_endpoint_connect_timeout>
compression_enabled <compression_enabled>
ingestion_resources_refresh_interval <ingestion_resources_refresh_interval>
buffering_enabled On
upload_timeout 2m
upload_file_size 125M
azure_kusto_buffer_key kusto1
buffer_file_delete_early Off
unify_tag On
buffer_dir /var/log/
store_dir_limit_size 16GB
blob_uri_length 128
scheduler_max_retries 3
delete_on_max_upload_error Off
io_timeout 60s
데이터 수집 확인
데이터가 테이블에 도착하면 행 수를 확인하여 데이터 전송을 확인합니다.
FluentBitLogs | count
로그 데이터 샘플을 보려면 다음 쿼리를 실행합니다.
FluentBitLogs | take 100