Multilocação e Application Insights
O Application Insights é um serviço que monitora o desempenho, a disponibilidade e o uso de seus aplicativos Web. Ele pode ajudá-lo a identificar e diagnosticar problemas, analisar o comportamento do usuário e acompanhar as principais métricas. Este artigo descreve alguns dos recursos do Application Insights que são úteis para sistemas multilocatário. Também descreve vários modelos de arrendamento.
Gorjeta
O Application Insights foi projetado e otimizado para soluções de monitoramento. Ele não se destina a ser usado para capturar todos os eventos que acontecem em um sistema, como você pode precisar fazer para auditoria ou faturamento. Para saber como você pode medir o uso para fins de cobrança, consulte Considerações para medir o consumo em soluções multilocatário.
Modelos de isolamento
Ao implementar um sistema multilocatário que usa o Application Insights, você precisa determinar o nível necessário de isolamento. Existem vários modelos de isolamento que você pode escolher. Aqui estão alguns fatores que podem influenciar a sua escolha:
- Quantos inquilinos pretende ter?
- Você compartilha sua camada de aplicativo entre vários locatários ou implanta carimbos de implantação separados para cada locatário?
- Você ou seus clientes são sensíveis ao armazenamento de dados junto com os dados de outros locatários?
- A camada de aplicativo da sua solução é multilocatária e a camada de dados é locatária única?
- Os requisitos de telemetria variam entre os inquilinos?
Gorjeta
Os principais fatores que determinam o custo do Application Insights são a quantidade de dados que você envia para ele e por quanto tempo os dados são retidos. Em um aplicativo multilocatário, o custo geral é o mesmo para uma instância dedicada do Application Insights e para uma instância compartilhada. Para obter mais informações, consulte a página de preços do Azure Monitor.
Esta tabela resume as diferenças entre os principais modelos de locação do Application Insights:
Consideração | Instância do Application Insights compartilhada globalmente | Uma instância do Application Insights por região/carimbo | Uma instância do Application Insights por locatário |
---|---|---|---|
Isolamento de dados | Baixo | Baixa | Alta |
Isolamento de desempenho | Baixo | Médio | Alto |
Complexidade da implantação | Baixo a médio, dependendo do número de inquilinos | Médio, dependendo do número de inquilinos | Alto |
Complexidade operacional | Baixo | Médio | Alto |
Cenário de exemplo | Solução multilocatária grande com uma camada de aplicativo compartilhada | Solução multilocatária com implantações regionais para melhor atender a uma base global de clientes | Instâncias de aplicativos individuais por locatário |
Instância do Application Insights compartilhada globalmente
Você pode usar uma única instância do Application Insights para controlar a telemetria para locatários em um aplicativo multilocatário, conforme mostrado aqui:
Os benefícios dessa abordagem incluem configuração e gerenciamento simplificados do aplicativo, porque você só precisa instrumentar o código do aplicativo uma vez. As desvantagens dessa abordagem incluem os limites e cotas associados a uma única instância do Application Insights. Para determinar se os limites podem afetar seu aplicativo multilocatário, consulte os limites do Application Insights.
Quando você usa um recurso compartilhado do Application Insights, também pode ser mais difícil isolar e filtrar os dados de cada locatário, especialmente se você tiver um grande número de locatários. Como todos os locatários compartilham o mesmo espaço de trabalho do Log Analytics e as mesmas chaves de instrumentação, a segurança e a privacidade também podem ser uma preocupação.
Para resolver essas preocupações, talvez seja necessário implementar lógica e mecanismos para garantir que os dados possam ser filtrados pelo locatário e que sua equipe de operações possa ver corretamente os dados por locatário. Você pode implementar a filtragem adicionando uma propriedade personalizada para capturar a ID do locatário como parte de cada item de telemetria. O ID do locatário pode ser usado para consultar os dados.
Uma instância do Application Insights por carimbo
As soluções multilocatárias geralmente incluem vários selos, que podem ser implantados em diferentes regiões do Azure. Os selos permitem que você atenda locatários que são locais para uma região específica para que você possa fornecer um melhor desempenho. Um único carimbo pode servir a um único locatário ou a um subconjunto de seus locatários. Para saber mais sobre selos, consulte Padrão de carimbos de implantação.
Você pode decidir implantar uma instância do Application Insights em cada carimbo, compartilhando a instância entre todos os locatários que usam o carimbo, conforme mostrado aqui:
Essa abordagem fornece mais flexibilidade com limites de recursos porque os limites se aplicam por instância do Application Insights.
Uma instância do Application Insights por locatário
Você pode decidir usar uma instância dedicada do Application Insights para cada locatário:
Essa abordagem oferece mais flexibilidade e controle sobre os dados de telemetria dos locatários e fornece o isolamento de dados mais forte. Ao usar esse modelo, você pode definir configurações específicas do locatário e políticas de retenção.
No entanto, ao usar essa abordagem, você precisa implantar um grande número de instâncias do Application Insights, gerenciar configurações específicas do locatário em um catálogo de locatários e alterar o código do aplicativo quando novos locatários são integrados. Observe que a decisão de implantar uma instância dedicada do Application Insights por locatário é separada da decisão de implantar uma camada de aplicativo para cada locatário. Por exemplo, você pode decidir implantar uma única instância de aplicativo em um carimbo compartilhado por vários locatários, mas implantar uma instância do Application Insights para cada locatário.
Você deve considerar o uso de uma instância do Application Insights por locatário se precisar de um alto grau de isolamento de dados entre seus locatários, se precisar de configurações diferentes para vários locatários ou se os limites de serviço de uma única instância do Application Insights não atenderem às suas necessidades.
Com essa abordagem, pode ser difícil agregar dados e compará-los entre todos os locatários, porque você precisa consultar várias instâncias do Application Insights separadamente. Se você usar essa abordagem, considere usar consultas entre recursos e pastas de trabalho do Azure Monitor.
Recursos do Application Insights que suportam multilocação
Propriedades e métricas personalizadas
O Application Insights fornece uma maneira de enriquecer dados de telemetria com propriedades e métricas personalizadas. As propriedades personalizadas são pares chave-valor que você pode anexar a qualquer item de telemetria, como solicitações ou eventos. As métricas personalizadas são valores numéricos que você pode acompanhar ao longo do tempo, como uma pontuação ou o comprimento de uma fila. Você pode usar propriedades e métricas personalizadas para adicionar informações específicas do locatário, como ID do locatário, nome do locatário, local do locatário e ID do carimbo de implantação, aos dados de telemetria.
Há duas maneiras de adicionar propriedades personalizadas à sua telemetria: usando TelemetryClient
ou usando inicializadores de telemetria.
TelemetryClient
TelemetryClient é um objeto que você pode usar para controlar qualquer item de telemetria. Você pode acessar as propriedades personalizadas de qualquer item de telemetria por meio de seu Properties
dicionário. A vantagem de usar TelemetryClient
é que você tem controle total sobre quais propriedades personalizadas adicionar e quando adicioná-las. A desvantagem é que você precisa acessar e modificar cada item de telemetria que deseja enriquecer com propriedades personalizadas.
Inicializadores de telemetria
Você pode usar inicializadores de telemetria para adicionar informações a todos os itens de telemetria ou para modificar propriedades definidas pelos módulos de telemetria padrão.
Quando você compartilha uma instância do Application Insights entre vários locatários, um inicializador de telemetria geralmente fornece uma boa maneira de injetar a ID do locatário em cada item de telemetria. Em seguida, você pode usar o ID para consultar e filtrar relatórios. A vantagem de usar inicializadores de telemetria é que você pode aplicar propriedades personalizadas a todos ou alguns dos itens de telemetria em um só lugar sem precisar escrever código para cada item. A desvantagem é que você tem menos controle sobre quais propriedades personalizadas adicionar a cada item de telemetria, portanto, pode adicionar dados desnecessários ou redundantes.
Ao adicionar propriedades personalizadas a dados de telemetria, usando qualquer um dos mecanismos, você pode usar recursos poderosos do Application Insights para monitorar e analisar aplicativos multilocatários de forma mais granular e significativa. Por exemplo, pode:
- Use o explorador de métricas para criar gráficos que mostrem o desempenho e o uso do aplicativo para cada locatário.
- Use o Log Analytics para escrever consultas complexas que filtram, agregam e unem dados de telemetria com base em propriedades ou métricas específicas do locatário.
- Use alertas para configurar regras que o notifiquem quando determinadas condições forem atendidas para um locatário.
- Use pastas de trabalho do Azure Monitor para criar relatórios e painéis interativos que visualizam a integridade e o status do aplicativo para cada locatário.
Unifique várias instâncias do Application Insights em uma única exibição
Há várias maneiras de unificar dados de várias instâncias do Application Insights. A sua escolha depende das suas necessidades e preferências. As seções a seguir descrevem algumas das opções.
Consultas entre recursos
Você pode usar consultas entre recursos para consultar dados de várias instâncias do Application Insights em uma única consulta. As instâncias podem estar em um único grupo de recursos, em mais de um grupo de recursos ou em mais de uma assinatura. À medida que o número de espaços de trabalho do Application Insights em uma consulta aumenta, o desempenho da consulta pode diminuir. O número de espaços de trabalho do Application Insights que você pode incluir em uma única consulta também é limitado. Para obter mais informações, consulte Consulta em vários espaços de trabalho e aplicativos.
Pastas de trabalho do Azure Monitor
Você pode usar pastas de trabalho do Azure Monitor para criar relatórios e painéis interativos com base em dados de várias fontes, incluindo Application Insights. Esses relatórios e painéis permitem visualizar e analisar dados de várias instâncias do Application Insights em uma única exibição.
Latência
O tempo necessário para que os dados de um sistema monitorado fiquem disponíveis para análise é conhecido como latência. Uma instância compartilhada do Application Insights em um aplicativo multilocatário não incorre em mais latência do que uma dedicada, a menos que a instância compartilhada seja limitada e a limitação impeça a ingestão de dados. Nesse cenário, a latência aumenta.
Limitação da taxa de ingestão
Você pode executar o limite de taxa de ingestão no Application Insights usando amostragem para limitar a quantidade de dados de telemetria ingeridos pelo seu serviço por dia. A amostragem ajuda a evitar que o Application Insights limite a telemetria devido aos limites de ingestão. Você pode usar a amostragem de taxa fixa para determinar uma taxa de amostragem ideal, com base no número de locatários e no limite diário, a fim de permanecer dentro dos limites.
Contribuidores
Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.
Autor principal:
- Raj Nemani - Brasil | Diretor, Estrategista de Tecnologia de Parceiros, GPS-ISV
Outros contribuidores:
- Mick Alberts - Brasil | Redator Técnico
- Rob Bagby - Brasil | Principal Desenvolvedor de Conteúdo, C+E Skilling Content R&D
- John Downs - Brasil | Engenheiro de Software Principal
- Rick Hallihan - Brasil | Engenheiro de Software Sênior, C+E Skilling Content R&D
- Landon Pierce - Brasil | Engenheiro de Clientes, Azure CXP
- Daniel Scott-Raynsford - Brasil | Estrategista de Tecnologia de Parceiros, OCP
- Arsen Vladimirskiy - Brasil | Engenheiro de Clientes Principal, Azure CXP
Para ver perfis não públicos do LinkedIn, inicie sessão no LinkedIn.
Próximos passos
- Treinamento: Monitore o desempenho do aplicativo
- O que é o Application Insights?
- Limites do Application Insights
- Consulta em vários espaços de trabalho e aplicativos
- Treinamento: Visualize dados combinados de várias fontes de dados usando pastas de trabalho do Azure
- Capture métricas personalizadas do Application Insights com .NET e .NET Core
- API do Application Insights para eventos e métricas personalizados
- Modelo de dados telemétricos no Application Insights
- Preços do Azure Monitor
- Log data ingestion time in Azure Monitor (Tempo de ingestão de dados de registo no Azure Monitor)
- Amostragem no Application Insights
- Filtrar e pré-processar a telemetria no SDK do Application Insights