Utilizar o Agente Application Insights Java In-Process no Azure Spring Apps

Nota

Azure Spring Apps é o novo nome para o serviço Azure Spring Cloud. Embora o serviço tenha um novo nome, você verá o nome antigo em alguns lugares por um tempo enquanto trabalhamos para atualizar ativos, como capturas de tela, vídeos e diagramas.

Com os aplicativos Spring Boot Native Image, use o Azure Monitor OpenTelemetry Distro / Application Insights no projeto de aplicativo Java de imagem nativa do Spring Boot em vez do agente Java do Application Insights.

Este artigo aplica-se a: ✔️ Consumo padrão e dedicado (Pré-visualização) ✔️ Básico/Standard ✔️ Enterprise

Este artigo explica como monitorar aplicativos usando o agente Java do Application Insights no Azure Spring Apps.

Com este recurso você pode:

  • Pesquisar dados de rastreamento com diferentes filtros.
  • Veja um mapa de dependência de aplicativos Spring.
  • Verifique o desempenho da solicitação.
  • Monitore métricas ao vivo em tempo real.
  • Verifique as falhas na solicitação.
  • Verifique as métricas do aplicativo.
  • Verifique os logs do aplicativo.

O Application Insights pode fornecer muitas perspetivas observáveis, incluindo:

  • Mapa da aplicação
  • Desempenho
  • Falhas
  • Métricas
  • Live Metrics
  • Disponibilidade
  • Registos

Usando o recurso Application Insights

Quando o recurso Application Insights está habilitado, você pode:

  • No painel de navegação, selecione Application Insights para exibir a página Visão geral do Application Insights. A página Visão geral mostra uma visão geral de todos os aplicativos em execução.

  • Selecione Mapa do aplicativo para ver o status das chamadas entre os aplicativos.

    Captura de tela do portal do Azure que mostra a página de mapa do Aplicativo do Application Insights.

  • Selecione o link entre o atendimento ao cliente e petclinic para ver mais detalhes, como uma consulta do SQL.

  • Selecione um ponto de extremidade para ver todos os aplicativos que fazem solicitações para o ponto de extremidade.

  • No painel de navegação, selecione Desempenho para ver os dados de desempenho de todas as operações, dependências e funções de todos os aplicativos.

    Captura de ecrã do portal do Azure que mostra a página Desempenho do Application Insights.

  • No painel de navegação, selecione Falhas para ver quaisquer falhas ou exceções inesperadas dos seus aplicativos.

    Captura de ecrã do portal do Azure que mostra a página Falhas do Application Insights.

  • No painel de navegação, selecione Métricas e selecione o namespace para ver as métricas do Spring Boot e as métricas personalizadas, se houver.

    Captura de ecrã do portal do Azure que mostra a página Métricas do Application Insights.

  • No painel de navegação, selecione Métricas em tempo real para ver as métricas em tempo real para diferentes dimensões.

    Captura de ecrã do portal do Azure que mostra a página Métricas em tempo real do Application Insights.

  • No painel de navegação, selecione Disponibilidade para monitorar a disponibilidade e a capacidade de resposta de aplicativos Web criando testes de disponibilidade no Application Insights.

    Captura de ecrã do portal do Azure que mostra a página Disponibilidade do Application Insights.

  • No painel de navegação, selecione Logs para exibir os logs de todos os aplicativos ou os logs de um aplicativo ao filtrar por cloud_RoleName.

    Captura de ecrã do portal do Azure que mostra a página Registos do Application Insights.

Gerenciar o Application Insights usando o portal do Azure

Habilite o Java In-Process Agent usando o procedimento a seguir.

  1. Ir para o serviço | Página de visão geral da sua instância de serviço e, em seguida, selecione Application Insights na seção Monitoramento.

  2. Selecione Habilitar Application Insights para habilitar o Application Insights no Azure Spring Apps.

  3. Selecione uma instância existente do Application Insights ou crie uma nova.

  4. Quando o Application Insights está habilitado, você pode configurar uma taxa de amostragem opcional (padrão 10,0%).

    Captura de ecrã do portal do Azure que mostra a página Application Insights para Azure Spring Apps com a caixa de verificação Ativar Application Insights realçada.

  5. Selecione Guardar para guardar as alterações.

Nota

Não use a mesma instância do Application Insights em instâncias diferentes do Azure Spring Apps ou você verá dados mistos.

Você pode usar o Portal para verificar ou atualizar as configurações atuais no Application Insights.

Habilitar o Application Insights usando o portal do Azure

  1. Selecione Application Insights.

  2. Habilite o Application Insights selecionando Editar vinculação ou o hiperlink Não acoplado .

    Captura de ecrã do portal do Azure Azure que mostra a instância do Azure Spring Apps com a página Application Insights e a opção 'Editar ligação'.

  3. Edite o Application Insights ou a taxa de amostragem e selecione Salvar.

Desativar o Application Insights

  1. Selecione Application Insights.

  2. Selecione Desvincular vinculação para desabilitar o Application Insights.

    Captura de ecrã do portal do Azure que mostra a instância do Azure Spring Apps com a página Application Insights e a opção de ligação Desvincular.

Alterar configurações do Application Insights

Selecione o nome na coluna Application Insights para abrir a seção Application Insights.

Captura de ecrã do portal do Azure que mostra a instância do Azure Spring Apps com a página Application Insights.

Editar associações buildpack do Application Insights no Serviço de Criação

Para verificar e atualizar as configurações atuais para as associações buildpack do Application Insights no Serviço de Compilação, siga estas etapas:

  1. Selecione Build Service.
  2. Escolha o seu construtor.
  3. Selecione Editar na coluna Ligações.

As configurações do Application Insights são encontradas no item ApplicationInsights listado na coluna Tipo de ligação.

  1. Selecione o hiperlink Acoplado ou selecione Editar vinculação sob a elipse para abrir e editar as associações buildpack do Application Insights.

    Captura de ecrã do portal do Azure que mostra o painel Editar associações para construtor predefinido.

  2. Edite as configurações de vinculação e selecione Salvar.

    Captura de ecrã do portal do Azure que mostra o painel Editar ligação.

Gerenciar o Application Insights usando a CLI do Azure

Você pode gerenciar o Application Insights usando comandos da CLI do Azure. Nos comandos a seguir, substitua o texto do <espaço reservado> pelos valores descritos. O <espaço reservado service-instance-name> refere-se ao nome da sua instância do Azure Spring Apps.

Ativar o Application Insights

Para configurar o Application Insights ao criar uma instância do Azure Spring Apps, use o comando a seguir. Para o argumento, você pode especificar um nome do Application Insights ou ID de app-insights recurso.

az spring create \
    --resource-group <resource-group-name> \
    --name "service-instance-name" \
    --app-insights <name-or-resource-ID> \
    --sampling-rate <sampling-rate>
az spring create \
    --resource-group <resource-group-name> \
    --name "service-instance-name" \
    --app-insights <name-or-resource-ID> \
    --sampling-rate <sampling-rate> \
    --sku Enterprise

Você também pode usar uma cadeia de conexão do Application Insights (preferencial) ou uma chave de instrumentação, conforme mostrado no exemplo a seguir.

az spring create \
    --resource-group <resource-group-name> \
    --name <service-instance-name> \
    --app-insights-key <connection-string-or-instrumentation-key> \
    --sampling-rate <sampling-rate>
az spring create \
    --resource-group <resource-group-name> \
    --name <service-instance-name> \
    --app-insights-key <connection-string-or-instrumentation-key> \
    --sampling-rate <sampling-rate> \
    --sku Enterprise

Desativar o Application Insights

Para desabilitar o Application Insights ao criar uma instância do Azure Spring Apps, use o seguinte comando:

az spring create \
    --resource-group <resource-group-name> \
    --name <service-instance-name> \
    --disable-app-insights
az spring create \
    --resource-group <resource-group-name> \
    --name <service-instance-name> \
    --disable-app-insights \
    --sku Enterprise

Verifique as configurações do Application Insights

Para verificar as configurações do Application Insights de uma instância existente do Azure Spring Apps, use o seguinte comando:

az spring app-insights show \
    --resource-group <resource-group-name> \
    --name <service-instance-name>

Atualizar o Application Insights

Para atualizar o Application Insights para usar uma cadeia de conexão (preferencial) ou chave de instrumentação, use o seguinte comando:

az spring app-insights update \
    --resource-group <resource-group-name> \
    --name <service-instance-name> \
    --app-insights-key <connection-string-or-instrumentation-key> \
    --sampling-rate <sampling-rate>

Para atualizar o Application Insights para usar o nome ou ID do recurso, use o seguinte comando:

az spring app-insights update \
    --resource-group <resource-group-name> \
    --name <service-instance-name> \
    --app-insights <name-or-resource-ID> \
    --sampling-rate <sampling-rate>

Desative o Application Insights com o comando update

Para desabilitar o Application Insights em uma instância existente do Azure Spring Apps, use o seguinte comando:

az spring app-insights update \
    --resource-group <resource-group-name> \
    --name <service-instance-name> \
    --disable

Gerenciar associações buildpack do Application Insights

Esta secção aplica-se apenas ao plano Enterprise e fornece instruções que complementam a secção anterior.

O plano do Azure Spring Apps Enterprise usa associações buildpack para integrar o Azure Application Insights com o tipo ApplicationInsights. Para obter mais informações, consulte Como configurar a integração APM e certificados de CA.

Para criar uma associação buildpack do Application Insights, use o seguinte comando:

az spring build-service builder buildpack-binding create \
    --resource-group <your-resource-group-name> \
    --service <your-service-instance-name> \
    --name <your-binding-name> \
    --builder-name <your-builder-name> \
    --type ApplicationInsights \
    --properties sampling-percentage=<your-sampling-percentage> \
                 connection-string=<your-connection-string>

Para listar todas as associações buildpack e encontrar associações do tipo Application Insights , ApplicationInsightsuse o seguinte comando:

az spring build-service builder buildpack-binding list \
    --resource-group <your-resource-group-name> \
    --service <your-service-resource-name> \
    --builder-name <your-builder-name>

Para substituir uma associação buildpack do Application Insights, use o seguinte comando:

az spring build-service builder buildpack-binding set \
    --resource-group <your-resource-group-name> \
    --service <your-service-instance-name> \
    --name <your-binding-name> \
    --builder-name <your-builder-name> \
    --type ApplicationInsights \
    --properties sampling-percentage=<your-sampling-percentage> \
                 connection-string=<your-connection-string>

Para obter uma associação buildpack do Application Insights, use o seguinte comando:

az spring build-service builder buildpack-binding show \
    --resource-group <your-resource-group-name> \
    --service <your-service-instance-name> \
    --name <your-binding-name> \
    --builder-name <your-builder-name>

Para excluir uma associação buildpack do Application Insights, use o seguinte comando:

az spring build-service builder buildpack-binding delete \
    --resource-group <your-resource-group-name> \
    --service <your-service-instance-name> \
    --name <your-binding-name> \
    --builder-name <your-builder-name>

Automatização

As seções a seguir descrevem como automatizar sua implantação usando Bicep, modelos do Azure Resource Manager (modelos ARM) ou Terraform.

Bicep

Para implantar usando um arquivo Bicep, copie o conteúdo a seguir em um arquivo main.bicep . Para obter mais informações, consulte Microsoft.AppPlatform Spring/monitoringSettings.

param springName string
param location string = resourceGroup().location

resource spring 'Microsoft.AppPlatform/Spring@2020-07-01' = {
  name: springName
  location: location
  properties: {}
}

resource monitorSetting 'Microsoft.AppPlatform/Spring/monitoringSettings@2020-11-01-preview' = {
  parent: spring
  name: 'default'
  properties: {
    appInsightsInstrumentationKey: '00000000-0000-0000-0000-000000000000'
    appInsightsSamplingRate: 88
  }
}

Modelos do ARM

Para implantar usando um modelo ARM, copie o conteúdo a seguir em um arquivo azuredeploy.json . Para obter mais informações, consulte Microsoft.AppPlatform Spring/monitoringSettings.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "springName": {
      "type": "string"
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "resources": [
    {
      "type": "Microsoft.AppPlatform/Spring",
      "apiVersion": "2020-07-01",
      "name": "[parameters('springName')]",
      "location": "[parameters('location')]",
      "properties": {}
    },
    {
      "type": "Microsoft.AppPlatform/Spring/monitoringSettings",
      "apiVersion": "2020-11-01-preview",
      "name": "[format('{0}/{1}', parameters('springName'), 'default')]",
      "properties": {
        "appInsightsInstrumentationKey": "00000000-0000-0000-0000-000000000000",
        "appInsightsSamplingRate": 88
      },
      "dependsOn": [
        "[resourceId('Microsoft.AppPlatform/Spring', parameters('springName'))]"
      ]
    }
  ]
}

Terraform

Para uma implantação do Terraform, use o modelo a seguir. Para obter mais informações, consulte azurerm_spring_cloud_service.

provider "azurerm" {
  features {}
}

resource "azurerm_resource_group" "example" {
  name     = "example-resources"
  location = "West Europe"
}

resource "azurerm_application_insights" "example" {
  name                = "tf-test-appinsights"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  application_type    = "web"
}

resource "azurerm_spring_cloud_service" "example" {
  name                = "example-springcloud"
  resource_group_name = azurerm_resource_group.example.name
  location            = azurerm_resource_group.example.location
  sku_name            = "S0"

  config_server_git_setting {
    uri          = "https://github.com/Azure-Samples/piggymetrics"
    label        = "config"
    search_paths = ["dir1", "dir2"]
  }

  trace {
    connection_string = azurerm_application_insights.example.connection_string
    sample_rate       = 10.0
  }

  tags = {
    Env = "staging"
  }
}

A automação no plano Enterprise está pendente de suporte. A documentação é adicionada assim que estiver disponível.

Atualização/upgrade do agente Java

O agente Java é atualizado/atualizado regularmente com o JDK, o que pode afetar os seguintes cenários.

Nota

A versão JDK é atualizada/atualizada trimestralmente por ano.

  • Os aplicativos existentes que usam o agente Java antes de atualizar/atualizar não são afetados.
  • As aplicações criadas após a atualização/atualização usam a nova versão do agente Java.
  • Os aplicativos existentes que não usavam anteriormente o agente Java exigem reinicialização ou reimplementação para usar a nova versão do agente Java.

O agente Java é atualizado/atualizado quando o buildpack é atualizado.

Configuração do agente Java hot-loading

O Azure Spring Apps tem um mecanismo de carregamento a quente para ajustar as definições de configuração do agente sem reiniciar os aplicativos.

Nota

O mecanismo de carregamento a quente tem um atraso em minutos.

  • Se o agente Java já estiver ativado, as alterações na instância ou SamplingRate no valor do Application Insights não exigirão a reinicialização do aplicativo.

  • Se você ativar o agente Java, deverá reiniciar os aplicativos.

  • Quando você desabilita o agente Java, os aplicativos param de enviar todos os dados de monitoramento após um atraso em minutos. Você pode reiniciar aplicativos para remover o agente do Java Runtime Environment.

Correspondência de conceitos entre o Azure Spring Apps e o Application Insights

Azure Spring Apps Application Insights
App * Mapa de Aplicação/Função
* Métricas ao vivo/função
* Falhas/Funções/Função na nuvem
* Desempenho/Funções/Função Poderia
App Instance * Mapa do aplicativo/instância de função
* Métricas em tempo real/nome do serviço
* Falhas/funções/instância de nuvem
* Desempenho/Funções/Instância Poderia

O nome App Instance do Azure Spring Apps é alterado ou gerado nos seguintes cenários:

  • Você cria um novo aplicativo.
  • Você implanta um arquivo JAR ou código-fonte em um aplicativo existente.
  • Você inicia uma implantação azul/verde.
  • Reinicie o aplicativo.
  • Parar a implantação de um aplicativo e, em seguida, reiniciá-lo.

Quando os dados são armazenados no Application Insights, eles contêm o histórico das instâncias do aplicativo Azure Spring Apps criadas ou implantadas desde que o agente Java foi habilitado. Por exemplo, no portal do Application Insights, você pode ver os dados do aplicativo criados ontem, mas excluídos dentro de um intervalo de tempo específico, como as últimas 24 horas. Os cenários a seguir mostram como isso funciona:

  • Você criou um aplicativo por volta das 8h00 de hoje a partir do Azure Spring Apps com o agente Java habilitado e, em seguida, implantou um arquivo JAR nesse aplicativo por volta das 8h10 de hoje. Após alguns testes, você altera o código e implanta um novo arquivo JAR neste aplicativo às 8h30 de hoje. Em seguida, você faz uma pausa e, quando volta por volta das 11h00, verifica alguns dados do Application Insights. Estás a ver:
    • Três instâncias no Mapa do Aplicativo com intervalos de tempo nas últimas 24 horas e Falhas, Desempenho e Métricas.
    • Uma instância no Mapa do Aplicativo com um intervalo de tempo na última hora e Falhas, Desempenho e Métricas.
    • Uma instância no Live Metrics.
  • Você criou um aplicativo por volta das 8h00 de hoje a partir do Azure Spring Apps com o agente Java habilitado e, em seguida, implantou um arquivo JAR nesse aplicativo por volta das 8h10 de hoje. Por volta das 8h30 de hoje, você tenta uma implantação azul/verde com outro arquivo JAR. Atualmente, você tem duas implantações para este aplicativo. Depois de uma pausa por volta das 11h00 de hoje, você deseja verificar alguns dados do Application Insights. Estás a ver:
    • Três instâncias no Mapa do Aplicativo com intervalos de tempo nas últimas 24 horas e Falhas, Desempenho e Métricas.
    • Duas instâncias no Mapa de Aplicativos com intervalos de tempo na última hora e Falhas, Desempenho e Métricas.
    • Duas instâncias no Live Metrics.

Próximos passos