Udostępnij za pośrednictwem


Połączenie danych usługi Event Grid

Pozyskiwanie danych usługi Event Grid to potok, który nasłuchuje w usłudze Azure Storage i aktualizuje usługę Azure Data Explorer w celu ściągnięcia informacji po wystąpieniu subskrybowanych zdarzeń. Usługa Azure Data Explorer oferuje ciągłe pozyskiwanie z usługi Azure Storage (Blob Storage i ADLSv2) z subskrypcją usługi Azure Event Grid dla utworzonych lub zmienionych nazw obiektów blob oraz przesyłanie strumieniowe tych powiadomień do usługi Azure Data Explorer za pośrednictwem usługi Azure Event Hubs.

Potok pozyskiwania usługi Event Grid przechodzi kilka kroków. W usłudze Azure Data Explorer utworzysz tabelę docelową, w której dane w określonym formacie zostaną pozyskane. Następnie utworzysz połączenie danych usługi Event Grid w usłudze Azure Data Explorer. Połączenie danych usługi Event Grid musi znać informacje o routingu zdarzeń, takie jak tabela, do której mają być wysyłane dane i mapowanie tabeli. Należy również określić właściwości pozyskiwania, które opisują dane do pozyskiwania, tabelę docelową i mapowanie. Możesz wygenerować przykładowe dane i przekazać obiekty blob lub zmienić nazwę obiektów blob, aby przetestować połączenie. Usuń obiekty blob po pozyskaniu.

Pozyskiwanie usługi Event Grid można zarządzać za pośrednictwem witryny Azure Portal, przy użyciu kreatora pozyskiwania, programowo w języku C# lub Python albo przy użyciu szablonu usługi Azure Resource Manager.

Aby uzyskać ogólne informacje na temat pozyskiwania danych w usłudze Azure Data Explorer, zobacz Omówienie pozyskiwania danych w usłudze Azure Data Explorer.

Mechanizmy uwierzytelniania połączeń danych usługi Event Grid

  • Połączenie danych oparte na tożsamości zarządzanej (zalecane): użycie połączenia danych opartego na tożsamości zarządzanej jest najbezpieczniejszym sposobem nawiązywania połączenia ze źródłami danych. Zapewnia pełną kontrolę nad możliwością pobierania danych ze źródła danych. Konfiguracja połączenia danych usługi Event Grid przy użyciu tożsamości zarządzanej wymaga wykonania następujących kroków:

    1. Dodaj tożsamość zarządzaną do klastra.
    2. Udziel uprawnień tożsamości zarządzanej w źródle danych. Aby pobrać dane z usługi Azure Storage, tożsamość zarządzana musi mieć co najmniej uprawnienia Czytelnik danych obiektu blob usługi Storage na koncie usługi Azure Storage.
    3. Udziel uprawnień tożsamości zarządzanej w centrum zdarzeń. Aby pobrać powiadomienia obiektów blob z centrum zdarzeń, tożsamość zarządzana musi mieć uprawnienia odbiornika danych usługi Azure Event Hubs w usłudze Azure Event Hubs.
    4. Ustaw zasady tożsamości zarządzanej w docelowych bazach danych.
    5. Utwórz połączenie danych przy użyciu uwierzytelniania tożsamości zarządzanej w celu pobrania danych.

    Uwaga

    • Jeśli uprawnienia tożsamości zarządzanej zostaną usunięte ze źródła danych, połączenie danych nie będzie już działać i nie będzie mogło pobrać danych ze źródła danych.
    • Jeśli uwierzytelnianie lokalne jest wyłączone w istniejącej przestrzeni nazw usługi Event Hubs, w której są przesyłane strumieniowo powiadomienia obiektów blob, musisz użyć uwierzytelniania tożsamości zarządzanej dla połączenia danych i poprawnie skonfigurować zasoby. Aby uzyskać więcej informacji, zobacz Znane problemy z usługą Event Grid.
  • Połączenie danych oparte na kluczach: jeśli uwierzytelnianie tożsamości zarządzanej nie zostanie określone dla połączenia danych, połączenie automatycznie domyślnie zostanie nawiązane z uwierzytelnianiem opartym na kluczach. Połączenia oparte na kluczach pobierają dane przy użyciu parametry połączenia zasobów, takich jak parametry połączenia usługi Azure Event Hubs. Usługa Azure Data Explorer pobiera zasób parametry połączenia dla określonego zasobu i bezpiecznie je zapisuje. Następnie parametry połączenia służy do pobierania danych ze źródła danych.

    Uwaga

    Jeśli klucz zostanie obrócony, połączenie danych nie będzie już działać i nie będzie mogło pobrać danych ze źródła danych. Aby rozwiązać ten problem, zaktualizuj lub ponownie utwórz połączenie danych.

Format danych

  • Zobacz obsługiwane formaty.
  • Zobacz obsługiwane kompresje.
    • Oryginalny nieskompresowany rozmiar danych powinien być częścią metadanych obiektu blob, a w przeciwnym razie usługa Azure Data Explorer będzie ją oszacować. Limit rozmiaru nieskompresowanego pozyskiwania na plik wynosi 6 GB.

      Uwaga

      Subskrypcję powiadomień usługi Event Grid można ustawić na kontach usługi Azure Storage dla BlobStorageusługi , StorageV2lub usługi Data Lake Storage Gen2.

Właściwości pozyskiwania

Właściwości pozyskiwania obiektów blob można określić za pośrednictwem metadanych obiektu blob. Można ustawić następujące właściwości:

Właściwości opis
rawSizeBytes Rozmiar nieprzetworzonych (nieskompresowanych) danych. W przypadku avro/ORC/Parquet jest to rozmiar przed zastosowaniem kompresji specyficznej dla formatu. Podaj oryginalny rozmiar danych, ustawiając tę właściwość na nieskompresowany rozmiar danych w bajtach.
kustoDatabase W nazwie docelowej bazy danych uwzględniana jest wielkość liter. Domyślnie dane są pozyskiwane do docelowej bazy danych skojarzonej z połączeniem danych. Użyj tej właściwości, aby zastąpić domyślną bazę danych i wysłać dane do innej bazy danych. W tym celu należy najpierw skonfigurować połączenie jako połączenie z wieloma bazami danych.
kustoTable W nazwie istniejącej tabeli docelowej jest uwzględniana wielkość liter. Table Zastępuje zestaw w okienkuData Connection.
kustoDataFormat Format danych. Data format Zastępuje zestaw w okienkuData Connection.
kustoIngestionMappingReference Nazwa istniejącego mapowania pozyskiwania do użycia. Column mapping Zastępuje zestaw w okienkuData Connection.
kustoIgnoreFirstRecord Jeśli ustawiono truewartość , usługa Kusto ignoruje pierwszy wiersz obiektu blob. Użyj danych w formacie tabelarycznym (CSV, TSV lub podobnych), aby zignorować nagłówki.
kustoExtentTags Ciąg reprezentujący tagi , które zostaną dołączone do zakresu wynikowego.
kustoCreationTime Zastępuje czas tworzenia zakresu dla obiektu blob sformatowany jako ciąg ISO 8601. Służy do wypełniania kopii zapasowych.

Routing zdarzeń

Podczas tworzenia połączenia danych z klastrem należy określić routing dla miejsca wysyłania pozyskanych danych. Domyślnym routingiem jest tabela docelowa określona w parametry połączenia, która jest skojarzona z docelową bazą danych. Domyślny routing danych jest również określany jako routing statyczny. Możesz określić alternatywny routing dla danych przy użyciu właściwości danych zdarzenia.

Kierowanie danych zdarzeń do alternatywnej bazy danych

Routing danych do alternatywnej bazy danych jest domyślnie wyłączony. Aby wysłać dane do innej bazy danych, należy najpierw ustawić połączenie jako połączenie z wieloma bazami danych. Można to zrobić w witrynie Azure Portal, C#, Python lub szablonie usługi ARM. Użytkownik, grupa, jednostka usługi lub tożsamość zarządzana używana do zezwalania na routing bazy danych musi mieć co najmniej rolę współautora i uprawnienia do zapisu w klastrze. Aby uzyskać więcej informacji, zobacz Tworzenie połączenia danych usługi Event Grid dla usługi Azure Data Explorer.

Aby określić alternatywną bazę danych, ustaw właściwość Pozyskiwanie bazy danych.

Ostrzeżenie

Określenie alternatywnej bazy danych bez ustawienia połączenia jako połączenia danych z wieloma bazami danych spowoduje niepowodzenie pozyskiwania.

Kierowanie danych zdarzeń do tabeli alternatywnej

Podczas konfigurowania połączenia magazynu obiektów blob z klastrem usługi Azure Data Explorer określ właściwości tabeli docelowej:

  • nazwa tabeli
  • format danych
  • mapping

Można również określić właściwości tabeli docelowej dla każdego obiektu blob przy użyciu metadanych obiektu blob. Dane będą dynamicznie kierować zgodnie z określonymi właściwościami pozyskiwania.

W poniższym przykładzie pokazano, jak ustawić właściwości pozyskiwania metadanych obiektu blob przed jego przekazaniem. Obiekty blob są kierowane do różnych tabel.

Ponadto można określić docelową bazę danych. Połączenie danych usługi Event Grid jest tworzone w kontekście określonej bazy danych. W związku z tym ta baza danych jest domyślnym routingiem bazy danych połączenia danych. Aby wysłać dane do innej bazy danych, ustaw właściwość pozyskiwania "KustoDatabase" i ustaw połączenie danych jako połączenie danych z wieloma bazami danych. Routing danych do innej bazy danych jest domyślnie wyłączony (niedozwolone). Ustawienie właściwości pozyskiwania bazy danych innej niż baza danych połączenia danych bez zezwalania na routing danych do wielu baz danych (ustawienie połączenia jako połączenie danych z wieloma bazami danych) spowoduje niepowodzenie pozyskiwania.

Aby uzyskać więcej informacji, zobacz przekazywanie obiektów 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>")));

Przekazywanie obiektów blob

Obiekt blob można utworzyć z pliku lokalnego, ustawić właściwości pozyskiwania na metadane obiektu blob i przekazać go. Przykłady można znaleźć w temacie Use the Event Grid data connection (Używanie połączenia danych usługi Event Grid).

Uwaga

  • Zdecydowanie zalecamy używanie BlockBlob metody do generowania danych, ponieważ użycie AppendBlob może spowodować nieoczekiwane zachowanie.
  • Korzystanie z zestawu SDK magazynu usługi Azure Data Lake Gen2 wymaga użycia do CreateFile przekazywania plików i Flush na końcu z parametrem zamknięcia ustawionym na truewartość . Aby uzyskać szczegółowy przykład poprawnego użycia zestawu SDK usługi Data Lake Gen2, zobacz Używanie połączenia danych usługi Event Grid.
  • Wyzwalanie pozyskiwania po CopyBlob operacji nie jest obsługiwane w przypadku kont magazynu z włączoną funkcją hierarchicznej przestrzeni nazw.
  • Gdy punkt końcowy centrum zdarzeń nie potwierdzi otrzymania zdarzenia, usługa Azure Event Grid aktywuje mechanizm ponawiania prób. Jeśli to ponowienie próby nie powiedzie się, usługa Event Grid może dostarczyć zdarzenia niedostarczone na konto magazynu przy użyciu procesu tworzenia utraconych komunikatów. Aby uzyskać więcej informacji, zobacz Dostarczanie komunikatów usługi Event Grid i ponawianie próby.

Zmienianie nazwy obiektów blob

W przypadku korzystania z usługi ADLSv2 można zmienić nazwę obiektu blob, aby wyzwolić pozyskiwanie obiektów blob w usłudze Azure Data Explorer. Na przykład zobacz Zmienianie nazwy obiektów blob.

Uwaga

  • Zmiana nazwy katalogu jest możliwa w usłudze ADLSv2, ale nie wyzwala zdarzeń zmienionych nazw obiektów blob i pozyskiwania obiektów blob wewnątrz katalogu. Aby pozyskać obiekty blob po zmianie nazwy, zmień nazwę żądanych obiektów blob.
  • Jeśli zdefiniowano filtry do śledzenia określonych podmiotów podczas tworzenia połączenia danych lub podczas ręcznego tworzenia zasobów usługi Event Grid, te filtry są stosowane w ścieżce pliku docelowego.

Usuwanie obiektów blob przy użyciu cyklu życia magazynu

Usługa Azure Data Explorer nie usunie obiektów blob po pozyskaniu. Użyj cyklu życia usługi Azure Blob Storage, aby zarządzać usuwaniem obiektów blob. Zaleca się przechowywanie obiektów blob przez od trzech do pięciu dni.

Znane problemy z usługą Event Grid

Praca bez uwierzytelniania lokalnego

Jeśli uwierzytelnianie lokalne jest wyłączone w przestrzeni nazw usługi Event Hubs zawierającej centrum zdarzeń używane do przesyłania strumieniowego powiadomień, wykonaj następujące kroki, aby upewnić się, że dane przepływa prawidłowo z magazynu do centrum zdarzeń przy użyciu tożsamości zarządzanych:

  1. Przypisz tożsamość zarządzaną przypisaną przez system do tematu systemu usługi Event Grid konta magazynu. Aby uzyskać więcej informacji, zobacz Włączanie tożsamości zarządzanej dla tematów systemowych.
  2. Udziel uprawnień nadawcy tożsamości zarządzanej, przypisując mu rolę Nadawca danych usługi Azure Event Hubs w centrum zdarzeń. Aby uzyskać więcej informacji, zobacz Dodawanie tożsamości do ról platformy Azure w miejscach docelowych.
  3. Upewnij się, że subskrypcja usługi Event Grid używa tożsamości zarządzanej do dostarczania zdarzeń. Aby uzyskać więcej informacji, zobacz Tworzenie subskrypcji zdarzeń korzystających z tożsamości.

Ponadto skonfiguruj połączenie danych usługi Event Grid w celu korzystania z uwierzytelniania tożsamości zarządzanej, aby usługa Azure Data Explorer mogła odbierać powiadomienia z centrum zdarzeń.

Konfigurowanie pozyskiwania usługi Event Grid dla plików wyeksportowanych z usługi Azure Data Explorer

W przypadku eksportowania plików używanych do pozyskiwania usługi Event Grid przy użyciu usługi Azure Data Explorer należy pamiętać:

  • Powiadomienia usługi Event Grid nie są wyzwalane, jeśli parametry połączenia dostarczone do polecenia eksportu lub parametry połączenia dostarczone do tabeli zewnętrznej jest ciągiem połączenia w formacie ADLS Gen2 (na przykład abfss://filesystem@accountname.dfs.core.windows.net), ale konto magazynu nie jest włączone dla hierarchicznej przestrzeni nazw.
  • Jeśli konto nie jest włączone dla hierarchicznej przestrzeni nazw, parametry połączenia musi użyć formatu usługi Blob Storage (na przykład https://accountname.blob.core.windows.net). Eksport działa zgodnie z oczekiwaniami nawet w przypadku korzystania z usługi ADLS Gen2 parametry połączenia, ale powiadomienia nie będą wyzwalane, a pozyskiwanie usługi Event Grid nie będzie działać.

Emulowanie zdarzeń magazynu z niestandardowych składników

W przypadku używania składników niestandardowych do emulowania zdarzeń usługi Azure Storage emulowane zdarzenia muszą być ściśle zgodne ze schematem zdarzeń usługi Azure Blob Storage, ponieważ usługa Azure Data Explorer odrzuci zdarzenia, których nie można przeanalizować przez zestaw SDK usługi Event Grid.