Compartilhar via


Tutorial: Configurar um contêiner sidecar para um aplicativo Linux no Serviço de Aplicativo do Azure

Neste tutorial, você adicionará um coletor OpenTelemetry como um contêiner sidecar a um aplicativo Linux (traga seu próprio código) no Serviço de Aplicativo do Azure. Para contêineres personalizados, confira Tutorial: Configurar um contêiner sidecar para contêiner personalizado no Serviço de Aplicativo do Azure.

Se você ainda não tiver uma conta do Azure, crie uma conta gratuita antes de começar.

Os contêineres sidecar no Serviço de Aplicativo permitem implantar serviços e recursos extras em seus aplicativos Linux sem acoplá-los fortemente ao contêiner principal interno ou personalizado. Os contêineres sidecar são executados juntamente com o contêiner do aplicativo principal no mesmo plano do Serviço de Aplicativo.

Você pode adicionar até nove contêineres sidecar para cada aplicativo Linux no App Service. Por exemplo, você pode adicionar serviços de monitoramento, registro em log, configuração e rede como contêineres sidecar. Um sidecar do coletor OpenTelemetry é um exemplo utilizado para monitoramento.

1. Configurar os recursos necessários

Primeiro, crie os recursos que o tutorial usa. Eles são usados para esse cenário específico e não são necessários para contêineres sidecar em geral.

  1. No Azure Cloud Shell, execute os seguintes comandos. Certifique-se de fornecer o <environment-name>.

    git clone https://github.com/Azure-Samples/app-service-sidecar-tutorial-prereqs
    cd app-service-sidecar-tutorial-prereqs
    azd env new <environment-name>
    azd provision
    
  2. Quando solicitado, forneça a assinatura e a região de sua escolha. Por exemplo:

    • Assinatura: sua assinatura.
    • Região: (Europa) Oeste da Europa.

    Ao concluir a implantação, você deverá visualizar a seguinte saída:

     APPLICATIONINSIGHTS_CONNECTION_STRING = InstrumentationKey=...;IngestionEndpoint=...;LiveEndpoint=...
     Azure container registry name = <registry-name>
     Managed identity resource ID = <managed-identity-resource-id>
     Managed identity client ID = <managed-identity-client-id>
    
     Open resource group in the portal: https://portal.azure.com/#@/resource/subscriptions/<subscription-id>/resourceGroups/<group-name>
     
  3. Copie esses valores de saída para versões posteriores. Você também pode encontrá-los no portal, nas páginas de gerenciamento dos respectivos recursos.

    Observação

    azd provision usa os modelos incluídos para criar os seguintes recursos do Azure:

    • Um grupo de recursos com base no nome do ambiente.
    • Um registro de contêiner com duas imagens implantadas:
      • Uma imagem Nginx com o módulo OpenTelemetry.
      • Uma imagem do coletor OpenTelemetry, configurada para exportar ao Azure Monitor.
    • Uma identidade gerenciada atribuída pelo usuário com a permissão AcrPull no grupo de recursos (para efetuar pull de imagens do registro).
    • Um workspace do Log Analytics.
    • Um componente do Application Insights.

2. Criar um aplicativo Web

Nesta etapa, você implantará um aplicativo ASP.NET Core de modelo. De volta ao Azure Cloud Shell, execute os seguintes comandos. Substitua <app-name> por um nome de aplicativo exclusivo.

cd ~
dotnet new webapp -n MyFirstAzureWebApp --framework net8.0
cd MyFirstAzureWebApp
az webapp up --name <app-name> --os-type linux

Após alguns minutos, esse aplicativo Web .NET é implantado como MyFirstAzureWebApp.dll em um novo aplicativo do Serviço de Aplicativo.

3. Adicionar um contêiner sidecar

Nesta seção, você adicionará um contêiner sidecar ao seu aplicativo Linux.

  1. No portal do Azure, navegue até a página de gerenciamento do aplicativos

  2. Na página de gerenciamento do aplicativo, no menu à esquerda, selecione Centro de Implantação.

  3. Selecione a barra de notificação Interessado em adicionar contêineres para serem executados junto com seu aplicativo? Clique aqui para experimentar.

  4. Quando a página for recarregada, selecione a guia Contêineres (novo).

  5. Selecione Adicionar e configure o novo contêiner da seguinte maneira:

    • Nome: coletor Otel
    • Fonte da imagem: Registro de Contêiner do Azure
    • Autenticação: Credenciais de Administrador
    • Registro: o registro criado por azd provision
    • Imagem: coletor Otel
    • Marca: mais recente
  6. Escolha Aplicar.

    Captura de tela mostrando como configurar um contêiner de sidecar no centro de implantação de um aplicativo Web.

4. Configurar variáveis de ambiente

Para o cenário de exemplo, o sidecar do coletor Otel é configurado para exportar os dados OpenTelemetry para o Azure Monitor, mas precisa da cadeia de conexão como uma variável de ambiente (consulte o arquivo de configuração OpenTelemetry para a imagem do coletor Otel).

Você configura variáveis de ambiente para os contêineres, como qualquer aplicativo do Serviço de Aplicativo, definindo as configurações do aplicativo. As configurações do aplicativo são acessíveis a todos os contêineres no aplicativo.

  1. Navegue até a página de gerenciamento do aplicativo do Serviço de Aplicativo.

  2. No menu do lado esquerdo, selecione Variáveis de ambiente.

  3. Adicione uma configuração de aplicativo selecionando Adicionar e configure-a da seguinte maneira:

    • Nome: APPLICATIONINSIGHTS_CONNECTION_STRING
    • Valor: a cadeia de conexão na saída de azd provision. Se você perdeu a sessão do Cloud Shell, também poderá encontrá-la na página Visão Geral do recurso Application Insight, em Cadeia de Conexão.
  4. Selecione Aplicar, em seguida Aplicar e, em seguida, Confirmar.

    Captura de tela mostrando a página Configuração de um aplicativo Web com duas configurações de aplicativo adicionadas.

5. Configurar instrumentação na inicialização

Nesta etapa, você criará a instrumentação para seu aplicativo de acordo com as etapas descritas na instrumentação de código zero do .NET do OpenTelemetry.

  1. De volta ao Cloud Shell, crie startup.sh com as linhas a seguir.

    cat > startup.sh << 'EOF'
    #!/bin/bash
    
    # Download the bash script
    curl -sSfL https://github.com/open-telemetry/opentelemetry-dotnet-instrumentation/releases/latest/download/otel-dotnet-auto-install.sh -O
    
    # Install core files
    sh ./otel-dotnet-auto-install.sh
    
    # Enable execution for the instrumentation script
    chmod +x $HOME/.otel-dotnet-auto/instrument.sh
    
    # Setup the instrumentation for the current shell session
    . $HOME/.otel-dotnet-auto/instrument.sh
    
    export OTEL_SERVICE_NAME="MyFirstAzureWebApp-Azure"
    export OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:4318"
    export OTEL_TRACES_EXPORTER="otlp"
    export OTEL_METRICS_EXPORTER="otlp"
    export OTEL_LOGS_EXPORTER="otlp"
    
    # Run your application with instrumentation
    OTEL_SERVICE_NAME=myapp OTEL_RESOURCE_ATTRIBUTES=deployment.environment=staging,service.version=1.0.0 dotnet /home/site/wwwroot/MyFirstAzureWebApp.dll
    EOF
    
  2. Implante esse arquivo em seu aplicativo com o seguinte comando da CLI do Azure. Se você ainda estiver no diretório ~/MyFirstAzureWebApp, nenhum outro parâmetro será necessário porque az webapp up já definiu os padrões para o grupo de recursos e o nome do aplicativo.

    az webapp deploy --src-path startup.sh --target-path /home/site/startup.sh --type static
    

    Dica

    Essa abordagem implanta o arquivo startup.sh separadamente do aplicativo. Dessa forma, a configuração de instrumentação é separada do código do aplicativo. No entanto, você pode usar outros métodos de implantação para implantar o script junto com seu aplicativo.

  3. De volta à página de gerenciamento do aplicativo, no menu esquerdo, selecione Configuração.

  4. Defina Comando de Inicialização como /home/site/startup.sh. É o mesmo caminho para o qual você fez a implantação na etapa anterior.

  5. Selecione Salvar e, em seguida, Continuar.

    Captura de tela que mostra como configurar um arquivo de inicialização personalizado para um aplicativo do Serviço de Aplicativo no portal do Azure.

5. Verificar no Application Insights

O sidecar do coletor Otel deve exportar dados para o Application Insights agora.

  1. De volta à guia do navegador para https://<app-name>.azurewebsites.net, atualizar a página algumas vezes para gerar algumas solicitações da Web.

  2. Volte para a página de visão geral do grupo de recursos e selecione o recurso do Application Insights que azd up criou. Agora você deve visualizar alguns dados nos gráficos padrão.

    Captura de tela da página Application Insights mostrando dados nos gráficos padrão.

Observação

Neste cenário de monitoramento muito comum, o Application Insights é apenas um dos destinos do OpenTelemetry que você poderá usar, como Jaeger, Prometheus e Zipkin.

6. Limpar recursos

Quando não precisar mais do ambiente, você poderá excluir os grupos de recursos e todos os recursos relacionados. Basta executar esses comandos no Cloud Shell:

cd ~/MyFirstAzureWebApp
az group delete --yes
cd ~/app-service-sidecar-tutorial-prereqs
azd down

Mais recursos