Monitorar os dados do Cache do Azure para Redis usando configurações de diagnóstico

As configurações de diagnóstico no Azure são usadas para coletar logs de recursos. Um recurso do Azure emite logs do recurso e fornece dados avançados e frequentes sobre a operação do recurso em questão. Esses logs são capturados por solicitação e chamados de “logs do plano de dados”. Confira o artigo Configurações de diagnóstico no Azure Monitor para obter uma visão geral recomendada da funcionalidade no Azure. O conteúdo desses logs varia de acordo com o tipo de recurso. No Cache do Azure para Redis, duas opções de log estão disponíveis:

  • Métricas de cache (ou seja, "AllMetrics") usadas para registrar métricas do Azure Monitor
  • Os Logs de Conexão registram conexões com o cache para fins de segurança e diagnóstico.

Escopo de disponibilidade

Camada Básico, Standard e Premium Enterprise e Enterprise Flash
Métricas de cache Sim Sim
Logs de Conexão Sim Yes

Métricas de cache

O Cache do Azure para Redis emite várias métricas, como, por exemplo, Carga do Servidor e Conexões por Segundo, cujo registro é útil. Selecionar a opção AllMetrics permite que essas e outras métricas de cache sejam registradas em log. Você pode configurar por quanto tempo as métricas são retidas. Confira aqui um exemplo de exportação de métricas de cache para uma conta de armazenamento.

Logs de Conexão

O Cache do Azure para Redis usa as configurações de diagnóstico do Azure para registrar informações sobre as conexões de clientes com seu cache. O registro em log e a análise dessa configuração de diagnóstico ajudam você a entender quem está se conectando aos seus caches e o carimbo de data/hora dessas conexões. Esses dados de log podem ser usados para identificar o escopo de uma violação de segurança e para fins de auditoria de segurança.

Diferenças entre os níveis do Cache do Azure para Redis

A implementação de logs de conexão difere ligeiramente entre os níveis:

  • Os níveis de cache Básico, Standard e Premium pesquisam as conexões de clientes por endereço IP, incluindo o número de conexões originadas de cada endereço IP único. Esses logs não são cumulativos. Elas representam instantâneos pontuais feitos em intervalos de 10 segundos. Os eventos de autenticação (bem-sucedidos e com falha) e os eventos de desconexão não são registrados nesses níveis.
  • Os níveis de cache Enterprise e Enterprise Flash usam a funcionalidade auditoria dos eventos de conexão integrada no Redis Enterprise. Os logs de auditoria dos eventos de conexão permitem que todas as conexões, desconexões e eventos de autenticação sejam registrados, incluindo os eventos de autenticação com falha.

Os logs de conexão produzidos pelos diversos níveis são semelhantes, mas apresentam algumas diferenças. Os dois formatos são mostrados mais detalhadamente mais adiante neste artigo.

Importante

O registro de conexões em logs nos níveis Básico, Standard e Premium pesquisa as conexões de clientes atualmente no cache. Os mesmos endereços IP de clientes aparecem diversas vezes. Os logs dos níveis Enterprise e Enterprise Flash se concentram em cada evento de conexão. Os logs ocorrem somente quando o evento real ocorreu pela primeira vez.

Pré-requisitos/limitações do Registro de Conexões em Log

Níveis Básico, Standard e Premium

  • Como os logs de conexão nesses níveis consistem de instantâneos pontuais tirados a cada 10 segundos, as conexões estabelecidas e removidas dentro de intervalos de 10 segundos não são registradas.
  • Os eventos de autenticação não são registrados.
  • Todas as configurações de diagnóstico podem levar até 90 minutos para começar a fluir para o seu destino selecionado.
  • A habilitação de logs de conexão pode causar uma pequena degradação de desempenho na instância de cache.
  • Somente o plano de preços intitulado Logs de Análises tem suporte para a transmissão de logs para o Azure Log Analytics. Para saber mais, confira Preço do Azure Monitor.

Camadas Enterprise e Enterprise Flash

  • Quando você usa a Política de Clusters de OSS, os logs são emitidos por cada nó de dados. Quando você usa a Política de Clusters Enterprise, somente o nó que está sendo usado como proxy emite logs. Ambas as versões abrangem todas as conexões com o cache. A diferença é apenas de caráter arquitetônico.
  • A perda de dados (ou seja, deixar passar um evento de conexão) é uma ocorrência rara, mas possível. A perda de dados costuma ser causada por problemas de rede.
  • Os logs de desconexão ainda não estão totalmente estáveis e podem deixar passar eventos.
  • Devido ao fato de os logs de conexão nos níveis Enterprise serem baseados em eventos, tenha cuidado com suas políticas de retenção. Por exemplo, se a retenção estiver definida como 10 dias e um evento de conexão tiver ocorrido há 15 dias, essa conexão pode ainda existir, mas o log da conexão não é retido.
  • Se estiver usando uma replicação geográfica ativa, o registro em log deverá ser configurado individualmente para cada instância de cache no grupo da replicação geográfica.
  • Todas as configurações de diagnóstico podem levar até 90 minutos para começar a fluir para o seu destino selecionado.
  • A habilitação de logs de conexão poderá causar uma pequena degradação de desempenho na instância de cache.

Observação

É sempre possível usar os comandos INFO ou CLIENT LIST para verificar sob demanda quem está conectado a uma instância de cache.

Importante

Ao selecionar logs, você pode escolher uma Categoria específica ou Grupos de Categorias, que são agrupamentos de logs predefinidos nos vários serviços do Azure. Ao usar Grupos de categorias, você perde a capacidade de definir as configurações de retenção. Se precisar determinar a duração da retenção para seus logs de conexão, selecione o item na seção Categorias.

Destinos de Logs

Você pode ativar as configurações de diagnóstico para instâncias do Cache do Azure para Redis e enviar logs de recursos para os seguintes destinos:

  • Workspace do Log Analytics – Não precisa estar na mesma região do recurso que está sendo monitorado.
  • Hub de eventos - deve estar na mesma região que o do cache. No entanto, as contas de armazenamento Premium não têm suporte para constituir um destino.
  • Hub de eventos - as configurações de diagnóstico não podem acessar recursos de hubs de eventos quando as redes virtuais estão habilitadas. Habilitar Permitir que os serviços confiáveis da Microsoft ignorem este firewall? , configuração nos hubs de eventos para conceder acesso aos recursos do hub de eventos. O hub de eventos deve estar na mesma região que o do cache.
  • Solução de Parceiro: uma lista de possíveis soluções de registro em log de parceiros pode ser encontrada aqui

Para obter mais informações sobre os requisitos de diagnóstico, consulte configurações de diagnóstico.

Ao enviar logs de diagnóstico para o destino, você será cobrado pelas taxas de dados normais para a conta de armazenamento e pelo uso do hub de eventos. Você é cobrado em Azure Monitor não Cache do Azure para Redis. Ao enviar logs para o Log Analytics, você é cobrado somente pela ingestão de dados do Log Analytics.

Para obter mais informações sobre preços, confira Preços do Azure Monitor.

Habilitar o Registro de Conexões em Log usando o portal do Azure

  1. Entre no portal do Azure.

  2. Navegue até o sua conta do Cache do Azure para Redis. Abra o painel Configurações de diagnóstico na seção Monitoramento à esquerda. Em seguida, selecione Adicionar configuração de diagnóstico.

    Select diagnostics

  3. No painel Configurações de diagnóstico, selecione ConnectedClientList na guia Categorias.

    Para obter mais detalhes sobre os dados registrados, confira a seção Conteúdo dos Logs de Conexão abaixo.

  4. Após selecionar ConnectedClientList, envie seus logs para o destino de sua preferência. Selecione as informações no painel de trabalho.

    Select enable resource-specific

Habilitar o Registro de Conexões em Log usando a API REST

Use a API REST do Azure Monitor para criar uma configuração de diagnóstico por meio do console interativo. Para mais informações, consulte Criar ou atualizar.

Solicitação

PUT https://management.azure.com/{resourceUri}/providers/Microsoft.Insights/diagnosticSettings/{name}?api-version=2017-05-01-preview

Cabeçalhos

Parâmetros/Cabeçalhos Valor/Descrição
name O nome da configuração de diagnóstico.
resourceUri subscriptions/{SUBSCRIPTION_ID}/resourceGroups/{RESOURCE_GROUP}/providers/Microsoft.Cache/Redis/{CACHE_NAME}
api-version 2017-05-01-preview
Content-Type aplicativo/json

Corpo

{
    "properties": {
      "storageAccountId": "/subscriptions/df602c9c-7aa0-407d-a6fb-eb20c8bd1192/resourceGroups/apptest/providers/Microsoft.Storage/storageAccounts/appteststorage1",
      "eventHubAuthorizationRuleId": "/subscriptions/1a66ce04-b633-4a0b-b2bc-a912ec8986a6/resourceGroups/montest/providers/microsoft.eventhub/namespaces/mynamespace/eventhubs/myeventhub/authorizationrules/myrule",
      "eventHubName": "myeventhub",
      "workspaceId": "/subscriptions/4b9e8510-67ab-4e9a-95a9-e2f1e570ea9c/resourceGroups/insights-integration/providers/Microsoft.OperationalInsights/workspaces/myworkspace",
      "logs": [
        {
          "category": "ConnectedClientList",
          "enabled": true,
          "retentionPolicy": {
            "enabled": false,
            "days": 0
          }
        }
      ]
    }
}

Habilitar o Registro de Conexões em Log usando a CLI do Azure

Use o comando az monitor diagnostic-settings create para criar uma configuração de diagnóstico com a CLI do Azure. Para obter mais informações sobre as descrições de parâmetro e comando, confira Criar configurações de diagnóstico para enviar logs e métricas de plataforma para destinos diferentes. Esse exemplo mostra como usar a CLI do Azure para transmitir dados para quatro pontos de extremidade diferentes:

az monitor diagnostic-settings create 
    --resource /subscriptions/{subscriptionID}/resourceGroups/{resourceGroupname}/providers/Microsoft.Cache/Redis/{cacheName}
    --name {logName}
    --logs '[{"category": "ConnectedClientList","enabled": true,"retentionPolicy": {"enabled": false,"days": 0}}]'    
    --event-hub {eventHubName}
    --event-hub-rule /subscriptions/{subscriptionID}/resourceGroups/{resourceGroupName}/providers/microsoft.eventhub/namespaces/{eventHubNamespace}/authorizationrule/{ruleName}
    --storage-account /subscriptions/{subscriptionID}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{storageAccountName}
    --workspace /subscriptions/{subscriptionID}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{logAnalyticsWorkspaceName}
    --marketplace-partner-id/subscriptions/{subscriptionID}/resourceGroups{resourceGroupname}/proviers/Microsoft.Datadog/monitors/mydatadog

Conteúdo dos Logs de Conexão

Esses campos e essas propriedades aparecem na categoria de log ConnectedClientList. No Azure Monitor, os logs são coletados na tabela ACRConnectedClientList, sob o nome do provedor de recursos de MICROSOFT.CACHE.

Propriedade ou campo de Armazenamento do Microsoft Azure Propriedade de logs do Azure Monitor Descrição
time TimeGenerated Carimbo de data/hora de quando o log foi gerado em UTC.
location Location O local (região) em que a instância do Cache do Azure para Redis foi acessada.
category N/D Categorias de log disponíveis: ConnectedClientList.
resourceId _ResourceId O recurso do Cache do Azure para Redis para o qual os logs estão habilitados.
operationName OperationName A operação do Redis associada ao registro de log.
properties N/D O conteúdo desse campo é descrito nas linhas a seguir.
tenant CacheName O nome da instância do Cache do Azure para Redis.
roleInstance RoleInstance A instância de função que registrou a lista de clientes.
connectedClients.ip ClientIp O endereço IP do cliente Redis.
connectedClients.privateLinkIpv6 PrivateLinkIpv6 O endereço IPv6 do link privado do cliente Redis (se aplicável).
connectedClients.count ClientCount O número de conexões do cliente Redis do endereço IP associado.

Log da conta de armazenamento de exemplo

Se você enviar seus logs para uma conta de armazenamento, o conteúdo dos logs ficará assim.

{
    "time": "2021-08-05T21:04:58.0466086Z",
    "location": "canadacentral",
    "category": "ConnectedClientList",
    "properties": {
        "tenant": "mycache", 
        "connectedClients": [
            {
                "ip": "192.123.43.36", 
                "count": 86
            },
            {
                "ip": "10.1.1.4",
                "privateLinkIpv6": "fd40:8913:31:6810:6c31:200:a01:104", 
                "count": 1
            }
        ],
        "roleInstance": "1"
    },
    "resourceId": "/SUBSCRIPTIONS/E6761CE7-A7BC-442E-BBAE-950A121933B5/RESOURCEGROUPS/AZURE-CACHE/PROVIDERS/MICROSOFT.CACHE/REDIS/MYCACHE", 
    "Level": 4,
    "operationName": "Microsoft.Cache/ClientList"
}

Consultas do Log Analytics

Observação

Para obter um tutorial sobre como usar o Azure Log Analytics, confira o artigo Visão geral do Log Analytics no Azure Monitor. Lembre-se de que pode levar até 90 minutos para que os logs apareçam no Log Analtyics.

Aqui estão algumas consultas básicas para usar como modelos.

  • Conexões por hora do cliente do Cache do Azure para Redis dentro do intervalo de endereços IP especificado:
let IpRange = "10.1.1.0/24";
ACRConnectedClientList
// For particular datetime filtering, add '| where TimeGenerated between (StartTime .. EndTime)'
| where ipv4_is_in_range(ClientIp, IpRange)
| summarize ConnectionCount = sum(ClientCount) by TimeRange = bin(TimeGenerated, 1h)
  • Endereços IP de cliente do Redis exclusivos que se conectaram ao cache:
ACRConnectedClientList
| summarize count() by ClientIp

Próximas etapas

Para obter informações detalhadas sobre como criar uma configuração de diagnóstico usando o portal do Azure, a CLI ou o PowerShell, consulte o artigo Criar configuração de diagnóstico para coletar logs e métricas de plataforma no Azure.