Como registrar eventos em log para Hubs de Eventos do Azure no Gerenciamento de API do Azure
APLICA-SE A: todas as camadas do Gerenciamento de API
Este artigo descreve como registrar eventos de Gerenciamento de API usando os Hubs de Eventos do Azure.
Hub de Eventos do Azure é um serviço de entrada de dados altamente escalonável que pode incluir milhões de eventos por segundo, para que você possa processar e analisar grandes quantidades de dados produzidos por seus aplicativos e dispositivos conectados. Hub de Eventos age como a "porta de entrada” para um pipeline de eventos e depois que os dados são coletados em um hub de eventos, ele pode ser transformado e armazenado usando qualquer provedor de análise em tempo real ou adaptadores de envio em lote/armazenamento. Hub de Eventos separa a produção de um fluxo de eventos do consumo desses eventos, para que os consumidores de eventos possam acessar os eventos em seu próprio cronograma.
Pré-requisitos
- Uma instância do Serviço de Gerenciamento de API. Se você não tiver uma, confira Criar uma instância de serviço de Gerenciamento de API.
- Um namespace de Hubs de Eventos do Azure e um hub de eventos. Para obter mais detalhes, consulte Criar um namespace de Hubs de Eventos e um hub de eventos usando o portal do Azure.
Observação
O recurso Hubs de Eventos pode estar em uma assinatura diferente ou até mesmo em um locatário diferente do recurso de Gerenciamento de API
Conceder acesso para o hub de eventos
Para registrar eventos no hub de eventos, você precisa configurar credenciais para acesso do Gerenciamento de API. O gerenciamento de API dá suporte a um dos dois seguintes mecanismos de acesso:
- Uma cadeia de conexão dos Hubs de Eventos
- Uma identidade gerenciada para sua instância de Gerenciamento de API.
Opção 1: Configurar a cadeia de conexão dos Hubs de Eventos
Para obter mais informações sobre a cadeia de conexão dos Hubs de Eventos, consulte Obter uma cadeia de conexão dos Hubs de Eventos.
- Você pode usar uma cadeia de conexão para o namespace dos Hubs de Eventos ou para o hub de eventos específico que você usa para fazer logon do Gerenciamento de API.
- A política de acesso compartilhado da cadeia de conexão deve habilitar pelo menos as permissões Enviar.
Opção 2: Configurar a identidade gerenciada do Gerenciamento de API
Observação
O uso de uma identidade gerenciada do Gerenciamento de API para registrar eventos em log em um hub de eventos tem suporte no Gerenciamento de API da versão 2022-04-01-preview
ou posterior da API REST.
Habilite uma identidade gerenciada atribuída pelo sistema ou pelo usuário para Gerenciamento de API em sua instância do API Management.
- Se você habilitar uma identidade gerenciada atribuída ao usuário, anote a ID do Cliente da identidade.
Atribua a identidade à função de Remetente de dados do Hubs de Eventos do Azure, com escopo para o namespace dos Hubs de Eventos ou para o hub de eventos usado para registro em log. Para atribuir a função, use o portal do Azure ou outras ferramentas do Azure.
Criar um agente de Gerenciamento de API
A próxima etapa será configurar um agente no seu serviço de Gerenciamento de API para que ele possa registrar eventos em log para o Hub de Eventos.
Crie e gerencie agentes de Gerenciamento de API usando a API REST de Gerenciamento de API diretamente ou usando ferramentas, incluindo o Azure PowerShell, um modelo Bicep ou um modelo de Gerenciamento de Recursos do Azure.
Agente com credenciais de cadeia de conexão
Para obter os pré-requisitos, consulte Configurar a cadeia de conexão dos Hubs de Eventos.
O exemplo a seguir usa o cmdlet New-AzApiManagementLogger para criar um agente para um hub de eventos configurando uma cadeia de conexão.
# API Management service-specific details
$apimServiceName = "apim-hello-world"
$resourceGroupName = "myResourceGroup"
# Create logger
$context = New-AzApiManagementContext -ResourceGroupName $resourceGroupName -ServiceName $apimServiceName
New-AzApiManagementLogger -Context $context -LoggerId "ContosoLogger1" -Name "ApimEventHub" -ConnectionString "Endpoint=sb://<EventHubsNamespace>.servicebus.windows.net/;SharedAccessKeyName=<KeyName>;SharedAccessKey=<key>" -Description "Event hub logger with connection string"
Agente com credenciais de identidade gerenciada atribuídas pelo sistema
Para obter os pré-requisitos, consulte Configurar identidade gerenciada de Gerenciamento de API .
Use a API REST de Gerenciamento de API ou um modelo Bicep ou ARM para configurar um agente para um hub de eventos com credenciais de identidade gerenciada atribuídas pelo sistema.
{
"properties": {
"loggerType": "azureEventHub",
"description": "adding a new logger with system assigned managed identity",
"credentials": {
"endpointAddress":"<EventHubsNamespace>.servicebus.windows.net",
"identityClientId":"SystemAssigned",
"name":"<EventHubName>"
}
}
}
Agente com credenciais de identidade gerenciada atribuídas pelo usuário
Para obter os pré-requisitos, consulte Configurar identidade gerenciada de Gerenciamento de API .
Use a API REST de Gerenciamento de API ou um modelo Bicep ou ARM para configurar um agente para um hub de eventos com credenciais de identidade gerenciada atribuídas pelo usuário.
{
"properties": {
"loggerType": "azureEventHub",
"description": "adding a new logger with user-assigned managed identity",
"credentials": {
"endpointAddress":"<EventHubsNamespace>.servicebus.windows.net",
"identityClientId":"<ClientID>",
"name":"<EventHubName>"
}
}
}
Configurar a política de log para eventhub
Depois que o agente de log estiver configurado no Gerenciamento de API, você poderá configurar suas políticas log ao hub de eventos para registrar os eventos desejados em log. Por exemplo, use a política log-to-eventhub
na seção de política de entrada para registrar solicitações ou na seção de política de saída para registrar respostas.
Navegue até instância de Gerenciamento de API.
Selecione APIs, e depois selecione a API para a qual você deseja adicionar a política. Neste exemplo, estamos adicionando uma política para a API Echo API no produto Unlimited.
Selecione Todas as operações.
Na parte superior da tela, selecione a guia Design.
Na janela Processamento de entrada ou Processamento de saída, selecione o ícone
</>
(editor de código). Para obter mais informações, consulte Como definir ou editar políticas.Posicione o cursor na seção da política
inbound
ououtbound
.Na janela à direita, selecione Políticas avançadas>Log EventHub. Isso insere o modelo de instrução da política
log-to-eventhub
.<log-to-eventhub logger-id="logger-id"> @{ return new JObject( new JProperty("EventTime", DateTime.UtcNow.ToString()), new JProperty("ServiceName", context.Deployment.ServiceName), new JProperty("RequestId", context.RequestId), new JProperty("RequestIp", context.Request.IpAddress), new JProperty("OperationName", context.Operation.Name) ).ToString(); } </log-to-eventhub>
- Substitua
logger-id
pelo nome do agente que você criou na etapa anterior. - Você pode usar qualquer expressão que retorne uma cadeia de caracteres como o valor do elemento
log-to-eventhub
. Neste exemplo, uma cadeia de caracteres no formato JSON que contém a data e a hora, o nome do serviço, a ID da solicitação, endereço IP da solicitação e o nome da operação é registrada.
- Substitua
Selecione Salvar para salvar a configuração da política atualizada. Assim que for salva, a política estará ativa e os eventos serão registrados em log para o hub de eventos designado.
Observação
O tamanho máximo de mensagem com suporte que pode ser enviado a um hub de eventos dessa política do Gerenciamento de API é de 200 KB (quilobytes). Se uma mensagem enviada para um hub de eventos for maior que 200 KB, ela será truncada automaticamente e a mensagem truncada será transferida para os hub de eventos. Para mensagens maiores, considere usar o Armazenamento do Microsoft Azure com o Gerenciamento de API do Azure como uma solução alternativa para ignorar o limite de 200 KB. Mais detalhes podem ser encontrados neste artigo.
Visualizar o log nos Hubs de Eventos usando o Azure Stream Analytics
Você pode visualizar o log nos Hubs de Eventos usando consultas do Azure Stream Analytics.
- No portal do Azure, navegue até o hub de eventos para o qual o agente envia eventos.
- Em Recursos, selecione a guia Processar dados.
- No cartão Habilitar percepções em tempo real do evento, selecione Iniciar.
- Você deve ser capaz de visualizar o log na guia Visualização de entrada. Se os dados mostrados não estiverem atuais, selecione Atualizar para ver os eventos mais recentes.
Próximas etapas
- Saiba mais sobre Hubs de Eventos do Azure
- Saiba mais sobre a integração do Gerenciamento de API e Hubs de eventos
- Referência de entidade do agente
- referência de política log ao hub de eventos
- Saiba mais sobre a integração com o Azure Application Insights