Tutorial: Ingerir eventos dos Hubs de Eventos do Azure para os Logs do Azure Monitor (Visualização Pública)
Os Hubs de Eventos do Azure são uma plataforma de streaming de big data que coleta eventos de várias fontes para serem ingeridos pelo Azure e por serviços externos. Este artigo explica como ingerir dados diretamente de um hub de eventos em um espaço de trabalho do Log Analytics.
Neste tutorial, irá aprender a:
- Criar uma tabela de destino para dados do hub de eventos no espaço de trabalho do Log Analytics
- Criar um ponto de extremidade de coleta de dados
- Criar uma regra de coleta de dados
- Conceder permissões à regra de coleta de dados para o hub de eventos
- Associar a regra de coleta de dados ao hub de eventos
Pré-requisitos
Para enviar eventos dos Hubs de Eventos do Azure para os Logs do Azure Monitor, você precisa destes recursos:
Espaço de trabalho do Log Analytics onde você tem pelo menos direitos de colaborador.
Seu espaço de trabalho do Log Analytics precisa estar vinculado a um cluster dedicado ou ter uma camada de compromisso.
Namespace de Hubs de Eventos que permite acesso à rede pública. Se o acesso à rede pública estiver desativado, verifique se "Permitir que serviços confiáveis da Microsoft ignorem este firewall" esteja definido como "Sim".
Hub de eventos com eventos. Você pode enviar eventos para seu hub de eventos seguindo as etapas em Enviar e receber eventos nos tutoriais dos Hubs de Eventos do Azure ou definindo as configurações de diagnóstico dos recursos do Azure.
Regiões suportadas
Atualmente, o Azure Monitor dá suporte à ingestão de Hubs de Eventos nestas regiões:
Américas | Europa | Médio Oriente | África | Ásia-Pacífico |
---|---|---|---|---|
Sul do Brasil | França Central | Norte dos E.A.U. | Norte da África do Sul | Austrália Central |
Brasil Sudeste | Europa do Norte | Leste da Austrália | ||
Canadá Central | Leste da Noruega | Austrália Sudeste | ||
Leste do Canadá | Norte da Suíça | Índia Central | ||
E.U.A. Leste | Oeste da Suíça | Ásia Leste | ||
E.U.A. Leste 2 | Sul do Reino Unido | Leste do Japão | ||
E.U.A. Centro-Sul | Oeste do Reino Unido | Jio, Oeste da Índia | ||
E.U.A. Oeste | Europa Ocidental | Coreia do Sul Central | ||
EUA Oeste 3 | Sudeste Asiático |
Você precisa criar sua Associação de Regra de Coleta de Dados (DCRA) na mesma região que o Hub de Eventos. O espaço de trabalho do Log Analytics pode estar em qualquer região, mas a Regra de Coleta de Dados (DCR) e o Ponto de Extremidade de Coleta de Dados (DCE) devem estar na mesma região que o espaço de trabalho do Log Analytics.
Para latência mínima, recomendamos colocar todos os recursos na mesma região.
Recolher as informações necessárias
Você precisa de sua ID de assinatura, nome do grupo de recursos, nome do espaço de trabalho, ID do recurso do espaço de trabalho e ID do recurso da instância do hub de eventos nas etapas subsequentes:
Navegue até o espaço de trabalho no menu Espaços de trabalho do Log Analytics e selecione Propriedades e copie sua ID de assinatura, grupo de recursos e nome do espaço de trabalho. Você precisará desses detalhes para criar recursos neste tutorial.
Selecione JSON para abrir a tela JSON de recurso e copiar a ID do recurso do espaço de trabalho. Você precisará da ID do recurso do espaço de trabalho para criar uma regra de coleta de dados.
Navegue até a instância do hub de eventos, selecione JSON para abrir a tela JSON de recursos e copie a ID de recurso da instância do hub de eventos. Você precisará do ID de recurso da instância do hub de eventos para associar a regra de coleta de dados ao hub de eventos.
Criar uma tabela de destino no espaço de trabalho do Log Analytics
Antes de poder ingerir dados, você precisa configurar uma tabela de destino. Você pode ingerir dados em tabelas personalizadas e tabelas do Azure com suporte.
Para criar uma tabela personalizada na qual ingerir eventos, no portal do Azure:
Selecione o botão Cloud Shell e verifique se o ambiente está definido como PowerShell.
Execute este comando do PowerShell para criar a tabela, fornecendo o nome da tabela (
<table_name>
) no JSON (que também com sufixo _CL no caso de tabela personalizada) e definindo os<subscription_id>
valoresInvoke-AzRestMethod -Path
,<resource_group_name>
,<workspace_name>
e<table_name>
no comando:$tableParams = @' { "properties": { "schema": { "name": "<table_name>", "columns": [ { "name": "TimeGenerated", "type": "datetime", "description": "The time at which the data was ingested." }, { "name": "RawData", "type": "string", "description": "Body of the event." }, { "name": "Properties", "type": "dynamic", "description": "Additional message properties." } ] } } } '@ Invoke-AzRestMethod -Path "/subscriptions/<subscription_id>/resourcegroups/<resource_group_name>/providers/microsoft.operationalinsights/workspaces/<workspace_name>/tables/<table_name>?api-version=2021-12-01-preview" -Method PUT -payload $tableParams
Importante
- Os nomes das colunas devem começar com uma letra e podem consistir em até 45 caracteres alfanuméricos e sublinhados (
_
). _ResourceId
,id
, ,_ResourceId
,_SubscriptionId
,Type
TenantId
, ,UniqueId
eTitle
são nomes de colunas reservados.- Os nomes das colunas diferenciam maiúsculas de minúsculas. Certifique-se de usar o caso correto em sua regra de coleta de dados.
Criar um ponto de extremidade de coleta de dados
Para coletar dados com uma regra de coleta de dados, você precisa de um ponto de extremidade de coleta de dados:
Crie um ponto de extremidade de coleta de dados.
Importante
Crie o ponto de extremidade de coleta de dados na mesma região do espaço de trabalho do Log Analytics.
Na tela Visão geral do ponto de extremidade de coleta de dados, selecione Exibição JSON.
Copie a ID do recurso para a regra de coleta de dados. Você usará essas informações na próxima etapa.
Criar uma regra de coleta de dados
O Azure Monitor usa regras de coleta de dados para definir quais dados coletar, como transformar esses dados e para onde enviá-los.
Para criar uma regra de coleta de dados no portal do Azure:
Na caixa de pesquisa do portal, digite modelo e selecione Implantar um modelo personalizado.
Selecione Crie o seu próprio modelo no editor.
Cole o modelo do Gerenciador de Recursos abaixo no editor e selecione Salvar.
Observe os seguintes detalhes na regra de coleta de dados abaixo:
identity
- Define qual tipo de identidade gerenciada usar. Em nosso exemplo, usamos a identidade atribuída ao sistema. Você também pode configurar a identidade gerenciada atribuída pelo usuário.dataCollectionEndpointId
- ID do recurso do ponto final de coleta de dados.streamDeclarations
- Define quais dados ingerir do hub de eventos (dados recebidos). A declaração de fluxo não pode ser modificada.TimeGenerated
- A hora em que os dados foram ingeridos do hub de eventos para os Logs do Azure Monitor.RawData
- Corpo do evento. Para obter mais informações, consulte Ler eventos.Properties
- Propriedades do usuário do evento. Para obter mais informações, consulte Ler eventos.
datasources
- Especifica o grupo de consumidores do hub de eventos e o fluxo para o qual você ingere os dados.destinations
- Especifica todos os destinos para onde os dados serão enviados. Você pode ingerir dados em um ou mais espaços de trabalho do Log Analytics.dataFlows
- Faz a correspondência entre o fluxo e o espaço de trabalho de destino e especifica a consulta de transformação e a tabela de destino. Em nosso exemplo, ingerimos dados para a tabela personalizada que criamos anteriormente. Você também pode ingerir em uma tabela do Azure com suporte.transformKql
- Especifica uma transformação a ser aplicada aos dados de entrada (declaração de fluxo) antes de serem enviados para o espaço de trabalho. Em nosso exemplo, definimostransformKql
comosource
, que não modifica os dados da fonte de forma alguma, porque estamos mapeando dados de entrada para uma tabela personalizada que criamos especificamente com o esquema correspondente. Se você estiver ingerindo dados em uma tabela com um esquema diferente ou para filtrar dados antes da ingestão, defina uma transformação de coleta de dados.
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "dataCollectionRuleName": { "type": "string", "metadata": { "description": "Specifies the name of the data collection Rule to create." } }, "workspaceResourceId": { "type": "string", "metadata": { "description": "Specifies the Azure resource ID of the Log Analytics workspace to use." } }, "endpointResourceId": { "type": "string", "metadata": { "description": "Specifies the Azure resource ID of the data collection endpoint to use." } }, "tableName": { "type": "string", "metadata": { "description": "Specifies the name of the table in the workspace." } }, "consumerGroup": { "type": "string", "metadata": { "description": "Specifies the consumer group of event hub." }, "defaultValue": "$Default" } }, "resources": [ { "type": "Microsoft.Insights/dataCollectionRules", "name": "[parameters('dataCollectionRuleName')]", "location": "[resourceGroup().location]", "apiVersion": "2022-06-01", "identity": { "type": "systemAssigned" }, "properties": { "dataCollectionEndpointId": "[parameters('endpointResourceId')]", "streamDeclarations": { "Custom-MyEventHubStream": { "columns": [ { "name": "TimeGenerated", "type": "datetime" }, { "name": "RawData", "type": "string" }, { "name": "Properties", "type": "dynamic" } ] } }, "dataSources": { "dataImports": { "eventHub": { "consumerGroup": "[parameters('consumerGroup')]", "stream": "Custom-MyEventHubStream", "name": "myEventHubDataSource1" } } }, "destinations": { "logAnalytics": [ { "workspaceResourceId": "[parameters('workspaceResourceId')]", "name": "MyDestination" } ] }, "dataFlows": [ { "streams": [ "Custom-MyEventHubStream" ], "destinations": [ "MyDestination" ], "transformKql": "source", "outputStream": "[concat('Custom-', parameters('tableName'))]" } ] } } ] }
Na tela Implantação personalizada, especifique um grupo Assinatura e Recursos para armazenar a regra de coleta de dados e forneça valores para os parâmetros definidos no modelo, incluindo:
- Região - Região para a regra de recolha de dados. Preenchido automaticamente com base no grupo de recursos selecionado.
- Nome da Regra de Recolha de Dados - Dê um nome à regra.
- ID do recurso do espaço de trabalho - Consulte Coletar informações necessárias.
- Endpoint Resource ID - Gerado quando você cria o ponto de extremidade de coleta de dados.
- Nome da tabela - O nome da tabela de destino. Em nosso exemplo, e sempre que você usar uma tabela personalizada, o nome da tabela deve terminar com o sufixo _CL. Se você estiver ingerindo dados em uma tabela do Azure, insira o nome da tabela - por exemplo,
Syslog
- sem o sufixo. - Grupo de consumidores - Por padrão, o grupo de consumidores está definido como
$Default
. Se necessário, altere o valor para um grupo de consumidores de hub de eventos diferente.
Selecione Rever + criar e, em seguida, Criar quando rever os detalhes.
Quando a implantação estiver concluída, expanda a caixa Detalhes da implantação e selecione sua regra de coleta de dados para exibir seus detalhes. Selecione Visualização JSON.
Copie a ID do recurso para a regra de coleta de dados. Você usará essas informações na próxima etapa.
Configurar identidade gerenciada atribuída pelo usuário (opcional)
Para configurar sua regra de coleta de dados para dar suporte à identidade atribuída pelo usuário, no exemplo acima, substitua:
"identity": {
"type": "systemAssigned"
},
Por:
"identity": {
"type": "userAssigned",
"userAssignedIdentities": {
"<identity_resource_Id>": {
}
}
},
Para localizar o <identity_resource_Id>
valor, navegue até o recurso de identidade gerenciada atribuído pelo usuário no portal do Azure, selecione JSON para abrir a tela JSON de recurso e copie a ID de recurso da identidade gerenciada.
Ingerir dados de log em uma tabela do Azure (opcional)
Para ingerir dados em uma tabela do Azure com suporte:
Na regra de recolha de dados, altere
outputStream
:De:
"outputStream": "[concat('Custom-', parameters('tableName'))]"
Para:
"outputStream": "outputStream": "[concat(Microsoft-', parameters('tableName'))]"
No
transformKql
, defina uma transformação que envie os dados ingeridos para as colunas de destino na tabela do Azure de destino.
Conceder permissão ao hub de eventos para a regra de coleta de dados
Com a identidade gerenciada, você pode conceder a qualquer hub de eventos, ou namespace de Hubs de Eventos, permissão para enviar eventos para a regra de coleta de dados e o ponto de extremidade de coleta de dados que você criou. Quando você concede as permissões para o namespace Hubs de Eventos, todos os hubs de eventos dentro do namespace herdam as permissões.
No hub de eventos ou namespace de Hubs de Eventos no portal do Azure, selecione Controle de Acesso (IAM)>Adicionar atribuição de função.
Selecione Recetor de Dados dos Hubs de Eventos do Azure e selecione Avançar.
Selecione Identidade gerenciada para Atribuir acesso a e clique em Selecionar membros. Selecione Regra de coleta de dados, pesquise sua regra de coleta de dados por nome e clique em Selecionar.
Selecione Rever + atribuir e verifique os detalhes antes de guardar a sua atribuição de função.
Associar a regra de coleta de dados ao hub de eventos
A etapa final é associar a regra de coleta de dados ao hub de eventos do qual você deseja coletar eventos.
Você pode associar uma única regra de coleta de dados a vários hubs de eventos que compartilham o mesmo grupo de consumidores e ingerem dados para o mesmo fluxo. Como alternativa, você pode associar uma regra de coleta de dados exclusiva a cada hub de eventos.
Importante
Você deve associar pelo menos uma regra de coleta de dados ao hub de eventos para ingerir dados de um hub de eventos. Ao excluir todas as associações de regras de coleta de dados relacionadas ao hub de eventos, você interromperá a ingestão de dados do hub de eventos.
Para criar uma associação de regra de coleta de dados no portal do Azure:
Na caixa de pesquisa do portal do Azure, digite modelo e selecione Implantar um modelo personalizado.
Selecione Crie o seu próprio modelo no editor.
Cole o modelo do Gerenciador de Recursos abaixo no editor e selecione Salvar.
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "eventHubResourceID": { "type": "string", "metadata": { "description": "Specifies the Azure resource ID of the event hub to use." } }, "associationName": { "type": "string", "metadata": { "description": "The name of the association." } }, "dataCollectionRuleID": { "type": "string", "metadata": { "description": "The resource ID of the data collection rule." } } }, "resources": [ { "type": "Microsoft.Insights/dataCollectionRuleAssociations", "apiVersion": "2021-09-01-preview", "scope": "[parameters('eventHubResourceId')]", "name": "[parameters('associationName')]", "properties": { "description": "Association of data collection rule. Deleting this association will break the data collection for this event hub.", "dataCollectionRuleId": "[parameters('dataCollectionRuleId')]" } } ] }
Na tela Implantação personalizada, especifique um grupo Assinatura e Recursos para armazenar a associação da regra de coleta de dados e, em seguida, forneça valores para os parâmetros definidos no modelo, incluindo:
- Região - Preenchida automaticamente com base no grupo de recursos selecionado.
- ID do recurso da instância do Hub de Eventos - Consulte Coletar informações necessárias.
- Nome da associação - Dê um nome à associação.
- ID da Regra de Coleta de Dados - Gerada quando você cria a regra de coleta de dados.
Selecione Rever + criar e, em seguida, Criar quando rever os detalhes.
Verifique a sua tabela de destino para eventos ingeridos
Os Logs do Monitor do Azure ingerem todos os eventos existentes no Hub de Eventos no momento da criação do DCRA, desde que seu período de retenção não tenha expirado, e todos os novos eventos.
Para verificar a tabela de destino para eventos ingeridos:
Navegue até o espaço de trabalho e selecione Logs.
Escreva uma consulta simples no editor de consultas e selecione Executar:
<table_name>
Você deve ver os eventos do seu hub de eventos.
Clean up resources (Limpar recursos)
Neste tutorial, você criou os seguintes recursos:
- Tabela personalizada
- Ponto final de recolha de dados
- Regra de recolha de dados
- Associação de regras de coleta de dados
Avalie se você ainda precisa desses recursos. Exclua os recursos de que não precisa individualmente ou exclua todos esses recursos de uma só vez excluindo o grupo de recursos. Os recursos que você deixa funcionando podem custar dinheiro.
Para parar de ingerir dados do hub de eventos, exclua todas as associações de regras de coleta de dados relacionadas ao hub de eventos ou exclua as próprias regras de coleta de dados. Essas ações também redefinem o ponto de verificação do hub de eventos.
Problemas e limitações conhecidos
- Se você transferir uma assinatura entre diretórios do Microsoft Entra, precisará seguir as etapas descritas em Problemas conhecidos com identidades gerenciadas para que os recursos do Azure continuem ingerindo dados.
- Você pode ingerir mensagens de até 64 KB dos Hubs de Eventos para os Logs do Azure Monitor.
Próximos passos
Saiba mais sobre:
- Crie uma tabela personalizada.
- Crie um ponto de extremidade de coleta de dados.
- Atualizar uma regra de coleta de dados existente.