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 custos do Azure Monitor podem variar significativamente com base no volume de dados que está sendo coletado em seu espaço de trabalho do Log Analytics. Esse volume é afetado pelo conjunto de soluções que usam o espaço de trabalho e pela quantidade de dados que cada solução coleta.
Este artigo fornece orientação sobre como analisar os dados coletados para ajudar a controlar os custos de ingestão de dados. Ajuda-te a:
- Determine a causa do uso maior do que o esperado.
- Preveja seus custos à medida que monitora mais recursos e configura diferentes recursos do Azure Monitor.
Gorjeta
Para obter estratégias para reduzir os custos do Azure Monitor, consulte Otimização de custos e Azure Monitor.
Causas para uso acima do esperado
Cada espaço de trabalho do Log Analytics é cobrado como um serviço separado e contribui para a fatura da sua subscrição do Azure. A quantidade de ingestão de dados pode ser considerável, dependendo de:
- Conjunto de insights e serviços (por exemplo, Application Insights, Container Insights, VM Insights) habilitados e sua configuração.
- Número e tipo de recursos monitorados.
- Volume de dados recolhidos a partir de cada recurso monitorizado.
Um aumento inesperado em qualquer um desses fatores pode resultar em maiores encargos pela retenção de dados. O restante deste artigo fornece métodos para detetar tal situação e, em seguida, analisar os dados coletados para identificar e mitigar a fonte do aumento do uso.
Enviar alerta quando a coleta de dados for alta
Para evitar contas inesperadas, deverá ser avisado de forma proativa sempre que tiver uma utilização excessiva. A notificação permite-lhe resolver quaisquer anomalias potenciais antes do final do seu período de faturação.
O exemplo a seguir é uma regra de alerta de pesquisa de logs que envia um alerta se o volume de dados faturáveis ingerido nas últimas 24 horas for superior a 50 GB. Modifique a definição de Alert Logic para usar um limite diferente com base no uso esperado no ambiente. Você também pode aumentar a frequência para verificar o uso várias vezes todos os dias, mas essa opção resultará em uma cobrança mais alta para a regra de alerta.
Configuração | Valor |
---|---|
Âmbito de aplicação | |
Âmbito de aplicação | Selecione a sua área de trabalho do Log Analytics. |
Condição | |
Pergunta | Usage \| where IsBillable \| summarize DataGB = sum(Quantity / 1000) |
Medida | Medida: DataGB Tipo de agregação: Total Granularidade de agregação: 1 dia |
Lógica de alerta | Operador: Maior que Valor limite: 50 Frequência da avaliação: 1 dia |
Ações | Selecione ou adicione um grupo de ações para notificá-lo quando o limite for excedido. |
Detalhes | |
Gravidade | Aviso |
Nome da regra de alerta | Volume de dados faturável superior a 50 GB em 24 horas. |
Análise de uso no Azure Monitor
Inicie sua análise com as ferramentas existentes no Azure Monitor. Essas ferramentas não exigem configuração e, muitas vezes, podem fornecer as informações de que você precisa com o mínimo de esforço. Se você precisar de uma análise mais profunda dos dados coletados do que os recursos existentes do Azure Monitor, use qualquer uma das seguintes consultas de log no Log Analytics.
Informações da Área de Trabalho do Log Analytics
O Log Analytics Workspace Insights fornece uma compreensão rápida dos dados em seu espaço de trabalho. Por exemplo, você pode determinar:
- Tabelas de dados que estão ingestindo o maior volume de dados da tabela principal.
- Principais recursos que contribuem com dados.
- Tendência de ingestão de dados.
Consulte a guia Uso para obter um detalhamento da ingestão por solução e tabela. Essas informações podem ajudá-lo a identificar rapidamente as tabelas que contribuem para a maior parte do volume de dados. A guia também mostra a tendência da coleta de dados ao longo do tempo. Você pode determinar se a coleta de dados aumentou constantemente ao longo do tempo ou aumentou repentinamente em resposta a uma alteração de configuração.
Selecione Consultas adicionais para consultas pré-criadas que ajudam a entender melhor seus padrões de dados.
Utilização e custos estimados
O gráfico Ingestão de dados por solução na página Uso e custos estimados para cada espaço de trabalho mostra o volume total de dados enviados e quanto está sendo enviado por cada solução nos 31 dias anteriores. Essas informações ajudam a determinar tendências, como se algum aumento é decorrente do uso geral de dados ou do uso por uma solução específica.
Consultando volumes de dados da tabela de Utilização
Analise a quantidade de dados faturáveis coletados por um determinado serviço ou solução. Essas consultas usam a tabela Uso que coleta dados de uso para cada tabela no espaço de trabalho.
Nota
A cláusula com TimeGenerated
é apenas para garantir que a experiência de consulta no portal do Azure olhe para trás além das 24 horas padrão. Quando utiliza o tipo de dados Uso, StartTime
e EndTime
representam os intervalos de tempo para os quais os resultados são apresentados.
Volume de dados faturáveis por tipo no último mês
Usage
| where TimeGenerated > ago(32d)
| where StartTime >= startofday(ago(31d)) and EndTime < startofday(now())
| where IsBillable == true
| summarize BillableDataGB = sum(Quantity) / 1000. by bin(StartTime, 1d), DataType
| render columnchart
Volume de dados faturáveis por solução e tipo no último mês
Usage
| where TimeGenerated > ago(32d)
| where StartTime >= startofday(ago(31d)) and EndTime < startofday(now())
| where IsBillable == true
| summarize BillableDataGB = sum(Quantity) / 1000 by Solution, DataType
| sort by Solution asc, DataType asc
Consulte Consultas para a tabela de Uso para mais exemplos de consultas.
Consultando o volume de dados dos eventos diretamente
Você pode usar consultas de log no Log Analytics se precisar de uma análise mais profunda dos dados coletados. Cada tabela em um espaço de trabalho do Log Analytics tem as seguintes colunas padrão que podem ajudá-lo a analisar dados faturáveis:
- _IsBillable identifica registos para os quais existe uma taxa de ingestão. Use esta coluna para filtrar dados não faturáveis.
- _BilledSize fornece o tamanho em bytes do registro.
Volume de dados faturável para eventos específicos
Se você achar que um determinado tipo de dados está coletando dados excessivos, convém analisar os dados nessa tabela para determinar registros específicos que estão aumentando. Este exemplo filtra IDs de evento específicas na Event
tabela e, em seguida, fornece uma contagem para cada ID. Você pode modificar essa consulta usando as colunas de outras tabelas.
Event
| where TimeGenerated > startofday(ago(31d)) and TimeGenerated < startofday(now())
| where EventID == 5145 or EventID == 5156
| where _IsBillable == true
| summarize count(), Bytes=sum(_BilledSize) by EventID, bin(TimeGenerated, 1d)
Consulte Consultas para a tabela Evento para obter mais exemplos de consultas.
Volume de dados por recurso do Azure, grupo de recursos ou assinatura
Você pode analisar a quantidade de dados faturáveis coletados de um determinado recurso ou conjunto de recursos. Essas consultas usam as colunas _ResourceId e _SubscriptionId para dados de recursos hospedados no Azure.
Aviso
Use consultas de localização com moderação porque as verificações entre tipos de dados consomem muitos recursos para serem executadas. Se você não precisar de resultados por assinatura, grupo de recursos ou nome de recurso, use a tabela Uso como nas consultas anteriores.
Volume de dados faturáveis por ID de recurso para o último dia completo
find where TimeGenerated between(startofday(ago(1d))..startofday(now())) project _ResourceId, _BilledSize, _IsBillable
| where _IsBillable == true
| summarize BillableDataBytes = sum(_BilledSize) by _ResourceId
| sort by BillableDataBytes nulls last
Volume de dados faturáveis por grupo de recursos para o último dia completo
find where TimeGenerated between(startofday(ago(1d))..startofday(now())) project _ResourceId, _BilledSize, _IsBillable
| where _IsBillable == true
| summarize BillableDataBytes = sum(_BilledSize) by _ResourceId
| extend resourceGroup = tostring(split(_ResourceId, "/")[4] )
| summarize BillableDataBytes = sum(BillableDataBytes) by resourceGroup
| sort by BillableDataBytes nulls last
Pode ser útil analisar _ResourceId
:
| parse tolower(_ResourceId) with "/subscriptions/" subscriptionId "/resourcegroups/"
resourceGroup "/providers/" provider "/" resourceType "/" resourceName
Volume de dados faturáveis por assinatura para o último dia completo
find where TimeGenerated between(startofday(ago(1d))..startofday(now())) project _BilledSize, _IsBillable, _SubscriptionId
| where _IsBillable == true
| summarize BillableDataBytes = sum(_BilledSize) by _SubscriptionId
| sort by BillableDataBytes nulls last
Gorjeta
Para espaços de trabalho com grandes volumes de dados, fazer consultas como as mostradas nesta seção, que consultam grandes volumes de dados brutos, pode precisar ser restrito a um único dia. Para acompanhar as tendências ao longo do tempo, considere configurar um relatório do Power BI e usar a atualização incremental para coletar volumes de dados por recurso uma vez por dia.
Volume de dados por computador
Você pode analisar a quantidade de dados faturáveis coletados de uma máquina virtual ou de um conjunto de máquinas virtuais. A tabela Uso não tem a granularidade necessária para mostrar volumes de dados para máquinas virtuais específicas, portanto, essas consultas usam o operador find para pesquisar todas as tabelas que incluem um nome de computador. O tipo Uso é omitido porque essa consulta é apenas para análise de tendências de dados.
Aviso
Use consultas de localização com moderação porque as verificações entre tipos de dados consomem muitos recursos para serem executadas. Se você não precisar de resultados por assinatura, grupo de recursos ou nome de recurso, use a tabela Uso como nas consultas anteriores.
Volume de dados facturável de cada computador do último dia completo
find where TimeGenerated between(startofday(ago(1d))..startofday(now())) project _BilledSize, _IsBillable, Computer, Type
| where _IsBillable == true and Type != "Usage"
| extend computerName = tolower(tostring(split(Computer, '.')[0]))
| summarize BillableDataBytes = sum(_BilledSize) by computerName
| sort by BillableDataBytes desc nulls last
Contagem de eventos faturáveis por computador para o último dia completo
find where TimeGenerated between(startofday(ago(1d))..startofday(now())) project _IsBillable, Computer, Type
| where _IsBillable == true and Type != "Usage"
| extend computerName = tolower(tostring(split(Computer, '.')[0]))
| summarize eventCount = count() by computerName
| sort by eventCount desc nulls last
Consultando tipos de dados comuns
Se você achar que tem dados faturáveis excessivos para um tipo de dados específico, talvez seja necessário executar uma consulta para analisar os dados nessa tabela. As consultas a seguir fornecem exemplos para alguns tipos de dados comuns:
Solução de Segurança
SecurityEvent
| summarize AggregatedValue = count() by EventID
| order by AggregatedValue desc nulls last
Consulte Consultas para a tabela SecurityEvent para obter mais exemplos de consultas.
Solução de Gestão de Registos
Usage
| where Solution == "LogManagement" and iff(isnotnull(toint(IsBillable)), IsBillable == true, IsBillable == "true") == true
| summarize AggregatedValue = count() by DataType
| order by AggregatedValue desc nulls last
Consulte Consultas para a tabela de Uso para mais exemplos de consultas.
Tipo de dados de Desempenho
Perf
| summarize AggregatedValue = count() by CounterPath
Perf
| summarize AggregatedValue = count() by CounterName
Consulte Consultas para a tabela Perf para obter mais exemplos de consultas.
Tipo de dados de Evento
Event
| summarize AggregatedValue = count() by EventID
Event
| summarize AggregatedValue = count() by EventLog, EventLevelName
Consulte Consultas para a tabela Evento para obter mais exemplos de consultas.
Tipo de dados de Syslog
Syslog
| summarize AggregatedValue = count() by Facility, SeverityLevel
Syslog
| summarize AggregatedValue = count() by ProcessName
Consulte Consultas para a tabela Syslog para obter mais exemplos de consultas.
Tipo de dados de AzureDiagnostics
AzureDiagnostics
| summarize AggregatedValue = count() by ResourceProvider, ResourceId
Consulte Consultas para a tabela AzureDiagnostics para obter mais consultas de exemplo.
Dados do Application Insights
Há duas abordagens para investigar a quantidade de dados coletados para o Application Insights, dependendo se você tem um aplicativo clássico ou baseado em espaço de trabalho. Use a propriedade _BilledSize
que está disponível em cada evento ingerido para recursos baseados em espaço de trabalho e clássicos. Você também pode usar informações agregadas na tabela systemEvents para recursos clássicos.
Nota
As consultas em tabelas do Application Insights, exceto SystemEvents
, funcionam tanto para recursos baseados em área de trabalho como para os clássicos do Application Insights.
A compatibilidade com versões anteriores permite que você continue a usar nomes de tabelas herdadas. Para um recurso baseado em espaço de trabalho, abra Logs no menu do espaço de trabalho do Log Analytics. Para obter um recurso clássico, abra Logs no menu Application Insights .
As operações de dependência geram o maior volume de dados nos últimos 30 dias (baseado em espaço de trabalho ou clássico)
dependencies
| where timestamp >= startofday(ago(30d))
| summarize sum(_BilledSize) by operation_Name
| render barchart
Volume de dados diário por tipo para este recurso do Application Insights nos últimos 7 dias (somente clássico)
systemEvents
| where timestamp >= startofday(ago(7d)) and timestamp < startofday(now())
| where type == "Billing"
| extend BillingTelemetryType = tostring(dimensions["BillingTelemetryType"])
| extend BillingTelemetrySizeInBytes = todouble(measurements["BillingTelemetrySize"])
| summarize sum(BillingTelemetrySizeInBytes) by BillingTelemetryType, bin(timestamp, 1d)
Tendências de volume de dados para recursos baseados em ambiente de trabalho
Para examinar as tendências de volume de dados para recursos do Application Insights baseados em espaço de trabalho, use uma consulta que inclua todas as tabelas do Application Insights. As consultas a seguir usam os nomes de tabelas específicos para recursos baseados em espaço de trabalho.
Volume de dados diário por tipo para todos os recursos do Application Insights em um espaço de trabalho por 7 dias
union AppAvailabilityResults,
AppBrowserTimings,
AppDependencies,
AppExceptions,
AppEvents,
AppMetrics,
AppPageViews,
AppPerformanceCounters,
AppRequests,
AppSystemEvents,
AppTraces
| where TimeGenerated >= startofday(ago(7d)) and TimeGenerated < startofday(now())
| summarize sum(_BilledSize) by _ResourceId, bin(TimeGenerated, 1d)
Para examinar as tendências de volume de dados para apenas um único recurso do Application Insights, adicione a seguinte linha antes summarize
na consulta anterior:
| where _ResourceId contains "<myAppInsightsResourceName>"
Gorjeta
Para espaços de trabalho com grandes volumes de dados, fazer consultas como a anterior, que consulta grandes volumes de dados brutos, pode precisar ser restrito a um único dia. Para acompanhar as tendências ao longo do tempo, considere configurar um relatório do Power BI e usar a atualização incremental para coletar volumes de dados por recurso uma vez por dia.
Compreender os nós que enviam dados
Se você não tiver dados excessivos de nenhuma fonte específica, poderá ter um número excessivo de agentes que estão enviando dados.
Contagem de nós de agente que estão enviando uma pulsação a cada dia no último mês
Heartbeat
| where TimeGenerated > startofday(ago(31d))
| summarize nodes = dcount(Computer) by bin(TimeGenerated, 1d)
| render timechart
Consulte Consultas para a tabela Heartbeat para obter mais exemplos de consultas.
Aviso
Use consultas de localização com moderação porque as verificações entre tipos de dados consomem muitos recursos para serem executadas. Se você não precisar de resultados por assinatura, grupo de recursos ou nome de recurso, use a tabela Uso como nas consultas anteriores.
Contagem de nós que enviam quaisquer dados nas últimas 24 horas
find where TimeGenerated > ago(24h) project Computer
| extend computerName = tolower(tostring(split(Computer, '.')[0]))
| where computerName != ""
| summarize nodes = dcount(computerName)
Volume de dados enviados por cada nó nas últimas 24 horas
find where TimeGenerated > ago(24h) project _BilledSize, Computer
| extend computerName = tolower(tostring(split(Computer, '.')[0]))
| where computerName != ""
| summarize TotalVolumeBytes=sum(_BilledSize) by computerName
Nodos faturados pelo plano de preços herdado por unidade
O antiga camada de preços por nó fatura por nó com granularidade horária. Ela também não conta os nós que estão apenas enviando um conjunto de tipos de dados de segurança. Para conseguir uma lista de computadores que serão cobrados como nós, caso o espaço de trabalho esteja na camada de preços herdada Por Nó, procure nós que estão a enviar tipos de dados faturados, uma vez que alguns tipos de dados são gratuitos. Nesse caso, use o campo mais à esquerda do nome de domínio totalmente qualificado.
As consultas seguintes retornam a contagem de computadores cuja utilização de dados é faturada por hora. O número de unidades na sua fatura está em unidades de meses de nó, que é representado por billableNodeMonthsPerDay
na consulta. Se o espaço de trabalho tiver a solução Update Management instalada, adicione os tipos de dados Update e UpdateSummary à lista na where
cláusula.
find where TimeGenerated >= startofday(ago(7d)) and TimeGenerated < startofday(now()) project Computer, _IsBillable, Type, TimeGenerated
| where Type !in ("SecurityAlert", "SecurityBaseline", "SecurityBaselineSummary", "SecurityDetection", "SecurityEvent", "WindowsFirewall", "MaliciousIPCommunication", "LinuxAuditLog", "SysmonEvent", "ProtectionStatus", "WindowsEvent")
| extend computerName = tolower(tostring(split(Computer, '.')[0]))
| where computerName != ""
| where _IsBillable == true
| summarize billableNodesPerHour=dcount(computerName) by bin(TimeGenerated, 1h)
| summarize billableNodesPerDay = sum(billableNodesPerHour)/24., billableNodeMonthsPerDay = sum(billableNodesPerHour)/24./31. by day=bin(TimeGenerated, 1d)
| sort by day asc
Nota
Alguma complexidade no algoritmo de faturamento real quando a segmentação de solução é usada não é representada na consulta anterior.
Dados que chegam atrasados
Se você observar alta ingestão de dados relatada usando Usage
registros, mas não observar os mesmos resultados somando _BilledSize
diretamente no tipo de dados, é possível que você tenha dados que chegam tarde. Esta situação ocorre quando dados são ingeridos com timestamps antigos.
Por exemplo, um agente pode ter um problema de conectividade e enviar dados acumulados quando se reconecta. Ou um anfitrião pode ter uma hora incorreta. Qualquer dos exemplos pode resultar numa discrepância aparente entre os dados ingeridos relatados pelo tipo de dados Usage e uma consulta que soma _BilledSize sobre os dados brutos para um dia específico determinado por TimeGenerated, o carimbo de data/hora em que o evento foi gerado.
Para diagnosticar problemas de dados que chegam tardiamente, use a coluna _TimeReceived e a coluna TimeGerated . A _TimeReceived
propriedade é a hora em que o registro foi recebido pelo ponto de ingestão do Azure Monitor na nuvem do Azure.
O exemplo a seguir é em resposta a altos volumes de dados ingeridos do W3CIISLog em 2 de maio de 2021, para identificar os carimbos de data/hora nesses dados ingeridos. A instrução where TimeGenerated > datetime(1970-01-01)
é incluída para fornecer a indicação para a interface do Log Analytics examinar todos os dados.
W3CIISLog
| where TimeGenerated > datetime(1970-01-01)
| where _TimeReceived >= datetime(2021-05-02) and _TimeReceived < datetime(2021-05-03)
| where _IsBillable == true
| summarize BillableDataMB = sum(_BilledSize)/1.E6 by bin(TimeGenerated, 1d)
| sort by TimeGenerated asc
Próximos passos
- Consulte detalhes de preços dos Logs do Azure Monitor para obter informações sobre como as cobranças são calculadas para dados em uma área de trabalho do Log Analytics e as diferentes opções de configuração para reduzir os seus custos.
- Consulte Custo e uso do Azure Monitor para obter uma descrição dos diferentes tipos de cobranças do Azure Monitor e como analisá-los em sua fatura do Azure.
- Consulte Práticas recomendadas do Azure Monitor - Gerenciamento de custos para obter as práticas recomendadas sobre como configurar e gerenciar o Azure Monitor para minimizar suas cobranças.
- Consulte Transformações de coleta de dados no Azure Monitor (visualização) para obter informações sobre como usar transformações para reduzir a quantidade de dados coletados em um espaço de trabalho do Log Analytics filtrando registros e colunas indesejados.