Mapa do Aplicativo: aplicativos distribuídos por triagem

Os mapas de aplicativos representam a estrutura lógica de um aplicativo distribuído. Os componentes individuais do aplicativo são determinados pela propriedade "roleName" ou "name" na telemetria registrada. Esses componentes são representados como círculos no mapa e são chamados de "nós". As chamadas HTTP entre nós são representadas como setas que conectam esses nós, conhecidas como "conectores" ou "bordas". O nó que faz a chamada é a "origem" da chamada e o nó de recebimento é o "destino" da chamada.

O mapa do aplicativo ajuda você a identificar gargalos de desempenho ou pontos de acesso com falha em todos os componentes dos seus aplicativos distribuídos. Cada nó do mapa representa um componente de aplicativo ou as respectivas dependências e esses nós têm KPIs de integridade e alertas de status. Você pode selecionar qualquer componente para obter diagnóstico mais detalhado, como eventos do Application Insights. Se seu aplicativo usar os serviços do Azure, você também poderá selecionar o diagnóstico do Azure, como nas recomendações do Assistente do Banco de Dados SQL.

O Mapa do Aplicativo também apresenta um Modo de exibição inteligente para ajudar nas investigações rápidas de integridade do serviço.

O que é um componente?

Os componentes são partes dos seus aplicativos de microsserviços ou distribuídos que podem ser implantadas de modo independente. As equipes de operações e desenvolvedores têm acesso ou visibilidade nível de código para telemetria gerada por esses componentes de aplicativos. Por exemplo:

  • Os componentes são diferentes das dependências externas "observadas", como o SQL do Azure e os Hubs de Eventos do Azure, às quais sua equipe ou organização pode não ter acesso (código ou telemetria).
  • Os componentes são executados em qualquer número de instâncias de contêiner, função ou servidor.
  • Os componentes podem ser recursos separados do Application Insights, mesmo que as assinaturas sejam diferentes. Eles também podem ser funções diferentes que relatam para um único recurso do Application Insights. A experiência do mapa de visualização mostra os componentes independentemente de como eles estão configurados.

Mapa do aplicativo composto

Você pode ver a topologia do aplicativo completa em vários níveis de componentes de aplicativos relacionados. Os componentes podem ser recursos diferentes do Application Insights ou funções diferentes em um único recurso. O mapa do aplicativo localiza os componentes seguindo qualquer chamada de dependência HTTP feita entre os servidores com o SDK do Application Insights instalado.

Essa experiência começa com a descoberta progressiva dos componentes. Quando você carrega o Mapa do Aplicativo pela primeira vez, um conjunto de consultas é disparado para descobrir os componentes relacionados a esse componente. Um botão no canto superior esquerdo será atualizado com o número de componentes no seu aplicativo, conforme eles forem descobertos.

Ao selecionar Atualizar componentes do mapa, o mapa será atualizado com todos os componentes descobertos até aquele momento. Dependendo da complexidade do seu aplicativo, o carregamento da atualização pode levar um minuto.

Se todos os componentes são funções em um único recurso do Application Insights, essa etapa de descoberta não é necessária. A carga inicial para esse tipo de aplicativo terá todos os respectivos componentes.

Screenshot that shows an example of an application map.

Um dos principais objetivos com essa experiência é ser capaz de visualizar topologias complexas com centenas de componentes.

Selecione qualquer componente para ver as respectivas informações e acesse a experiência de triagem de desempenho e falha desse componente.

Diagram that shows application map details.

Investigar falhas

Selecione Investigar falhas para abrir o painel de Falhas.

Screenshot that shows the Investigate failures button.

Screenshot that shows the Failures screen.

Investigar o desempenho

Para solucionar problemas de desempenho, selecione Investigar o desempenho.

Screenshot that shows the Investigate performance button.

Screenshot that shows the Performance screen.

Acessar detalhes

O botão Acessar detalhes exibe a experiência de transação de ponta a ponta, que oferece exibições no nível da pilha de chamadas.

Screenshot that shows the Go to details button.

Screenshot that shows the End-to-end transaction details screen.

Exibir nos Logs (Análise)

Para consultar e investigar ainda mais os dados dos aplicativos, selecione Exibir nos Logs (Análise).

Screenshot that shows the View in Logs (Analytics) button.

Screenshot that shows the Logs screen with a line graph that summarizes the average response duration of a request over the past 12 hours.

Alertas

Para exibir alertas ativos e as regras subjacentes que fazem com que os alertas sejam disparados, selecione Alertas.

Screenshot that shows the Alerts button.

Screenshot that shows a list of alerts.

Definir ou substituir o nome da função de nuvem

O mapa de aplicativo usa a propriedade nome da função de nuvem para identificar os componentes no mapa.

Siga esta diretriz para definir ou substituir manualmente os nomes da função de nuvem e alterar o que é exibido no mapa do aplicativo.

Observação

O Agente ou SDK do Application Insights adiciona automaticamente a propriedade de nome da função de nuvem à telemetria emitida pelos componentes em um ambiente do Serviço de Aplicativo do Azure.

Gravar TelemetryInitializer personalizado

using Microsoft.ApplicationInsights.Channel;
using Microsoft.ApplicationInsights.Extensibility;

namespace CustomInitializer.Telemetry
{
    public class MyTelemetryInitializer : ITelemetryInitializer
    {
        public void Initialize(ITelemetry telemetry)
        {
            if (string.IsNullOrEmpty(telemetry.Context.Cloud.RoleName))
            {
                //set custom role name here
                telemetry.Context.Cloud.RoleName = "Custom RoleName";
                telemetry.Context.Cloud.RoleInstance = "Custom RoleInstance";
            }
        }
    }
}

Aplicativos ASP.NET: inicializador de carga na TelemetryConfiguration ativa

Em ApplicationInsights.config:

    <ApplicationInsights>
      <TelemetryInitializers>
        <!-- Fully qualified type name, assembly name: -->
        <Add Type="CustomInitializer.Telemetry.MyTelemetryInitializer, CustomInitializer"/>
        ...
      </TelemetryInitializers>
    </ApplicationInsights>

Um método alternativo para aplicativos Web do ASP.NET é criar uma instância do inicializador no código, por exemplo, em Global.aspx.cs:

 using Microsoft.ApplicationInsights.Extensibility;
 using CustomInitializer.Telemetry;

    protected void Application_Start()
    {
        // ...
        TelemetryConfiguration.Active.TelemetryInitializers.Add(new MyTelemetryInitializer());
    }

Observação

Adicionar um inicializador usando ApplicationInsights.config ou TelemetryConfiguration.Active não é válido para aplicativos do ASP.NET Core.

Aplicativos do ASP.NET Core: carregar um inicializador para TelemetryConfiguration

Para aplicativos do ASP.NET Core, para adicionar uma nova instância TelemetryInitializer, adicione-a ao contêiner de Injeção de Dependência, conforme mostrado. Isso é feito no método ConfigureServices da sua classe Startup.cs.

 using Microsoft.ApplicationInsights.Extensibility;
 using CustomInitializer.Telemetry;
 public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<ITelemetryInitializer, MyTelemetryInitializer>();
}

Entender o nome da função de nuvem no contexto do mapa do aplicativo

Para ajudar você a entender o conceito de nomes das funções de nuvem, veja um mapa do aplicativo que tem vários nomes das funções de nuvem presentes.

Screenshot that shows an application map example.

No mapa do aplicativo mostrado, cada um dos nomes em caixas verdes são valores de nome da função de nuvem para diferentes aspectos desse aplicativo distribuído específico. Para esse aplicativo, as funções consistem em: Authentication, acmefrontend, Inventory Management e Payment Processing Worker Role.

No caso desse aplicativo, cada um dos nomes das funções de nuvem também representa um recurso diferente e exclusivo do Application Insights com as próprias chaves de instrumentação. Como o proprietário desse aplicativo tem acesso a cada um desses quatro recursos diferentes do Application Insights, o mapa do aplicativo consegue reunir um mapa das relações subjacentes.

Para as definições oficiais:

   [Description("Name of the role the application is a part of. Maps directly to the role name in azure.")]
    [MaxStringLength("256")]
    705: string      CloudRole = "ai.cloud.role";

    [Description("Name of the instance where the application is running. Computer name for on-premises, instance name for Azure.")]
    [MaxStringLength("256")]
    715: string      CloudRoleInstance = "ai.cloud.roleInstance";

Como alternativa, a instância de função de nuvem pode ser útil para cenários em que um nome da função de nuvem informa que o problema está em algum lugar no front-end da Web. Mas você pode estar executando vários servidores com balanceamento de carga no front-end da Web. Pode ser importante ser capaz de fazer uma busca detalhada em uma camada por meio de consultas Kusto e saber se o problema está afetando todos os servidores ou instâncias de front-end da Web ou apenas um.

Exibição inteligente, um cenário possível em que você pode querer substituir o valor da instância de função da nuvem se seu aplicativo estiver em execução em um ambiente de contêineres. Nesse caso, conhecer apenas o servidor individual pode não ser suficiente para localizar um problema específico.

Para obter mais informações sobre como substituir a propriedade de nome da função de nuvem com inicializadores de telemetria, confira Adicionar propriedades: ITelemetryInitializer.


Filtros do Mapa do Aplicativo

Os filtros do Mapa do Aplicativo permitem que o usuário reduza o número de nós e bordas mostrados aplicando um ou mais filtros. Esses filtros podem ser usados para reduzir o escopo do mapa, mostrando um mapa menor e mais focado.

Criando filtros do Mapa do Aplicativo

Para criar um filtro, selecione o botão "Adicionar filtro" na barra de ferramentas do mapa do aplicativo.

A screenshot of the Add Filter button.

Isso abre uma caixa de diálogo com três seções: 1) Selecionar tipo de filtro, 2) Escolher parâmetros de filtro e 3) Revisar.

A screenshot with the Node Filter radio button selected.

A screenshot with the Connector Edge Filter radio button selected.

A primeira seção tem duas opções:

  1. Filtro de nó
  2. Filtro (de borda) do conector

O conteúdo nas outras seções é alterado com base na opção selecionada.

Filtros de nó

Os filtros de nó permitem que o usuário deixe apenas os nós selecionados no mapa e oculte o restante. Um filtro de nó verifica se cada nó contém uma propriedade (o respectivo nome, por exemplo) com um valor que corresponde a um valor de pesquisa por meio de um determinado operador. Se um nó for removido por um filtro de nó, todos os conectores (bordas) também serão removidos.

Há três parâmetros disponíveis para nós:

  • "Nós incluídos" permite que o usuário selecione apenas nós com propriedades correspondentes ou inclua também nós de origem, nós de destino ou ambos no mapa resultante.

    • "Nós e fontes, destinos": isso significa que nós que correspondem aos parâmetros de pesquisa serão incluídos no mapa resultante e nós que são fontes ou destinos para o nó correspondente também serão incluídos, mesmo que não tenham valores de propriedade que correspondam à pesquisa. Nós de origem e de destino são chamados coletivamente de nós "Conectados".

    • "Nós e origens": o mesmo que acima, mas os nós de destino não são incluídos automaticamente nos resultados.

    • "Nós e destinos": o mesmo que acima, mas os nós de origem não são incluídos automaticamente.

    • "Somente nós": todos os nós no mapa resultante precisam ter um valor de propriedade correspondente.

  • "Operador" é o tipo de verificação que será executado nos valores de propriedade de cada nó:

    • contains

    • !contains (não contém)

    • == (igual a)

    • != (diferente de)

  • "Valor da pesquisa" é o texto que precisa estar contido, não contido, ser igual ou diferente de um valor de propriedade de nó. Alguns dos valores encontrados em nós que estão no mapa são mostrados em uma lista suspensa. Qualquer valor arbitrário pode ser inserido clicando em "Criar opção..." na lista suspensa.

Por exemplo, na captura de tela abaixo, o filtro está sendo configurado para selecionar Nós que contêm o texto "-west". Nós de origem e de destino e também serão incluídos no mapa resultante. Na mesma captura de tela, o usuário pode selecionar um dos valores encontrados no mapa ou criar uma opção que não seja uma correspondência exata a uma encontrada no mapa.

A screenshot with the filter configured to select nodes that contain the text west.

Filtros (de borda) de conector

Os filtros de conector examinam as propriedades de um conector para corresponder a um valor. Os conectores que não correspondem ao filtro são removidos do mapa. O mesmo acontece com nós sem conectores restantes.

Os filtros de conector exigem três parâmetros:

  • "Filtrar conectores por" permite que o usuário escolha qual propriedade de um conector usar:

    • "Conector de erro (vermelho realçado)" seleciona conectores com base na cor deles (vermelho ou não). Um valor não pode ser inserido para esse tipo de filtro, apenas um operador que seja "==" ou "!=", que significam "conector com erros" e "conector sem erros".

    • "Taxa de erro" usa a taxa média de erros para o conector---o número de chamadas com falha divididas pelo número de todas as chamadas---exprimidas como porcentagem. Por exemplo, um valor de "1" se refere a 1% de chamadas com falha.

    • "Duração média da chamada (****ms)" usa exatamente isso: a duração média de todas as chamadas representadas pelo conector, em milissegundos. Por exemplo, um valor de "1000" se refere a chamadas que tiveram uma média de 1 segundo.

    • "Contagem de chamadas" usa o número total de chamadas representadas pelo conector.

  • "Operador" é a comparação que será aplicada entre a propriedade do conector e o valor inserido abaixo. As opções mudam: "Conector de erro" tem as opções igual a/diferente de; todos os outros têm maior que/menor que.

  • "Valor" é o valor de comparação do filtro. Há apenas uma opção para o filtro "Conector de erro": "Erros". Outros tipos de filtro exigem um valor numérico e oferecem uma lista suspensa com algumas entradas pré-populadas relevantes para o mapa.

    • Algumas dessas entradas têm uma designação "(Pxx)", que são níveis de percentil. Por exemplo, o filtro "Duração média da chamada" pode ter o valor "200 (P90)" que indica que 90% de todos os conectores (independentemente do número de chamadas que representam) têm menos de 200 ms de duração da chamada.

    • Quando um número específico não é mostrado na lista suspensa, ele pode ser digitado e criado clicando em "Criar opção". Digitar "P" mostra todos os valores de percentil na lista suspensa.

Seção Revisão

A seção Revisão contém descrições textuais e visuais do que o filtro fará, o que deve ser útil ao aprender como os filtros funcionam:

A screenshot of the Review section with node in focus.

A screenshot of the Review section depicting an average call duration greater than 42 milliseconds.

Usando filtros no Mapa do Aplicativo

Interatividade do filtro

Depois de configurar um filtro no pop-up "Adicionar filtro", selecione "Aplicar" para criar o filtro. Vários filtros podem ser aplicados e funcionam sequencialmente da esquerda para a direita. Cada filtro pode remover outros nós e conectores, mas não pode adicioná-los de volta ao mapa.

Os filtros aparecem como botões arredondados acima do mapa do aplicativo:

A screenshot displaying the rounded filter buttons above the application map.

Clicar em A screenshot of a rounded X button. em um filtro removerá esse filtro. Clicar em outro lugar no botão permite que o usuário edite os valores do filtro. À medida que o usuário altera os valores no filtro, os novos valores são aplicados para que o mapa seja uma pré-visualização da alteração. Clicar em "Cancelar" restaura o filtro como era antes da edição.

A screenshot displaying the Configure Connector Filter section with a Cancel button.

Reutilizando filtros

Os filtros podem ser criados de duas maneiras:

  • O botão "Copiar link" na barra de ferramentas acima do mapa codifica as informações de filtro na URL copiada. Esse link pode ser salvo nos indicadores do navegador ou compartilhado com outras pessoas. "Copiar link" preserva o valor de duração, mas não a hora absoluta, portanto, o mapa mostrado posteriormente pode ser diferente do observado quando o link foi criado.

  • O alfinete do painel A screenshot displaying the dashboard pin button. está localizado ao lado da barra de título do painel do Mapa do Aplicativo. Esse botão fixa o mapa em um painel, juntamente com os filtros aplicados a ele. Essa ação pode ser útil para filtros que são frequentemente interessantes. Por exemplo, o usuário pode fixar um mapa com o filtro "Conector de erro" aplicado a ele e o modo de exibição do painel mostrará apenas nós que têm erros nas respectivas chamadas HTTP.

Cenários de uso de filtros

Há muitas combinações de filtro. Aqui estão algumas sugestões que se aplicam à maioria dos mapas e podem ser úteis para fixar em um painel:

  • Mostre apenas erros que pareçam significativos usando o filtro "Conector de erro" junto com "Exibição inteligente":
    A screenshot displaying the Last 24 hours and Highlighted Errors filters.A screenshot displaying the Intelligent Overview toggle.

  • Ocultar conectores de baixo tráfego sem erros para se concentrar rapidamente em problemas que têm maior impacto: A screenshot displaying the Last 24 hours, calls greater than 876, and highlighted errors filters.

  • Mostrar conectores de alto tráfego com alta duração média para se concentrar em possíveis problemas de desempenho: A screenshot displaying the Last 24 hours, calls greater than 3057, and average time greater than 467 filters.

  • Mostrar uma parte específica de um aplicativo distribuído (requer uma convenção de nomenclatura roleName adequada): A screenshot displaying the Last 24 hours and Connected Contains West filters.

  • Ocultar um tipo de dependência com muito ruído: A screenshot displaying the Last 24 hours and Nodes Contains Storage Accounts filters.

  • Mostrar somente conectores com taxas de erro mais altas do que um valor específico A screenshot displaying the Last 24 hours and Errors greater than 0.01 filters.


Modo de Exibição Inteligente do Mapa do Aplicativo

As seções a seguir discutem a exibição inteligente.

Resumo da Exibição Inteligente

A Exibição Inteligente do Mapa do Aplicativo foi projetada para ajudar nas investigações de integridade do serviço. Ela aplica o aprendizado de máquina para identificar rapidamente possíveis causas raiz de problemas, filtrando o ruído. O modelo de machine learning aprende com o comportamento histórico do Mapa do Aplicativo a identificar anomalias e padrões dominantes que indicam as possíveis causas de um incidente.

Em aplicativos distribuídos grandes, há sempre algum grau de ruído proveniente de falhas "benignas", o que pode causar algum ruído no Mapa do Aplicativo, na forma de muitas bordas vermelhas. A Exibição Inteligente mostra apenas as causas mais prováveis de falha de serviço e remove as bordas vermelhas de nó para nó (comunicação serviço a serviço) em serviços íntegros. A exibição inteligente realça as bordas em vermelho que devem ser investigadas. Ela também oferece insights acionáveis para a borda realçada.

Benefícios da Exibição Inteligente

  • Reduz o tempo de resolução realçando apenas falhas que precisam ser investigadas.
  • Fornece insights acionáveis sobre por que uma determinada borda vermelha foi realçada.
  • Permite que o Mapa do Aplicativo seja usado diretamente para aplicativos distribuídos grandes (focando apenas em bordas marcadas em vermelho)

Habilitar a Exibição Inteligente no Mapa do Aplicativo

Habilite a alternância da Exibição Inteligente. Opcionalmente, para alterar a sensibilidade das detecções, selecione Baixa, Média ou Alta. Para obter mais informações, confira a pergunta de solução de problemas sobre sensibilidade.

Screenshot that shows the Application Map user interface with options to toggle Intelligent view and provide feedback.

Depois de habilitar a Exibição Inteligente, selecione uma das bordas realçadas para ver os "insights acionáveis". Os insights aparecem no painel à direita e explicam por que a borda foi realçada.

Screenshot that shows the Application Map user interface section about actionable insights.

Para iniciar a solução de problemas, selecione Investigar falhas. No painel Falhas que é aberto, investigue se o problema detectado é a causa raiz. Se nenhuma borda for vermelha, o modelo de machine learning não encontrou incidentes potenciais nas dependências do aplicativo.

Para fornecer comentários, selecione o botão Comentários no mapa.

Como a Exibição Inteligente determina onde as bordas vermelhas são realçadas?

A Exibição Inteligente usa o modelo de machine learning do AIOps patenteado para realçar o que é realmente importante em um mapa do aplicativo.

Outras considerações de exemplo incluem:

  • Taxas de falha
  • Contagens de solicitações
  • Durações
  • Anomalias nos dados
  • Tipos de dependência

Para comparação, o modo de exibição normal utiliza apenas a taxa de falha bruta.

Como funciona a sensibilidade da Exibição Inteligente?

A sensibilidade da Exibição Inteligente ajusta a probabilidade de que um problema de serviço seja detectado.

Ajuste a sensibilidade para alcançar o nível de confiança desejado nas bordas realçadas.

Configuração da sensibilidade Result
Alto Menos bordas serão realçadas.
Médio (padrão) Um número equilibrado de bordas será realçado.
Baixo Mais bordas serão realçadas.

Limitações da Exibição Inteligente

A exibição inteligente tem algumas limitações:

  • Aplicativos distribuídos grandes podem levar um minuto para carregar a Exibição Inteligente.
  • Há suporte para períodos de até sete dias.

Para fornecer comentários, confira os comentários do Portal.


Solução de problemas

Se você estiver tendo dificuldades para obter o Mapa do Aplicativo para trabalhar conforme esperado, tente essas etapas.

Geral

  1. Certifique-se que você está usando um SDK com suporte oficial. SDKs de comunidade ou sem suporte podem não dar suporte à correlação.

    Para obter uma lista de SDKs com suporte, confira Application Insights: idiomas, plataformas e integrações.

  2. Atualize todos os componentes para a versão mais recente do SDK.

  3. Se você estiver usando o Azure Functions com C#, atualize para o Azure Functions V2.

  4. Confirme se o nome da função de nuvem está configurado corretamente.

  5. Se estiver faltando uma dependência, verifique se ela está na lista de dependências coletadas automaticamente. Se não, você ainda poderá acompanhá-lo manualmente com uma chamada acompanhar dependência.

Muitos nós no mapa

O Mapa do Aplicativo cria um nó de aplicativo para cada nome de função de nuvem exclusivo presente na telemetria de solicitação. Um nó de dependência é também criado para cada combinação exclusiva de tipo, destino e nome da função de nuvem.

Se houver mais de 10.000 nós na telemetria, o Mapa do Aplicativo não poderá buscar todos os nós e links, portanto, o mapa estará incompleto. Se isso acontecer, uma mensagem de aviso aparecerá ao exibir o mapa.

O Mapa do Aplicativo só dá suporte a até 1.000 nós separados desagrupados renderizados ao mesmo tempo. Ele reduz a complexidade visual agrupando as dependências com o mesmo tipo e os mesmos chamadores.

Se a sua telemetria tiver muitos nomes da função de nuvem exclusivos ou muitos tipos de dependência, esse agrupamento será insuficiente e o mapa não será renderizado.

Para corrigir isso, altere sua instrumentação a fim de definir corretamente os campos de nome da função de nuvem, tipo de dependência e destino de dependência.

  • O destino de dependência deve representar o nome lógico de uma dependência. Em muitos casos, é equivalente ao nome do servidor ou do recurso da dependência. Por exemplo, no caso de dependências HTTP, ele é definido como o nome do host. Ele não deve conter IDs ou parâmetros exclusivos que mudam de uma solicitação para outra.

  • O tipo de dependência deve representar o tipo lógico de uma dependência. Por exemplo, HTTP, SQL ou Azure Blob são tipos de dependência comuns. Ele não deve conter IDs exclusivas.

  • A finalidade do nome da função de nuvem é descrita na seção Definir ou substituir o nome da função de nuvem.

Exibição inteligente

Perguntas comuns sobre a solução de problemas sobre a Exibição Inteligente.

Por que essa borda não está realçada, mesmo com baixa sensibilidade?

Pode parecer que uma dependência está com falha, mas o modelo não indica que há um incidente em potencial:

  • Se essa dependência estiver falhando há algum tempo, o modelo pode acreditar que este é um estado regular e não realçar a borda para você. Ele se concentra na solução de problemas em RT.
  • Se essa dependência tiver um efeito mínimo sobre o desempenho geral do aplicativo, isso também poderá fazer com que o modelo a ignore.
  • Se nenhuma das opções acima corresponder ao seu caso, use a opção Comentários e descreva a sua experiência. Você pode nos ajudar a aprimorar versões futuras do modelo.

Por que a borda está realçada?

Quando uma borda é realçada, a explicação do modelo deve apontar para as funcionalidades mais importantes que fizeram com que ele desse a essa dependência uma pontuação de alta probabilidade. A recomendação não se baseia apenas em falhas, mas em outros indicadores, como latência inesperada em fluxos dominantes.

Por que a Exibição Inteligente não é carregada?

Se o Modo de exibição Inteligente não for carregado, defina o período configurado como seis dias ou menos.

Por que a Exibição Inteligente leva muito tempo para ser carregada?

Evite selecionar Atualizar componentes do Mapa.

Habilite a Exibição Inteligente somente para um único recurso do Application Insights.

Screenshot that shows the Update map components button in the Application Map user interface.

Comentários do Portal

Para fornecer feedback, use a opção de feedback.

Screenshot that shows the Feedback option.

Próximas etapas