Usar o Agente Java em processo do Application Insights no Azure Spring Apps

Observação

Azure Spring Apps é o novo nome do serviço Azure Spring Cloud. Embora o serviço tenha um novo nome, você verá o nome antigo em alguns locais 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 projeto Azure Monitor OpenTelemetry Distro/Application Insights no aplicativo Java de imagem nativa do Spring Boot em vez do agente Java do Application Insights.

Este artigo se aplica a: ✔️ Consumo Standard e dedicado (versão prévia) ✔️ Básico/Standard ✔️ Enterprise

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

Com esse recurso, é possível:

  • Pesquisar dados de rastreamento com diferentes filtros.
  • Exibir um mapa de dependência dos aplicativos do Spring.
  • Verificar o desempenho da solicitação.
  • Monitorar métricas dinâmicas em tempo real.
  • Verificar falhas de solicitação.
  • Verificar métricas de aplicativo.
  • Verificar logs do aplicativo.

O Application Insights pode apresentar muitas perspectivas observáveis, incluindo:

  • Mapa do aplicativo
  • Desempenho
  • Falhas
  • Métricas
  • Live Metrics
  • Disponibilidade
  • Logs

Usando o recurso Application Insights

Quando o recurso Application Insights estiver habilitado, você poderá:

  • 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 em Mapa do aplicativo para ver o status das chamadas entre aplicativos.

    Screenshot of the Azure portal that shows the Application Insights Application map page.

  • Selecione o link entre customers-service e petclinic para ver mais detalhes, como uma consulta do SQL.

  • Selecione um ponto de extremidade para ver todos os aplicativos que estão fazendo 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.

    Screenshot of the Azure portal that shows the Application Insights Performance page.

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

    Screenshot of the Azure portal that shows the Application Insights Failures page.

  • 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.

    Screenshot of the Azure portal that shows the Application Insights Metrics page.

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

    Screenshot of the Azure portal that shows the Application Insights Live Metrics page.

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

    Screenshot of the Azure portal that shows the Application Insights Availability page.

  • 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.

    Screenshot of the Azure portal that shows the Application Insights Logs page.

Gerenciar o Application Insights usando o portal do Azure

Habilite o agente em processo do Java usando o procedimento a seguir.

  1. Vá para a página serviço | Visão geral da 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. Escolha 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%).

    Screenshot of the Azure portal that shows the Azure Spring Apps instance with Application Insights page and Enable Application Insights checkbox highlighted.

  5. Selecione Salvar para salvar as alterações.

Observação

Não use a mesma instância do Application Insights em instâncias diferentes dos Aplicativos Spring do Azure 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. Habilitar o Insights aplicativo selecionando Editar vinculação ou o hiperlink Desvincular.

    Screenshot of the Azure portal Azure that shows the Azure Spring Apps instance with the Application Insights page and the 'Edit binding' option.

  3. Edite o Application Insights ou a Taxa de Amostragem e selecione Salvar.

Desabilitar o Application Insights

  1. Selecione Application Insights.

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

    Screenshot of the Azure portal that shows the Azure Spring Apps instance with the Application Insights page and the Unbind binding option.

Alterar as configurações do Application Insights

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

Screenshot of the Azure portal that shows the Azure Spring Apps instance with the Application Insights page.

Editar as associações de buildpack do Application Insights no Serviço Build

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

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

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

  1. Selecione o hiperlink Associado ou selecione Editar Associação na elipse para abrir e editar as associações de buildpack do Application Insights.

    Screenshot of the Azure portal that shows the Edit bindings for default builder pane.

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

    Screenshot of the Azure portal that shows the Edit binding pane.

Gerenciar o Application Insights usando a CLI do Azure

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

Habilitar 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 app-insights, você pode especificar um nome do Application Insights ou a ID do 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 a 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

Desabilitar 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

Verificar 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

A fim de atualizar o Application Insights para usar uma cadeia de conexão (preferencial) ou uma chave de instrumentação, use o comando a seguir:

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>

A fim de atualizar o Application Insights para usar o nome ou a ID do recurso, use o comando a seguir:

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

Desabilitar 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 de buildpack do Application Insights

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

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

Para criar uma associação de 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 de buildpack e encontrar as associações do Application Insights de tipo ApplicationInsights, use 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 de 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 de 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 de 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>

Automação

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

Bicep

Para implantar usando um arquivo Bicep, copie o conteúdo a seguir em um arquivo main.bicep. Para obter mais informações, confira 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 do ARM, copie o conteúdo a seguir em um arquivo azuredeploy.json. Para obter mais informações, confira 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, confira 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á com suporte pendente. A documentação é adicionada assim que estiver disponível.

Fazer upgrade/atualização do agente Java

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

Observação

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

  • Aplicativos existentes que usam o agente Java antes da atualização/atualização não são afetados.
  • Os aplicativos criados após a atualização/atualização usam a nova versão do agente Java.
  • Aplicativos existentes que não usavam anteriormente o agente Java exigem reinicialização ou reimplantação para usar a nova versão do agente Java.

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

Carregamento frequente da configuração do agente Java

Os Aplicativos Spring do Azure têm um mecanismo de carregamento frequente para ajustar as configurações de configuração do agente sem reiniciar aplicativos.

Observação

O mecanismo de carregamento frequente tem um atraso em minutos.

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

  • Se habilitar o agente Java, você deve reiniciar os aplicativos.

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

Comparação de conceito entre o Azure Spring Apps e o Application Insights

Azure Spring Apps Application Insights
App * Mapa do Aplicativo/Função
* Métricas dinâmicas/Função
* Falhas/Funções/Função da nuvem
* Desempenho/Funções/Função da nuvem
App Instance * Mapa do Aplicativo/Instância de função
* Métricas Dinâmicas/Nome do Serviço
* Falhas/Funções/Instância da nuvem
* Desempenho/Funções/Instância da nuvem

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

  • Você criar um novo aplicativo.
  • Você implantar um arquivo JAR ou código-fonte em um aplicativo existente.
  • Você inicia uma implantação azul/verde.
  • Você reiniciar o aplicativo.
  • Você interrompe a implantação de um aplicativo e o reinicia.

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

  • Você criou um aplicativo aproximadamente às 8h00 de hoje no Azure Spring Apps com o agente Java habilitado e depois implantou um arquivo JAR para este aplicativo aproximadamente às 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 um intervalo e ao voltar, aproximadamente às 11h00, você verifica alguns dados do Application Insights. Você verá:
    • Três instâncias no mapa do aplicativo com intervalos de tempo nas últimas 24 horas, Falhas, Desempenho e Métricas.
    • Uma instância no mapa do aplicativo com um intervalo de tempo na última hora, Falhas, Desempenho e Métricas.
    • Uma instância em Métricas Dinâmicas.
  • Você criou um aplicativo aproximadamente às 8h00 de hoje no Azure Spring Apps com o agente Java habilitado e depois implantou um arquivo JAR para este aplicativo aproximadamente às 8h10 de hoje. Aproximadamente às 8h30 de hoje, você tenta uma implantação azul/verde com outro arquivo JAR. No momento, você tem duas implantações para este aplicativo. Após um intervalo aproximadamente às 11h00 de hoje, você deseja verificar alguns dados do Application Insights. Você verá:
    • Três instâncias no mapa do aplicativo com intervalos de tempo nas últimas 24 horas, Falhas, Desempenho e Métricas.
    • Duas instâncias no mapa do aplicativo com intervalos de tempo na última hora, Falhas, Desempenho e Métricas.
    • Duas instâncias em Métricas Dinâmicas.

Próximas etapas