Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Os Hubs de Eventos do Azure são uma plataforma de streaming de big data e um serviço de ingestão de eventos. O Azure Data Explorer oferece ingestão contínua de Hubs de Eventos gerenciados pelo cliente.
O pipeline de ingestão de Hubs de Eventos transfere eventos para o Azure Data Explorer em várias etapas. Primeiro, você cria um hub de eventos no portal do Azure. Em seguida, crie uma tabela de destino no Azure Data Explorer na qual os dados, em um formato específico, são ingeridos usando as propriedades de ingestão fornecidas. A conexão dos Hubs de Eventos precisa estar ciente do roteamento de eventos. Os dados podem ser incorporados com propriedades selecionadas de acordo com as propriedades do sistema de eventos. Crie uma conexão com Hubs de Eventos para criar um hub de eventos e enviar eventos. Esse processo pode ser gerenciado por meio do portal do Azure, programaticamente com C# ou Python ou com o modelo do Azure Resource Manager.
Para obter informações gerais sobre a ingestão de dados no Azure Data Explorer, consulte Visão geral da ingestão de dados do Azure Data Explorer.
Opções de autenticação de conexão de dados do Azure Data Explorer
Conexão de dados baseada em identidade gerenciada (recomendado): usar uma conexão de dados baseada em identidade gerenciada é a maneira mais segura de se conectar a fontes de dados. Ele fornece controle total sobre a capacidade de buscar dados de uma fonte de dados. A configuração de uma conexão de dados usando identidade gerenciada requer as seguintes etapas:
- Adicione uma identidade gerenciada ao cluster.
- Conceda permissões à identidade gerenciada na fonte de dados. Para buscar dados dos Hubs de Eventos do Azure, a identidade gerenciada deve ter permissões de Recetor de Dados dos Hubs de Eventos do Azure .
- Defina uma política de identidade gerenciada nos bancos de dados de destino.
- Crie uma conexão de dados usando a autenticação de identidade gerenciada para buscar dados.
Atenção
Se as permissões de identidade gerenciada forem removidas da fonte de dados, a conexão de dados não funcionará mais e não poderá buscar dados da fonte de dados.
Conexão de dados baseada em chave: se uma autenticação de identidade gerenciada não for especificada para a conexão de dados, a conexão assumirá automaticamente como padrão a autenticação baseada em chave. As conexões baseadas em chave buscam dados usando uma cadeia de conexão de recurso, como a cadeia de conexão dos Hubs de Eventos do Azure. O Azure Data Explorer obtém a cadeia de conexão de recurso para o recurso especificado e a salva com segurança. A cadeia de conexão é usada para buscar dados da fonte de dados.
Atenção
Se a chave for girada, a conexão de dados não funcionará mais e não poderá buscar dados da fonte de dados. Para corrigir o problema, atualize ou recrie a conexão de dados.
Formato dos dados
- Os dados são lidos do Event Hub na forma de objetos EventData.
- Consulte os formatos suportados.
Observação
- A ingestão de Hubs de Eventos não suporta o formato RAW.
- Não há suporte para o Registro de Esquema dos Hubs de Eventos do Azure e o Avro sem esquema.
- Os dados podem ser compactados usando o algoritmo de
gzip
compressão. Você pode especificarCompression
dinamicamente usando propriedades de ingestão ou nas configurações estáticas de Conexão de Dados. - A compactação de dados não é suportada para formatos binários (Avro, ApacheAvro, Parquet, ORC e W3CLOGFILE).
- A codificação personalizada e as propriedades do sistema incorporado não são suportadas com formatos binários e dados compactados.
- Ao usar formatos binários (Avro, ApacheAvro, Parquet, ORC, e W3CLOGFILE) e mapeamentos de ingestão, a ordem dos campos na definição de mapeamento de ingestão deve corresponder à ordem das colunas correspondentes na tabela.
Propriedades dos Hubs de Eventos
O Azure Data Explorer dá suporte às seguintes propriedades de Hubs de Eventos:
- Um conjunto fechado de propriedades de ingestão, que ajuda a rotear o evento para a tabela relevante.
- Um conjunto fechado de propriedades do sistema de eventos, que pode ser incorporado nos dados com base em um determinado mapeamento.
Observação
Não há suporte para a ingestão de propriedades personalizadas de Hubs de Eventos, usadas para associar metadados a eventos. Se você precisar ingerir propriedades personalizadas, envie-as no corpo dos dados do evento. Para obter mais informações, consulte Ingerir propriedades personalizadas.
Propriedades de ingestão
As propriedades de ingestão instruem o processo de ingestão, para onde encaminhar os dados e como processá-los. Você pode especificar as propriedades de ingestão dos eventos usando o EventData.Properties. Você pode definir as seguintes propriedades:
Observação
Os nomes de propriedade são sensíveis a maiúsculas e minúsculas.
Propriedade | Descrição |
---|---|
Base de dados | O nome do banco de dados de destino com distinção entre maiúsculas e minúsculas. Por padrão, os dados são ingeridos no banco de dados de destino associado à conexão de dados. Use essa propriedade para substituir o banco de dados padrão e enviar dados para um banco de dados diferente. Para fazer isso, você deve primeiro configurar a conexão como uma conexão de vários bancos de dados. |
Tabela | O nome que distingue maiúsculas de minúsculas da tabela de destino existente. Substitui o Table definido no painel Data Connection . |
Formato | Formato de dados. Substitui o Data format definido no painel Data Connection . |
ReferênciaDeMapeamentoDeIngestão | Nome do mapeamento de ingestão existente a ser usado. Substitui o Column mapping definido no painel Data Connection . |
Compressão | Compactação de dados, None (padrão) ou gzip . |
Codificação | Codificação de dados, o padrão é UTF8. Pode ser qualquer uma das codificações suportadas pelo .NET. |
Etiquetas | Uma lista de tags para associar aos dados ingeridos, formatada como uma string de matriz JSON. Há implicações de desempenho ao usar tags. |
RawHeaders | Indica que a fonte do evento é Kafka e o Azure Data Explorer deve usar a desserialização da matriz de bytes para ler outras propriedades de roteamento. O valor é ignorado. |
Observação
Somente os eventos enfileirados após a criação da conexão de dados são ingeridos, a menos que seja fornecida uma data de início de obtenção personalizada. Em qualquer caso, o período de retrospetiva não pode exceder o período de retenção real do Hub de Eventos.
Roteamento de eventos
Ao criar uma conexão de dados com o cluster, você pode especificar o roteamento para onde enviar os dados ingeridos. O roteamento padrão é para a tabela de destino especificada na cadeia de conexão associada ao banco de dados de destino. O roteamento padrão para seus dados também é conhecido como roteamento estático. Você pode especificar opções alternativas de roteamento e processamento para seus dados definindo uma ou mais das propriedades de dados de evento mencionadas no parágrafo anterior.
Observação
A conexão de dados dos Hubs de Eventos tentará processar todos os eventos lidos do Hub de Eventos, e todos os eventos que não puderem processar por qualquer motivo serão relatados como uma falha de ingestão. Leia sobre como monitorar a ingestão do Azure Data Explorer aqui.
Encaminhar dados de eventos para um banco de dados alternativo
O roteamento de dados para um banco de dados alternativo está desativado por padrão. Para enviar os dados para um banco de dados diferente, você deve primeiro definir a conexão como uma conexão de vários bancos de dados. Esse recurso pode ser habilitado no portal do Azure Portal do Azure, com SDKs de gerenciamento C# ou Python ou com um modelo ARM. O utilizador, grupo, principal de serviço ou identidade gerida usada para permitir o roteamento de base de dados deve ter, pelo menos, a função de colaborador e permissões de gravação no cluster.
Para especificar um banco de dados alternativo, defina a propriedade de ingestãodo banco de dados.
Advertência
Especificar um banco de dados alternativo sem definir a conexão como uma conexão de dados de vários bancos de dados fará com que a ingestão falhe.
Encaminhar dados de eventos para uma tabela alternativa
Para especificar uma tabela alternativa para cada evento, defina as propriedades de ingestão, de tabela, formato e compactação e mapeamento. A conexão roteia dinamicamente os dados ingeridos conforme especificado em EventData.Properties, substituindo as propriedades estáticas desse evento.
O exemplo a seguir mostra como definir os detalhes do hub de eventos e enviar dados de métricas meteorológicas para banco de dados alternativo (MetricsDB) e tabela (WeatherMetrics). Os dados estão no formato JSON e o mapeamento1 é predefinido na tabela WeatherMetrics.
// This sample uses Azure.Messaging.EventHubs which is a .Net Framework library.
await using var producerClient = new EventHubProducerClient("<eventHubConnectionString>");
// Create the event and add optional "dynamic routing" properties
var eventData = new EventData(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(
new { TimeStamp = DateTime.UtcNow, MetricName = "Temperature", Value = 32 }
)));
eventData.Properties.Add("Database", "MetricsDB");
eventData.Properties.Add("Table", "WeatherMetrics");
eventData.Properties.Add("Format", "json");
eventData.Properties.Add("IngestionMappingReference", "mapping1");
eventData.Properties.Add("Tags", "['myDataTag']");
var events = new[] { eventData };
// Send events
await producerClient.SendAsync(events);
Mapeamento de propriedades do sistema de Hubs de Eventos
As propriedades do sistema são campos definidos pelo serviço Event Hubs, no momento em que o evento é adicionado à fila. A conexão de dados dos Hubs de Eventos do Azure Data Explorer pode incorporar um conjunto predefinido de propriedades do sistema nos dados ingeridos em uma tabela com base em um determinado mapeamento.
Observação
- A incorporação de propriedades do sistema é suportada para formatos json e tabular (ou seja,
JSON
,MultiJSON
,CSV
,TSV
,PSV
,SCsv
,SOHsv
,TSVE
). - Ao usar um formato não suportado (i.e. TXT ou formatos compactados como
Parquet
,Avro
etc.) os dados ainda serão ingeridos, mas as propriedades serão ignoradas. - Não há suporte para a incorporação de propriedades do sistema quando uma compactação de mensagens do Hub de Eventos é definida. Nesses cenários, um erro apropriado será emitido e os dados não serão ingeridos.
- Para dados tabulares, as propriedades do sistema são suportadas apenas para mensagens de eventos com um único registo.
- Para dados json, as propriedades do sistema também são suportadas para mensagens de eventos de vários registros. Nesses casos, as propriedades do sistema são adicionadas somente ao primeiro registro da mensagem de evento.
- Para
CSV
mapeamento, as propriedades são adicionadas no início do registro na ordem listada na criação da conexão de dados. Não confie na ordem dessas propriedades, pois isso pode mudar no futuro. - Para
JSON
mapeamento, as propriedades são adicionadas de acordo com os nomes das propriedades na tabela Propriedades do Sistema.
O serviço Hubs de Eventos expõe as seguintes propriedades do sistema:
Propriedade | Tipo de dados | Descrição |
---|---|---|
x-opt-tempo-de-enfileiramento | datetime |
Hora UTC em que foi enfileirado o evento |
x-opt-seqüência-número | long |
O número de sequência lógica do evento dentro do fluxo de partição do hub de eventos |
x-opt-deslocamento | string |
O deslocamento do evento do fluxo de partição do hub de eventos. O identificador de deslocamento é exclusivo dentro de uma partição do fluxo do hub de eventos |
x-opt-publicador | string |
O nome do editor, se a mensagem tiver sido enviada para um destino do editor |
chave de partição x-opt | string |
A chave de partição da partição correspondente que armazenou o evento |
Ao trabalhar com hubs de eventos do IoT Central , você também pode incorporar as propriedades do sistema do Hub IoT na carga útil. Para obter a lista completa, consulte Propriedades do sistema do Hub IoT.
Se você selecionou Propriedades do sistema de eventos na seção Fonte de Dados da tabela, deverá incluir as propriedades no esquema e mapeamento da tabela.
Exemplos de mapeamento de esquema
Exemplo de mapeamento de esquema de tabela
Se os dados incluírem três colunas (TimeStamp
, , e MetricName
) e as propriedades incluídas forem Value
e x-opt-enqueued-time
, crie ou altere o esquema da tabela x-opt-offset
usando este comando:
.create-merge table TestTable (TimeStamp: datetime, MetricName: string, Value: int, EventHubEnqueuedTime:datetime, EventHubOffset:string)
Exemplo de mapeamento CSV
Execute os seguintes comandos para adicionar dados ao início do registro. Observe os valores ordinais.
.create table TestTable ingestion csv mapping "CsvMapping1"
'['
' { "column" : "TimeStamp", "Properties":{"Ordinal":"2"}},'
' { "column" : "MetricName", "Properties":{"Ordinal":"3"}},'
' { "column" : "Value", "Properties":{"Ordinal":"4"}},'
' { "column" : "EventHubEnqueuedTime", "Properties":{"Ordinal":"0"}},'
' { "column" : "EventHubOffset", "Properties":{"Ordinal":"1"}}'
']'
Exemplo de mapeamento JSON
Os dados são adicionados usando o mapeamento de propriedades do sistema. Execute estes comandos:
.create table TestTable ingestion json mapping "JsonMapping1"
'['
' { "column" : "TimeStamp", "Properties":{"Path":"$.TimeStamp"}},'
' { "column" : "MetricName", "Properties":{"Path":"$.MetricName"}},'
' { "column" : "Value", "Properties":{"Path":"$.Value"}},'
' { "column" : "EventHubEnqueuedTime", "Properties":{"Path":"$.x-opt-enqueued-time"}},'
' { "column" : "EventHubOffset", "Properties":{"Path":"$.x-opt-offset"}}'
']'
Mapeamento de esquema para Arquivos Avro do Event Hubs Capture
Uma maneira de consumir dados do Azure Event Hubs é capturar eventos através dos Hubs de Eventos da Azure no Azure Blob Storage ou no Azure Data Lake Storage. Em seguida, pode ingerir os arquivos de captura à medida que são gravados usando uma Conexão de Dados da Grelha de Eventos no Azure Data Explorer.
O esquema dos arquivos de captura é diferente do esquema do evento original enviado aos Hubs de Eventos. Você deve projetar o esquema da tabela de destino com essa diferença em mente. Especificamente, a carga útil do evento é representada como uma matriz de bytes no ficheiro de captura, e essa matriz não é automaticamente decodificada pela conexão de dados da Grade de Eventos do Azure Data Explorer. Para obter mais informações sobre o esquema de arquivo para dados de captura Avro de Hubs de Eventos, consulte Explorando arquivos Avro capturados nos Hubs de Eventos do Azure.
Para decodificar corretamente a carga útil do evento:
- Mapeie o
Body
campo do evento capturado para uma coluna do tipodynamic
na tabela de destino. - Aplique uma política de atualização que converta a matriz de bytes em uma cadeia de caracteres legível usando a função unicode_codepoints_to_string( ).
Ingerir propriedades personalizadas
Ao ingerir eventos de Hubs de Eventos, os dados são extraídos da body
seção do objeto de dados de evento. No entanto, as properties
dos Hubs de Eventos são definidas na seção do objeto e não são ingeridas. Para ingerir propriedades do cliente, você deve incorporá-las aos dados na body
seção do objeto.
O exemplo a seguir compara o objeto de dados eventos que contém a propriedade customProperty
personalizada conforme definido pelo Event Hubs (esquerda) com a propriedade incorporada necessária para ingestão (direita).
{
"body":{
"value": 42
},
"properties":{
"customProperty": "123456789"
}
}
{
"body":{
"value": 42,
"customProperty": "123456789"
}
}
Você pode usar um dos seguintes métodos para incorporar propriedades personalizadas nos dados na body
seção do objeto de dados de evento:
- Em Hubs de Eventos, ao criar o objeto de dados de evento, incorpore as propriedades personalizadas como parte dos dados na
body
seção do objeto. - Use o Azure Stream Analytics para processar eventos do hub de eventos e incorporar as propriedades personalizadas nos dados do evento. No Azure Stream Analytics, você pode ingerir os dados nativamente usando o conector de saída do Azure Data Explorer ou rotear os dados para outro hub de eventos e, a partir daí, para o cluster.
- Use o Azure Functions para adicionar as propriedades personalizadas e, em seguida, ingerir os dados.
Criar Hubs de Eventos
Se você ainda não tiver um, crie um hub de eventos. A ligação ao hub de eventos pode ser gerida através do portal do Azure, programaticamente com C# ou Python ou com o modelo Azure Resource Manager.
Observação
- A capacidade de adicionar partições dinamicamente após a criação de um hub de eventos só está disponível com os níveis Premium e Dedicado dos Hubs de Eventos. Considere a escala de longo prazo ao definir a contagem de partições.
- O grupo de consumidores deve ser único por consumidor. Crie um grupo de consumidores dedicado para cada conexão de dados do Azure Data Explorer.
Conexão de dados de Hubs de Eventos entre regiões
Para obter o melhor desempenho, crie o hub de eventos na mesma região do cluster. Se isso não for possível, considere usar as camadas Premium ou Hubs de Eventos Dedicados . Para obter uma comparação de camadas, consulte Comparar camadas de Hubs de Eventos do Azure.
Enviar eventos
Veja o aplicativo de exemplo que gera dados e os envia para um hub de eventos.
Observação
Para habilitar o processamento eficiente de eventos dos Hubs de Eventos para o Azure Data Explorer, evite uma distribuição desequilibrada de eventos entre partições. O mapeamento irregular pode causar uma alta latência de descoberta. Para obter mais informações, consulte Mapeamento de eventos para partições.
Configurar a solução de recuperação de desastres geográficos
O hub de eventos oferece uma solução de recuperação de desastres geográficos .
O Azure Data Explorer não oferece suporte a Alias
namespaces de hub de eventos. Para implementar a recuperação de desastres geográficos em sua solução, crie duas conexões de dados do hub de eventos: uma para o namespace primário e outra para o namespace secundário. O Azure Data Explorer escuta ambas as conexões do hub de eventos.
Observação
É responsabilidade do usuário implementar um failover do namespace primário para o namespace secundário.
Conteúdo relacionado
- Ingerir dados do hub de eventos no Azure Data Explorer
- Criar uma conexão de dados do hub de eventos para o Azure Data Explorer usando C#
- Criar uma conexão de dados do hub de eventos para o Azure Data Explorer usando Python
- Criar uma conexão de dados do hub de eventos para o Azure Data Explorer usando o modelo do Azure Resource Manager
- Gerenciar conexões de dados de Hubs de Eventos em seu cluster gratuito
- Ingerir e consultar logs do Azure Monitor com o Azure Data Explorer