Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Neste tutorial, adiciona um coletor OpenTelemetry como um contentor sidecar a uma aplicação Linux (traga o seu próprio código) no Serviço de Aplicações do Azure. Para contêineres personalizados, consulte Tutorial: Configurar um contêiner sidecar para contêiner personalizado no Serviço de Aplicações do Azure.
Se não tiver uma conta do Azure, crie uma conta gratuita antes de começar.
Os contêineres de sidecar no App Service permitem implementar serviços e funcionalidades adicionais nas suas aplicações Linux sem uma dependência rígida ao contêiner principal interno ou personalizado. Os contêineres sidecar são executados ao lado do contêiner de aplicativo principal no mesmo plano do App Service.
Você pode adicionar até nove contêineres sidecar para cada aplicação Linux no App Service. Por exemplo, pode adicionar serviços de monitorização, registo, configuração e rede como contentores sidecar. Um sidecar coletor OpenTelemetry é um exemplo de monitoramento.
1. Configure os recursos necessários
Primeiro, cria os recursos que o tutorial usa. Eles são usados para este cenário específico e não são necessários para contêineres de sidecar em geral.
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 provisionQuando solicitado, forneça a assinatura e a região à sua escolha. Por exemplo:
- Subscrição: A sua subscrição.
- Região: (Europa) Europa Ocidental.
Quando a implementação estiver concluída, deverá ver o seguinte resultado:
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>
Copie estes valores de saída para mais tarde. Pode também encontrá-los no portal, nas páginas de gestão dos respetivos recursos.
Nota
azd provisionusa os modelos incluídos para criar os seguintes recursos do Azure:- Um grupo de recursos com base no nome do ambiente.
- Um registo de contentores com duas imagens implementadas:
- Uma imagem Nginx com o módulo OpenTelemetry .
- Uma imagem de coletor OpenTelemetry configurada para exportar para o Azure Monitor.
- Uma identidade gerenciada atribuída pelo usuário com a permissão
AcrPullno grupo de recursos (para extrair imagens do registo). - Um workspace do Log Analytics.
- Um componente do Application Insights .
2. Criar uma aplicação Web
Nesta etapa, implementa uma aplicação de modelo ASP.NET Core. Execute os seguintes comandos no Azure Cloud Shell. Substitua <app-name> por um nome de aplicação globalmente único e eastus pela sua região preferida.
Crie o aplicativo de exemplo:
cd ~ dotnet new webapp -n MyFirstAzureWebApp --framework net8.0 cd MyFirstAzureWebAppCrie o grupo de recursos, o plano de serviços de aplicações Linux e a aplicação web:
az group create --name myWebAppResourceGroup --location eastus az appservice plan create --name myWebAppPlan --resource-group myWebAppResourceGroup --sku P0v3 --is-linux az webapp create --name <app-name> --resource-group myWebAppResourceGroup --plan myWebAppPlan --runtime "DOTNETCORE:8.0"Construa a aplicação e empacote o conteúdo do diretório de publicação:
dotnet publish --configuration Release --output publish cd publish zip -r ../app.zip . cd ..Implementar o pacote.
az webapp deploy --name <app-name> --resource-group myWebAppResourceGroup --src-path app.zip --type zip
Após alguns minutos, a aplicação Web .NET é publicada como MyFirstAzureWebApp.dll na nova aplicação App Service.
3. Adicione um contentor sidecar
Nesta secção, adiciona um contentor sidecar à sua aplicação Linux.
No Azure portal, navegue até a página de gerenciamento do aplicativo
Na página de gerenciamento do aplicativo, no menu à esquerda, selecione Deployment Center.
Selecione o banner Interessado em adicionar contêineres para serem executados ao lado do seu aplicativo? Clique aqui para experimentar.
Quando a página for recarregada, selecione o separador Contentores (novo).
Selecione Adicionar e configure o novo contêiner da seguinte maneira:
- Designação: otel-collector
- Origem da imagem: Azure Container Registry
- Autenticação: Credenciais de administrador
-
Registo: O registo criado por
azd provision - Imagem: otel-collector
- Tag: mais recente
Selecione Aplicar.
4. Configurar variáveis de ambiente
Para o cenário de exemplo, o sidecar do otel-collector está configurado para exportar os dados do OpenTelemetry para o Azure Monitor, mas precisa da cadeia de ligação como uma variável de ambiente (consulte o ficheiro de configuração do OpenTelemetry para a imagem do otel-collector).
Você configura variáveis de ambiente para os contêineres como qualquer aplicação do App Service, definindo definições da aplicação. As configurações da aplicação são acessíveis a todos os contentores na aplicação.
Navegue até à página de gestão da aplicação do App Service.
No menu à esquerda, selecione Variáveis de ambiente.
Adicione uma configuração de aplicativo selecionando Adicionar e configure-a da seguinte maneira:
- Nome: APPLICATIONINSIGHTS_CONNECTION_STRING
-
Valor: a cadeia de ligaçã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.
Selecione Aplicar, depois Aplicar, depois Confirmar.
5. Configure a instrumentação no arranque
Nesta etapa, cria a instrumentação para a sua aplicação de acordo com os passos descritos em OpenTelemetry .NET zero-code instrumentation.
De volta ao Cloud Shell, crie startup.sh com as seguintes linhas.
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 EOFImplante este ficheiro na sua aplicação com o seguinte comando da CLI do Azure. Substitui
<app-name>pelo nome que usaste ao criar a aplicação.az webapp deploy --resource-group myWebAppResourceGroup --name <app-name> --src-path startup.sh --target-path /home/site/startup.sh --type staticGorjeta
Esta abordagem implanta o arquivo startup.sh separadamente da sua aplicação. Dessa forma, a configuração da instrumentação é separada do código da aplicação. No entanto, pode usar outros métodos de implantação para implantar o script junto com a sua aplicação.
De volta à página de gestão da aplicação, no menu à esquerda, selecione Configuration.
Defina Comando de arranque como /home/site/startup.sh. É o mesmo caminho que implementou na etapa anterior.
Selecione Guardar e, em seguida, Continuar.
5. Verifique no Application Insights
O sidecar otel-collector deve exportar dados para o Application Insights agora.
De volta à guia do navegador para
https://<app-name>.azurewebsites.net, atualize a página algumas vezes para gerar algumas solicitações da Web.Volte para a página de visão geral do grupo de recursos e selecione o recurso do Application Insights que
azd upcriou. Agora deverá ver alguns dados nos gráficos predefinidos.
Nota
Neste cenário de monitorização muito comum, o Application Insights é apenas um dos destinos OpenTelemetry que pode utilizar, como Jaeger, Prometheus e Zipkin.
6. Limpar os recursos
Quando já não precisar do ambiente, pode eliminar os grupos de recursos e todos os recursos relacionados. Basta executar estes comandos no Cloud Shell:
cd ~/MyFirstAzureWebApp
az group delete --name myWebAppResourceGroup --yes
cd ~/app-service-sidecar-tutorial-prereqs
azd down