Monitorar dados do Azure Managed Redis (versão prévia) 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 Azure Managed Redis (versão prévia), estão disponíveis duas opções de log:
- 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.
Métricas de cache
O Azure Managed Redis (versão prévia) emite várias métricas, como, por exemplo, Carga do Servidor e Conexões por Segundo, que são úteis para registrar em log. 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 Azure Managed Redis usa as configurações de diagnóstico do Azure para registrar informações sobre conexões de clientes no 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.
O Azure Managed Redis utiliza a funcionalidade auditar eventos de conexão integrada à pilha 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.
Importante
O registro em log no Azure Managed Redis foca 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
- 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.
- Como os logs de conexão no Azure Managed Redis são baseados em eventos, tenha atenção às 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.
- Habilitar logs de conexão poderá causar uma pequena degradação de desempenho na instância do Redis.
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 Azure Managed Redis e enviar logs de recursos para os destinos a seguir:
- 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. A cobrança é feita pelo Azure Monitor, não pelo Azure Managed 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
Entre no portal do Azure.
Navegue até sua conta do Azure Managed Redis. Abra o painel Configurações de Diagnóstico: Auditoria na seção Monitoramento à esquerda. Em seguida, selecione Adicionar configuração de diagnóstico.
No painel Configurações de Diagnóstico: Auditoria, selecione eventos de Conexão em Categorias.
Para obter mais detalhes sobre os dados registrados, confira a seção Conteúdo dos Logs de Conexão abaixo.
Após selecionar eventos de Conexão, envie seus logs para o destino de sua preferência. Selecione as informações no painel de trabalho.
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/RedisEnterprise/{CACHE_NAME}/databases/default |
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/myteststorage",
"eventHubAuthorizationRuleID": "/subscriptions/1a66ce04-b633-4a0b-b2bc-a912ec8986a6/resourceGroups/montest/providers/microsoft.eventhub/namespaces/mynamespace/authorizationrules/myrule",
"eventHubName": "myeventhub",
"marketplacePartnerId": "/subscriptions/abcdeabc-1234-1234-ab12-123a1234567a/resourceGroups/test-rg/providers/Microsoft.Datadog/monitors/mydatadog",
"workspaceId": "/subscriptions/4b9e8510-67ab-4e9a-95a9-e2f1e570ea9c/resourceGroups/insights integration/providers/Microsoft.OperationalInsights/workspaces/myworkspace",
"logs": [
{
"category": "ConnectionEvents",
"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/redisenterprise/{cacheName}/databases/default
--name {logName}
--logs '[{"category": "ConnectionEvents","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}/providers/Microsoft.Datadog/monitors/mydatadog
Conteúdo dos Logs de Conexão
Esses campos e essas propriedades aparecem na categoria de log ConnectionEvents
. No Azure Monitor, os logs são coletados na tabela REDConnectionEvents
, 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 |
O carimbo de data/hora (UTC) de quando o log de eventos foi capturado. |
location |
Location |
O local (região) onde a instância do Azure Managed Redis foi acessada. |
category |
N/D | Categorias de log disponíveis: ConnectionEvents . |
resourceId |
_ResourceId |
O recurso do Azure Managed 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. |
eventEpochTime |
EventEpochTime |
O carimbo de data/hora UNIX (número de segundos desde 1º de janeiro de 1970) de quando o evento ocorreu em UTC. O carimbo de data/hora pode ser convertido para o formato datetime usando a função unixtime_seconds_todatetime no workspace do Log Analytics. |
clientIP |
ClientIP |
O endereço IP do cliente Redis. Se estiver usando o armazenamento do Azure, o endereço IP será IPv4 ou formato IPv6 de link privado dependendo do tipo de cache. Se estiver usando o Log Analytics, o resultado estará sempre em IPv4, já que um campo em IPv6 separado é fornecido. |
N/D | PrivateLinkIPv6 |
O endereço em IPv6 do link privado do cliente do Redis (emitido somente se estiver usando tanto o Link Privado quanto o Log Analytics). |
id |
ConnectionId |
ID de conexão única atribuída pelo Redis. |
eventType |
EventType |
Tipo de evento de conexão (new_conn, auth ou close_conn). |
eventStatus |
EventStatus |
Resultados de uma solicitação de autenticação como um código de status (aplicável somente a eventos de autenticação). |
Observação
Se o link privado for usado, somente um endereço IPv6 será registrado em log (a menos que você esteja transmitindo os dados para o Log Analytics). Você pode converter o endereço IPv6 para o endereço IPv4 equivalente observando os últimos quatro bytes de dados no endereço IPv6. Por exemplo, no endereço IPv6 do link privado "fd40:8913:31:6810:6c31:200:a01:104", os últimos quatro bytes no sistema hexadecimal são "0a", "01", "01" e "04". (observe que os zeros à esquerda são omitidos após cada dois-pontos). Correspondem a "10", "1", "1" e "4" no sistema decimal, fornecendo o endereço IPv4 "10.1.1.4".
Log da conta de armazenamento de exemplo
Se você enviar seus logs para uma conta de armazenamento, um log de um evento de conexão será mais ou menos assim:
{
"time": "2023-01-24T10:00:02.3680050Z",
"resourceId": "/SUBSCRIPTIONS/4A1C78C6-5CB1-422C-A34E-0DF7FCB9BD0B/RESOURCEGROUPS/TEST/PROVIDERS/MICROSOFT.CACHE/REDISENTERPRISE/AUDITING-SHOEBOX/DATABASES/DEFAULT",
"category": "ConnectionEvents",
"location": "westus",
"operationName": "Microsoft.Cache/redisEnterprise/databases/ConnectionEvents/Read",
"properties": {
"eventEpochTime": 1674554402,
"id": 6185063009002,
"clientIP": "20.228.16.39",
"eventType": "new_conn"
}
}
O log de um evento de autenticação será mais ou menos assim:
{
"time": "2023-01-24T10:00:02.3680050Z",
"resourceId": "/SUBSCRIPTIONS/4A1C78C6-5CB1-422C-A34E-0DF7FCB9BD0B/RESOURCEGROUPS/TEST/PROVIDERS/MICROSOFT.CACHE/REDISENTERPRISE/AUDITING-SHOEBOX/DATABASES/DEFAULT",
"category": "ConnectionEvents",
"location": "westus",
"operationName": "Microsoft.Cache/redisEnterprise/databases/ConnectionEvents/Read",
"properties": {
"eventEpochTime": 1674554402,
"id": 6185063009002,
"clientIP": "20.228.16.39",
"eventType": "auth",
"eventStatus": 8
}
}
E o log de um evento de desconexão será mais ou menos assim:
{
"time": "2023-01-24T10:00:03.3680050Z",
"resourceId": "/SUBSCRIPTIONS/4A1C78C6-5CB1-422C-A34E-0DF7FCB9BD0B/RESOURCEGROUPS/TEST/PROVIDERS/MICROSOFT.CACHE/REDISENTERPRISE/AUDITING-SHOEBOX/DATABASES/DEFAULT",
"category": "ConnectionEvents",
"location": "westus",
"operationName": "Microsoft.Cache/redisEnterprise/databases/ConnectionEvents/Read",
"properties": {
"eventEpochTime": 1674554402,
"id": 6185063009002,
"clientIP": "20.228.16.39",
"eventType": "close_conn"
}
}
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.