Cribl 스트림에서 Azure Data Explorer로 데이터 수집
Cribl Stream 은 모든 원본에서 컴퓨터 이벤트 데이터를 안전하게 수집, 처리 및 스트림하는 처리 엔진입니다. 이를 통해 안전한 방식으로 분석 및 관리를 위해 대상에 대한 데이터를 구문 분석하고 처리할 수 있습니다.
이 문서에서는 Cribl Stream을 사용하여 데이터를 수집하는 방법을 보여줍니다.
데이터 커넥터의 전체 목록은 데이터 통합 개요를 참조하세요.
필수 조건
- Cribl Stream 계정
- 기본 캐시 및 보존 정책을 사용하는 Azure Data Explorer 클러스터 및 데이터베이스 입니다.
- 쿼리 환경입니다. 자세한 내용은 쿼리 통합 개요를 참조하세요.
- 형식https://ingest-< 클러스터의 TargetURI 값에 대한 Kusto 클러스터> URI입니다.<region.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 애플리케이션과 서비스 주체를 만들었습니다.
대상 테이블 만들기
대상 테이블의 맵에 수집된 데이터 열을 매핑하기 위해 수집 매핑 및 수신 데이터에 대한 대상 테이블을 만듭니다.
쿼리 편집기에서 다음 테이블 만들기 명령을 실행합니다. 이때 자리 표시자 TableName을 대상 테이블의 이름으로 바꿉니다.
.create table <TableName> (_raw: string, _time: long, cribl_pipe: dynamic)
다음 수집 매핑 만들기 명령을 실행하여 자리 표시자 TableName 을 대상 테이블 이름으로 , TableNameMapping 을 수집 매핑의 이름으로 바꿉다.
.create table <TableName> ingestion csv mapping '<TableNameMapping>' 'CriblLogMapping' '[{"Name":"_raw","DataType":"string","Ordinal":"0","ConstValue":null},{"Name":"_time","DataType":"long","Ordinal":"1","ConstValue":null},{"Name":"cribl_pipe","DataType":"dynamic","Ordinal":"2","ConstValue":null}]'
Microsoft Entra 서비스 주체 만들기 데이터베이스 수집자 역할 권한에서 서비스 주체에 데이터베이스 작업을 수행할 수 있는 권한을 부여합니다. 자세한 내용은 예제를 참조하세요. 자리 표시자 DatabaseName을 대상 데이터베이스의 이름으로 바꾸고 ApplicationID를 Microsoft Entra 서비스 주체를 만들 때 저장한
AppId
값으로 바꿉니다..add database <DatabaseName> ingestors ('aadapp=<ApplicationID>') 'App Registration'
Cribl Stream 대상 만들기
다음 섹션에서는 Kusto의 테이블에 데이터를 쓰는 Cribl Stream 대상을 만드는 방법을 설명합니다. 각 테이블에는 별도의 Cribl Stream 대상 커넥터가 필요합니다.
대상 선택
Cribl Stream을 테이블에 연결하려면 다음을 수행합니다.
Cribl의 위쪽 탐색 영역에서 관리를 선택한 다음 작업자 그룹을 선택합니다.
라우팅>빠른 연결(스트림)>대상 추가를 선택합니다.
새 QuickConnect 대상 설정 창에서 Azure Data Explorer를 선택한 다음, 지금 추가합니다.
일반 설정 설정
새 데이터 탐색기 창의 일반 설정에서 다음 설정을 지정합니다.
설정 | 값 | 설명 |
---|---|---|
출력 ID | <OutputID>(예: KustoDestination) | 대상을 식별하는 데 사용되는 이름입니다. |
수집 모드 | 일괄 처리 (기본값) 또는 스트리밍 | 수집 모드에 대한 설정입니다. 일괄 처리를 사용하면 짧은 시간 동안 대량의 데이터를 수집할 때 테이블이 Cribl 스토리지 컨테이너에서 데이터 일괄 처리를 끌어올 수 있습니다. 스트리밍은 대상 KQL 테이블에 직접 데이터를 보냅니다. 스트리밍은 적은 양의 데이터를 수집하거나 예를 들어 중요한 경고를 실시간으로 보내는 데 유용합니다. 스트리밍은 일괄 처리보다 짧은 대기 시간을 달성할 수 있습니다. 수집 모드가 스트리밍으로 설정된 경우 스트리밍 정책을 사용하도록 설정해야 합니다. 자세한 내용은 스트리밍 수집 정책을 참조하세요. |
클러스터 기본 URI | 기본 URI | 기본 URI입니다. |
수집 서비스 URI | 수집 URI | 일괄 처리 모드를 선택하면 표시됩니다. 수집 URI입니다. |
데이터베이스 이름 | <DatabaseName> | 대상 데이터베이스의 이름입니다. |
테이블 이름 | <TableName> | 대상 테이블의 이름입니다. |
데이터베이스 설정 유효성 검사 | 예 (기본값) 또는 아니요. | 대상을 저장하거나 시작할 때 입력한 서비스 주체 앱 자격 증명의 유효성을 검사합니다. 매핑 개체 추가가 있는 경우 를 제외하고 테이블 이름의 유효성을 검사합니다 . 앱에 데이터베이스 뷰어 및 테이블 뷰어 역할이 모두 없는 경우 이 설정을 사용하지 않도록 설정해야 합니다. |
매핑 개체 추가 | 예 또는 아니요 (기본값) | 기본 데이터 매핑 텍스트 필드 대신 일괄 처리 모드를 선택한 경우에만 표시됩니다. 예를 선택하면 JSON 개체로 데이터 매핑을 입력하는 창이 열립니다. |
데이터 매핑 | 대상 테이블 만들기 단계에서 정의된 매핑 스키마 이름입니다. | 매핑 스키마 이름입니다. 매핑 개체 추가가 아니요로 설정된 경우의 기본 보기입니다. |
압축 | gzip(기본값) | 데이터 형식이 Parquet으로 설정된 경우 압축을 사용할 수 없습니다. |
날짜 형식 | JSON(기본값), 원시 또는 Parquet입니다. | 데이터 형식입니다. Parquet은 Batching 모드에서만 사용할 수 있으며 Linux에서만 지원됩니다. |
역압 동작 | 차단 (기본값) 또는 삭제 | 수신기가 백프레셔를 발휘할 때 이벤트를 차단하거나 삭제할지 여부를 선택합니다. |
태그 | 선택적 값 | Cribl Stream의 대상 관리 페이지에서 대상을 필터링하고 그룹화하기 위한 선택적 태그입니다. 태그 이름 사이에 탭 또는 하드 반환을 사용합니다. 이러한 태그는 처리된 이벤트에 추가되지 않습니다. |
완료되면 다음을 선택합니다.
인증 설정
사이드바에서 인증 설정을 선택합니다. 다음과 같이 기본 URI와 함께 Microsoft Entra 서비스 주체 만들기에 저장한 값을 사용합니다.
설정 | 값 | 설명 |
---|---|---|
테넌트 ID | <TenantID> | tenant Microsoft Entra 서비스 주체 만들기에 저장한 값을 사용합니다. |
클라이언트 ID | <ClientID> | appId Microsoft Entra 서비스 주체 만들기에 저장한 값을 사용합니다. |
범위 | <baseuri>/.default |
baseuri에 대한 기본 URI의 값을 사용합니다. |
인증 방법 | 클라이언트 암호, 클라이언트 암호(텍스트 암호) 또는 인증서 | 옵션은 클라이언트 암호 클라이언트 암호에 대한 Microsoft Entra 서비스 주체 만들기에서 만든 Microsoft Entra 애플리케이션의 클라이언트 암호를 사용합니다. 인증서의 경우 인증서는 등록한 공개 키를 사용하며 Microsoft Entra 서비스 주체 만들기에서 만든 Microsoft Entra 애플리케이션에 등록합니다. |
그런 후 다음을 선택합니다.
영구 큐
수집 모드가 스트리밍으로 설정되고 백프레서 동작이 영구 큐로 설정된 경우 표시됩니다.
설정 | 값 | 설명 |
---|---|---|
최대 파일 크기 | 1MB(기본값) | 파일을 닫기 전에 도달할 최대 큐 파일 크기입니다. 숫자를 입력할 때 KB 또는 MB와 같은 단위를 포함합니다. |
최대 큐 크기 | 5GB(기본값) | 대상에서 데이터 큐를 중지하기 전에 큐가 각 작업자 프로세스에서 사용할 수 있는 최대 디스크 공간입니다. KB, MB 또는 GB와 같은 단위가 있는 양수의 필수 값입니다. 최대값은 1TB입니다. |
큐 파일 경로 | $CRIBL_HOME/state/queues (기본값) |
영구 큐 파일 위치입니다. Cribl Stream이 이 값에 추가됩니다 /<worker‑id>/<output‑id> . |
압축 | None(기본값), gzip | 닫을 때 지속형 데이터를 압축하는 데 사용할 압축 방법입니다. |
큐 전체 동작 | 차단 또는 삭제 | 낮은 디스크 또는 전체 디스크 용량으로 인해 큐가 백프레어를 발휘할 때 이벤트를 차단하거나 삭제하도록 선택합니다. |
엄격한 순서 지정 | 예 (기본값) 또는 아니요 | Yes로 설정하면 첫 번째 시작 순서를 기준으로 이벤트가 전달됩니다. 이전 큐에 대기된 이벤트 전에 새 이벤트를 보내려면 아니요 로 설정합니다. |
드레이닝 속도 제한(EPS) | 0(기본값) | 이 옵션은 큐에서 수신기로 쓰기에 대한 제한 속도(초당 이벤트 수)를 설정할 수 있도록 Strict 순서를 아니요로 설정할 때 표시됩니다. 대기 중인 이벤트의 드레이닝 속도를 제한하면 신규 또는 활성 연결 처리량이 향상됩니다. 0은 제한을 사용하지 않도록 설정합니다. |
영구 큐 지우기 | 해당 없음 | 대상에 배달하기 위해 현재 큐에 대기 중인 파일을 삭제하려면 선택합니다. 큐에 대기 중인 데이터가 배달되지 않고 영구적으로 삭제되므로 이 작업을 확인해야 합니다. |
완료되면 다음을 선택합니다.
처리 설정
설정 | 값 | 설명 |
---|---|---|
파이프라인 | <\defined_pipeline> | 이 출력을 사용하여 데이터를 보내기 전에 데이터를 처리하는 선택적 파이프라인입니다. |
시스템 필드 | cribl_pipe (기본값), cribl_host , cribl_input , cribl_route cribl_output 또는cribl_wp |
대상에 전송되기 전에 이벤트에 자동으로 추가되는 필드 목록입니다. 와일드카드가 지원됩니다. |
완료되면 다음을 선택합니다.
Parquet 설정
데이터 형식에 대해 Parquet을 선택하면 표시됩니다.
Parquet을 선택하면 Parquet 설정 탭이 열리고 Parquet 스키마가 선택됩니다.
설정 | 값 | 설명 |
---|---|---|
자동 스키마 | 설정 또는 해제 | Cribl Stream이 기록하는 각 Parquet 파일의 이벤트를 기반으로 Parquet 스키마를 생성하려면 [켜기]를 선택합니다. |
Parquet 스키마 | 드롭다운 | 자동 스키마를 Off로 설정하여 parquet 스키마를 선택할 수 있도록 표시합니다. |
Parquet 버전 | 1.0, 2.4, 2.6(기본값) | 버전은 지원되는 데이터 형식과 데이터 형식을 나타내는 방법을 결정합니다. |
데이터 페이지 버전 | V1, V2(기본값) | 데이터 페이지 serialization 형식입니다. Parquet 판독기에서 Parquet V2를 지원하지 않는 경우 V1을 사용합니다. |
그룹 행 제한 | 1000(기본값) | 모든 그룹에 포함될 수 있는 최대 행 수입니다. |
페이지 크기 | 1MB(기본값) | 페이지 세그먼트의 대상 메모리 크기입니다. 값이 낮을수록 읽기 속도가 향상되는 반면 값이 높을수록 압축이 향상될 수 있습니다. |
잘못된 행 기록 | 예 또는 아니요를 선택합니다. | 예가 선택되고 로그 수준이 설정된 경우 데이터 형식 불일치로 debug 인해 건너뛴 최대 20개의 고유 행이 출력됩니다. |
통계 작성 | 켜기 (기본값) 또는 끄기 | Parquet 통계 보기 도구가 구성된 경우 켜기(On)를 선택합니다. |
페이지 인덱스 작성 | 켜기 (기본값) 또는 끄기 | Parquet 판독기에서 Parquet 페이지 인덱스 통계를 사용하여 페이지 건너뛰기를 사용하도록 설정하는 경우 켜기를 선택합니다. |
페이지 체크섬 작성 | 설정 또는 해제 | Parquet 도구를 사용하여 Parquet 페이지 체크섬을 사용하여 데이터 무결성을 확인하는 경우 켜기를 선택합니다. |
메타데이터(선택 사항)* | 키-값 쌍으로 포함할 수 있는 대상 파일 메타데이터 속성입니다. |
재시도
수집 모드가 스트리밍으로 설정된 경우 표시됩니다.
설정 | 값 | 설명 |
---|---|---|
Honor Retry-After 헤더 | 예 또는 아니요를 선택합니다. | 헤더를 적용할지 여부입니다 Retry-After . 사용하도록 설정하면 헤더가 180초 이하의 지연을 지정하는 한 다시 시도 섹션에서 구성된 다른 옵션보다 수신된 Retry-After 헤더가 우선적으로 사용됩니다. 그렇지 않으면 Retry-After 헤더가 무시됩니다. |
실패한 HTTP 요청에 대한 설정 | HTTP 상태 코드 | 연결에 실패할 경우 자동으로 다시 시도할 HTTP 상태 코드 목록입니다. Cribl Stream은 429개의 실패한 요청을 자동으로 다시 시도합니다. |
다시 시도 시간 초과 HTTP 요청 | 설정 또는 해제 | 설정되면 더 많은 재시도 동작 설정을 사용할 수 있게 됩니다. |
사전 백오프 간격(ms) | 1000ms(기본값) | 다시 시도하기 전의 대기 시간입니다. |
백오프 승수 | 2 s(기본값) | 재시도 사이의 간격을 결정하기 위해 지수 백오프 알고리즘의 기반으로 사용됩니다. |
백오프 제한(ms) | 10,000ms(기본값) | 최종 스트리밍 재시도의 최대 백오프 간격입니다. 가능한 값의 범위는 10,000밀리초(10초)에서 180,000밀리초(3분)입니다. |
완료되면 다음을 선택합니다.
고급 설정
사이드바에서 고급 설정을 선택합니다. 다음은 Batching을 선택할 때의 고급 설정에 대해 설명합니다.
설정 | 값 | 설명 |
---|---|---|
즉시 플러시 | 예 또는 아니요 (기본값) | Kusto에서 데이터 집계를 재정의하려면 예로 설정합니다. 자세한 내용은 Kusto Ingest 라이브러리에 대한 모범 사례를 참조 하세요. |
성공에 대한 Blob 유지 | 예 또는 아니요 (기본값) | 수집 완료 시 데이터 Blob을 유지하려면 예로 설정합니다. |
익스텐트 태그 | <\ExtentTag, ET2,...> | 원하는 경우 태그를 대상 테이블의 분할된 범위로 설정합니다. |
태그 값을 통해 고유성 적용 | 값 추가를 선택하여 들어오는 익스텐트를 ingest-by 필터링하고 나열된 값과 일치하는 익스텐트를 삭제하는 데 사용할 값 목록을 지정합니다. 자세한 내용은 익스텐트(데이터 분할)를 참조 하세요. |
|
보고서 수준 | DoNotReport, FailuresOnly (기본값) 및 FailuresAndSuccesses. | 수집 상태 보고 수준입니다. |
보고서 메서드 | 큐 (기본값), 테이블 및 QueueAndTable (권장) | 수집 상태 보고를 위한 대상입니다. |
추가 필드 | 필요한 경우 더 많은 구성 속성을 추가하여 수집 서비스로 보냅니다. | |
스테이징 위치 | /tmp (기본값) |
파일을 압축하고 최종 대상으로 이동하기 전에 버퍼링할 로컬 파일 시스템 위치입니다. Cribl은 안정적이고 고성능의 위치를 권장합니다. |
파일 이름 접미사 식 | .${C.env["CRIBL_WORKER_ID"]}.${__format}${__compression === "gzip" ? ".gz" : ""} (기본값) |
출력 파일 이름 접미사로 사용되는 따옴표 또는 백틱으로 묶인 JavaScript 식입니다. format 은 JSON 또는 원시일 수 있으며 __compression none 또는 gzip일 수 있습니다. 파일 이름 끝에 6자의 임의 시퀀스가 추가되어 덮어쓰지 않도록 합니다. |
최대 파일 크기(MB) | 32MB(기본값) | 파일이 닫히기 전에 도달하여 스토리지 컨테이너로 이동할 수 있는 압축되지 않은 최대 출력 파일 크기입니다. |
최대 파일 열기 시간(초) | 300초(기본값) | 파일을 닫고 스토리지 컨테이너로 이동하기 전에 파일에 쓸 최대 시간(초)입니다. |
최대 파일 유휴 시간(초) | 30초(기본값) | 비활성 파일이 닫히기 전에 비활성 파일을 열어 두고 스토리지 컨테이너로 이동하는 최대 시간(초)입니다. |
최대 파일 열기 | 100(기본값) | 가장 오래된 열린 파일을 닫고 스토리지 컨테이너로 이동하기 전에 동시에 열어 둘 최대 파일 수입니다. |
최대 동시 파일 파트 | 1(기본값) | 동시에 업로드할 최대 파일 파트 수입니다. 기본값은 1이고 가장 높은 값은 10입니다. 값을 1로 설정하면 한 번에 한 부분을 순차적으로 보낼 수 있습니다. |
빈 스테이징 디어 제거 | 예 (기본값) 또는 아니요 | Cribl Stream에서 전환하면 파일을 이동한 후 빈 스테이징 디렉터리를 삭제합니다. 이렇게 하면 분리된 빈 디렉터리 확산을 방지할 수 있습니다. 사용하도록 설정하면 스테이징 정리 기간을 노출합니다. |
준비 정리 기간 | 300(기본값) | 스테이징 디어 제거를 사용할 때 빈 디렉터리를 삭제할 때까지의 시간(초)입니다. 빈 스테이징 디르 제거가 예로 설정된 경우 표시됩니다. 최소값은 10초이고 최대값은 86,400초(24시간마다)입니다. |
환경 | 비어 있는 경우(기본값) 모든 위치에서 구성이 사용하도록 설정됩니다. GitOps를 사용하는 경우 구성을 사용하도록 설정할 Git 분기를 지정할 수 있습니다. |
완료되면 저장을 선택합니다.
연결 구성
열리는 연결 구성 창에서 Passthru 연결을 선택한 다음 저장합니다. 커넥터가 데이터 큐에 대기를 시작합니다.
데이터 수집 확인
데이터가 테이블에 도착하면 행 수를 확인하여 데이터 전송을 확인합니다.
<Tablename> | count
지난 5분 동안 대기 중인 수집을 확인합니다.
.show commands-and-queries | where Database == "" and CommandType == "DataIngestPull" | where LastUpdatedOn >= ago(5m)
수집 프로세스에 오류가 없는지 확인합니다.
- 일괄 처리의 경우:
.show ingestion failures
- 스트리밍의 경우:
.show streamingingestion failures | order by LastFailureOn desc
테이블의 데이터를 확인합니다.
<TableName> | take 10
쿼리 예제 및 지침은 KQL 및 Kusto 쿼리 언어 설명서에서 쿼리 작성을 참조하세요.