Event Grid 데이터 연결
Event Grid 수집은 Azure 스토리지를 수신 대기하고 구독됨 이벤트가 발생하면 정보를 끌어오도록 Azure Data Explorer를 업데이트하는 파이프라인입니다. Azure Data Explorer는 만들어진 Blob 및 이름이 변경된 Blob 알림에 대한 Azure Event Grid 구독을 통해 Azure Storage(Blob 스토리지 및 ADLSv2)로부터의 지속적인 수집을 제공하고, Azure Event Hubs를 통해 이러한 알림을 Azure Data Explorer로 스트리밍합니다.
Event Grid 수집 파이프라인은 여러 단계를 거칩니다. Azure Data Explorer에서 특정 형식의 데이터가 수집되는 대상 테이블을 만듭니다. 그런 다음, Azure Data Explorer에서 Event Grid 데이터 연결을 만듭니다. Event Grid 데이터 연결에는 데이터를 보낼 테이블 및 테이블 매핑과 같은 이벤트 라우팅 정보가 필요합니다. 수집할 데이터, 대상 테이블 및 매핑을 설명하는 수집 속성도 지정합니다. 샘플 데이터를 생성하고, Blob을 업로드하거나 Blob 이름을 변경하여 연결을 테스트할 수 있습니다. 수집 후에는 Blob을 삭제합니다.
Event Grid 수집은 수집 마법사를 사용하거나, 프로그래밍 방식으로 C# 또는 Python을 사용하거나, Azure Resource Manager 템플릿을 사용하여 Azure Portal을 통해 관리할 수 있습니다.
Azure Data Explorer의 데이터 수집에 대한 일반적인 정보는 Azure Data Explorer 데이터 수집 개요를 참조하세요.
Event Grid 데이터 연결 인증 메커니즘
관리 ID 기반 데이터 연결(권장): 관리 ID 기반 데이터 연결을 사용하는 것이 데이터 원본에 연결하는 가장 안전한 방법입니다. 이는 데이터 원본에서 데이터를 가져오는 기능을 완전히 제어합니다. 관리 ID를 사용하여 Event Grid 데이터 연결을 설정하려면 다음 단계가 필요합니다.
- 클러스터에 관리 ID를 추가합니다.
- 데이터 원본에서 관리 ID에 권한을 부여합니다. Azure Storage에서 데이터를 가져오려면 관리 ID에 Azure Storage 계정에 대한 스토리지 Blob 데이터 판독 기 이상의 권한이 있어야 합니다.
- 이벤트 허브의 관리 ID에 권한을 부여합니다. 이벤트 허브에서 Blob 알림을 가져오려면 관리 ID에 Azure Event Hubs에 대한 Azure Event Hubs 데이터 수신기 권한이 있어야 합니다.
- 대상 데이터베이스에서 관리 ID 정책을 설정합니다.
- 관리 ID 인증을 사용하여 데이터 연결을 만들어 데이터를 가져옵니다.
주의
- 관리 ID 권한이 데이터 원본에서 제거되면 데이터 연결이 더 이상 작동하지 않으며 데이터 원본에서 데이터를 가져올 수 없습니다.
- Blob 알림이 스트리밍되는 기존 Event Hubs 네임스페이스에서 로컬 인증을 사용하지 않도록 설정한 경우 데이터 연결에 관리 ID 인증을 사용하고 리소스를 올바르게 구성해야 합니다. 자세한 내용은 알려진 Event Grid 문제를 참조 하세요.
키 기반 데이터 연결: 데이터 연결에 대해 관리 ID 인증을 지정하지 않으면 연결이 자동으로 키 기반 인증으로 설정됩니다. 키 기반 연결은 Azure Event Hubs 연결 문자열과 같은 리소스 연결 문자열을 사용하여 데이터를 가져옵니다. Azure Data Explorer는 지정된 리소스에 대한 리소스 연결 문자열 가져오고 안전하게 저장합니다. 그런 다음, 연결 문자열을 사용하여 데이터 원본에서 데이터를 가져옵니다.
주의
키를 회전하면 데이터 연결이 더 이상 작동하지 않으며 데이터 원본에서 데이터를 가져올 수 없습니다. 문제를 해결하려면 데이터 연결을 업데이트하거나 다시 만듭니다.
데이터 형식
- 지원되는 형식을 참조하세요.
- 지원되는 압축을 참조하세요.
압축되지 않은 원래 데이터 크기는 Blob 메타데이터의 일부여야 합니다. 그렇지 않으면 Azure Data Explorer가 이를 추정합니다. 파일당 압축되지 않은 수집 크기 제한은 6GB입니다.
참고
Event Grid 알림 구독은
BlobStorage
,StorageV2
또는 Data Lake Storage Gen2용 Azure Storage 계정에서 설정할 수 있습니다.
수집 속성
Blob 메타데이터를 통해 Blob 수집의 수집 속성을 지정할 수 있습니다. 다음 속성을 설정할 수 있습니다.
속성 | Description |
---|---|
rawSizeBytes |
원시(압축되지 않은) 데이터의 크기입니다. Avro/ORC/Parquet의 경우 형식별 압축이 적용되기 전의 크기입니다. 이 속성을 압축되지 않은 데이터 크기(바이트)로 설정하여 원래 데이터 크기를 제공합니다. |
kustoDatabase |
대상 데이터베이스의 대/소문자 구분 이름입니다. 기본적으로 데이터는 데이터 연결과 관련된 대상 데이터베이스에 수집됩니다. 기본 데이터베이스를 재정의하고 다른 데이터베이스로 데이터를 보내려면 이 속성을 사용합니다. 이렇게 하려면 먼저 연결을 다중 데이터베이스 연결로 설정해야 합니다. |
kustoTable |
기존 대상 테이블의 대/소문자 구분 이름입니다. Data Connection 창에 설정된 Table 을 재정의합니다. |
kustoDataFormat |
데이터 형식. Data Connection 창에 설정된 Data format 을 재정의합니다. |
kustoIngestionMappingReference |
사용할 기존 수집 매핑의 이름입니다. Data Connection 창에 설정된 Column mapping 을 재정의합니다. |
kustoIgnoreFirstRecord |
true 로 설정하면 Kusto는 Blob의 첫 번째 행을 무시합니다. 테이블 형식 데이터(CSV, TSV 등)에서 헤더를 무시하는 데 사용합니다. |
kustoExtentTags |
결과 익스텐트에 연결할 태그를 나타내는 문자열입니다. |
kustoCreationTime |
ISO 8601 문자열로 형식이 지정된 Blob에 대한 익스텐트 만들기 시간을 재정의합니다. 백필에 사용합니다. |
이벤트 라우팅
클러스터에 대한 데이터 연결을 만들 때 수집된 데이터를 보낼 위치에 대한 라우팅을 지정합니다. 기본 라우팅은 대상 데이터베이스와 연결된 연결 문자열에 지정된 대상 테이블로 라우팅하는 것입니다. 데이터의 기본 라우팅을 정적 라우팅이라고도 합니다. 이벤트 데이터 속성을 사용하여 데이터에 대한 대체 라우팅을 지정할 수 있습니다.
대체 데이터베이스로 이벤트 데이터 라우팅
대체 데이터베이스로 데이터 라우팅은 기본적으로 꺼져 있습니다. 데이터를 다른 데이터베이스로 보내려면 먼저 연결을 다중 데이터베이스 연결로 설정해야 합니다. Azure Portal, C#, Python 또는 ARM 템플릿에서 이 작업을 수행할 수 있습니다. 데이터베이스 라우팅을 허용하는 데 사용되는 사용자, 그룹, 서비스 주체 또는 관리 ID에는 적어도 클러스터에 대한 기여자 역할 및 쓰기 권한이 있어야 합니다. 자세한 내용은 Azure Data Explorer에 대한 Event Grid 데이터 연결 만들기를 참조하세요.
대체 데이터베이스를 지정하려면 데이터베이스 수집 속성을 설정합니다.
Warning
연결을 다중 데이터베이스 데이터 연결로 설정하지 않고 대체 데이터베이스를 지정하면 수집이 실패합니다.
대체 테이블로 이벤트 데이터 라우팅
Azure Data Explorer 클러스터에 대한 Blob 스토리지 연결을 설정하는 경우 대상 테이블 속성을 지정합니다.
- 테이블 이름
- 데이터 형식
- 매핑
또한 Blob 메타데이터를 사용하여 각 Blob에 대한 대상 테이블 속성을 지정할 수 있습니다. 데이터는 수집 속성에서 지정한 대로 동적으로 라우팅됩니다.
아래 예제에서는 업로드하기 전에 Blob 메타데이터에 대한 수집 속성을 설정하는 방법을 보여 줍니다. Blob은 다른 테이블로 라우팅됩니다.
또한 대상 데이터베이스를 지정할 수 있습니다. Event Grid 데이터 연결은 특정 데이터베이스의 컨텍스트 내에서 만들어집니다. 따라서 이 데이터베이스는 데이터 연결의 기본 데이터베이스 라우팅입니다. 데이터를 다른 데이터베이스로 보내려면 "KustoDatabase" 수집 속성을 설정하고 데이터 연결을 다중 데이터베이스 데이터 연결로 설정합니다. 다른 데이터베이스로 데이터를 라우팅하는 것은 기본적으로 사용되지 않습니다(허용되지 않음). 다중 데이터베이스로의 데이터 라우팅을 허용(연결을 다중 데이터베이스 데이터 연결로 설정)하지 않고 데이터 연결의 데이터베이스와 다른 데이터베이스 수집 속성을 설정하면 수집이 실패합니다.
자세한 내용은 Blob 업로드를 참조하세요.
var container = new BlobContainerClient("<storageAccountConnectionString>", "<containerName>");
await container.CreateIfNotExistsAsync();
var blob = container.GetBlobClient("<blobName>");
// Blob is dynamically routed to table `Events`, ingested using `EventsMapping` data mapping
await blob.SetMetadataAsync(
new Dictionary<string, string>
{
{ "rawSizeBytes", "4096" }, // the uncompressed size is 4096 bytes
{ "kustoTable", "Events" },
{ "kustoDataFormat", "json" },
{ "kustoIngestionMappingReference", "EventsMapping" },
{ "kustoDatabase", "AnotherDB" }
}
);
await blob.UploadAsync(BinaryData.FromString(File.ReadAllText("<filePath>")));
Blob 업로드
로컬 파일에서 Blob을 만들고, 수집 속성을 Blob 메타데이터로 설정하고, 이를 업로드할 수 있습니다. 예제는 Event Grid 데이터 연결 사용을 참조 하세요.
참고 항목
- 예기치 않은 동작이 발생할 수 있으므로 데이터를 생성하는 데 사용하는
AppendBlob
것이 좋습니다BlockBlob
. - Azure Data Lake Gen2 스토리지 SDK를 사용
CreateFile
하려면 파일을Flush
업로드하고 마지막에 닫기 매개 변수를 로 설정해야 합니다true
. Data Lake Gen2 SDK 올바른 사용에 대한 자세한 예제는 Event Grid 데이터 연결 사용을 참조 하세요. - 작업 후
CopyBlob
수집 트리거는 계층 구조 네임스페이스 기능을 사용하도록 설정된 스토리지 계정에 대해서는 지원되지 않습니다. - 이벤트 허브 엔드포인트에서 이벤트 수신을 승인하지 않으면 Azure Event Grid에서 다시 시도 메커니즘을 활성화합니다. 이 다시 시도 배달이 실패하면 Event Grid에서 배달 못 한 편지 프로세스를 사용하여 배달 안 됨 이벤트를 스토리지 계정에 배달할 수 있습니다. 자세한 내용은 Event Grid 메시지 배달 및 재시도를 참조하세요.
Blob 이름 바꾸기
ADLSv2를 사용하는 경우 Blob 이름을 바꿔 Blob 수집을 Azure Data Explorer에 트리거할 수 있습니다. 예를 들어 Blob 이름 바꾸기를 참조 하세요.
참고 항목
- ADLSv2에서는 디렉터리 이름을 변경할 수 있지만 디렉터리 내에서 Blob 이름 변경 이벤트 및 Blob 수집을 트리거하지 않습니다. 이름을 바꾼 후 Blob을 수집하려면 원하는 Blob의 이름을 직접 바꿉니다.
- 데이터 연결을 만들거나Event Grid 리소스를 수동으로 만드는 동안 특정 주제를 추적하도록 필터를 정의한 경우 이러한 필터는 대상 파일 경로에 적용됩니다.
스토리지 수명 주기를 사용하여 Blob 삭제
Azure Data Explorer는 수집 후에 Blob을 삭제하지 않습니다. Azure Blob 스토리지 수명 주기를 사용하여 Blob 삭제를 관리합니다. Blob은 3~5일 동안 유지하는 것이 좋습니다.
알려진 Event Grid 문제
로컬 인증 없이 작업
스트리밍 알림에 사용되는 이벤트 허브가 포함된 Event Hubs 네임스페이스에서 로컬 인증을 사용하지 않도록 설정한 경우 다음 단계를 사용하여 관리 ID를 사용하여 스토리지에서 이벤트 허브로 데이터가 제대로 흐르도록 합니다.
또한 Azure Data Explorer가 이벤트 허브에서 알림을 받을 수 있도록 관리 ID 인증을 사용하도록 Event Grid 데이터 연결을 구성합니다.
Azure Data Explorer에서 내보낸 파일에 대한 Event Grid 수집 설정
Azure Data Explorer를 사용하여 Event Grid 수집에 사용되는 파일을 내보내는 경우 다음을 참고하세요.
- 내보내기 명령에 제공된 연결 문자열 또는 외부 테이블에 제공된 연결 문자열이 ADLS Gen2 형식의 연결 문자열(예:
abfss://filesystem@accountname.dfs.core.windows.net
)이지만 스토리지 계정이 계층 구조 네임스페이스에 사용하도록 설정되지 않은 경우 Event Grid 알림이 트리거되지 않습니다. - 계정이 계층 구조 네임스페이스에 사용하도록 설정되지 않은 경우 연결 문자열에서 Blob Storage 형식(예:
https://accountname.blob.core.windows.net
)을 사용해야 합니다. 내보내기는 ADLS Gen2 연결 문자열을 사용하는 경우에도 예상대로 작동하지만, 알림이 트리거되지 않고 Event Grid 수집이 작동하지 않습니다.
사용자 지정 구성 요소에서 Storage 이벤트 에뮬레이트
사용자 지정 구성 요소를 사용하여 Azure Storage 이벤트를 에뮬레이트하는 경우 Azure Data Explorer는 Event Grid SDK에서 구문 분석할 수 없는 이벤트를 삭제하므로 에뮬레이트된 이벤트는 Azure Blob Storage 이벤트 스키마를 엄격하게 준수해야 합니다.