Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Neste tutorial, você adicionará um coletor OpenTelemetry como um contêiner sidecar a um aplicativo de contêiner personalizado do Linux no Serviço de Aplicativo do Azure. Para aplicativos Linux de código próprio, consulte Tutorial: Configurar um contêiner de sidecar para um aplicativo Linux 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.
O que é um contêiner de sidecar?
No Serviço de Aplicativo do Azure, você pode adicionar até nove contêineres sidecar para cada aplicativo Linux. Os contêineres sidecar permitem implantar serviços e recursos extras em seus aplicativos Linux sem torná-los firmemente acoplados ao contêiner principal (interno ou personalizado). 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 desses exemplos de monitoramento.
Os contêineres sidecar são executados junto ao contêiner do aplicativo principal no mesmo plano do Serviço de Aplicativo.
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.
No Azure Cloud Shell, execute os seguintes comandos:
git clone https://github.com/Azure-Samples/app-service-sidecar-tutorial-prereqs cd app-service-sidecar-tutorial-prereqs azd env new my-sidecar-env azd provision
Quando solicitado, forneça a assinatura e a região desejadas. 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=... Open resource group in the portal: https://portal.azure.com/#@/resource/subscriptions/.../resourceGroups/...
Abra o link do grupo de recursos em uma guia do navegador. Você precisará usar a cadeia de conexão mais tarde.
Observação
azd provision
usa os modelos incluídos para criar os seguintes recursos do Azure:- Um grupo de recursos chamado my-sidecar-env_group.
- 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.
- Um espaço de trabalho do análise de logs
- UmComponente do Application Insights
2. Criar um aplicativo habilitado para sidecar
Na página de gerenciamento do grupo de recursos, selecione Criar.
Pesquise por aplicativo Web e selecione a seta para baixo em Criar e selecione Aplicativo Web.
Configure o painel Básico da seguinte maneira:
- Nome: um nome exclusivo
- Publicar: Contêiner
- Sistema Operacional: Linux
-
Região: mesma região que a que você escolheu com
azd provision
- Plano do Linux: um novo plano do Serviço de Aplicativo
Selecione Contêiner. Configure o painel Contêiner da seguinte maneira:
- Suporte ao sidecar: habilitado
- Fonte da imagem: Registro de Contêiner do Azure
-
Registro: o registro criado por
azd provision
- Imagem: nginx
- Marca: mais recente
- Porta: 80
Observação
Essas configurações são configuradas de forma diferente em aplicativos habilitados para sidecar. Para obter mais informações, consulte Quais são as diferenças entre contêineres personalizados com suporte para sidecar?.
Selecione Examinar + criare Criar.
Assim que a implantação for concluída, selecione Ir para o recurso.
Em uma nova guia do navegador, navegue até
https://<app-name>.azurewebsites.net
e confira a página padrão do Nginx.
3. Adicione um contêiner sidecar
Nesta seção, você adicionará um contêiner sidecar ao seu aplicativo de contêiner personalizado.
Na página de gerenciamento do aplicativo, no menu à esquerda, selecione Centro de Implantação.
O centro de implantação mostra todos os contêineres no aplicativo. No momento, ele só tem o contêiner principal.
Selecione Adicionar e configure o novo contêiner da seguinte maneira:
- Nome: coletor Otel
- Fonte da imagem: Registro de Contêiner do Azure
-
Registro: o registro criado por
azd provision
- Imagem: coletor Otel
- Marca: mais recente
Escolha Aplicar.
Agora você deve visualizar dois contêineres no centro de implantação. O contêiner principal está marcado como Principal e o contêiner sidecar está marcado como Sidecar. Cada aplicativo deve ter um contêiner principal, mas pode ter vários contêineres sidecar.
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.
Na página de gerenciamento do aplicativo, 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 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.
Selecione Aplicar, em seguida Aplicar e, em seguida, Confirmar.
Observação
Determinadas configurações de aplicativo não se aplicam a aplicativos habilitados para sidecar. Para obter mais informações, confira Quais são as diferenças dos contêineres personalizados habilitados para sidecar?
5. Verificar no Application Insights
O sidecar do coletor Otel deve exportar dados para o Application Insights agora.
De volta à guia do navegador para
https://<app-name>.azurewebsites.net
, atualizar 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, em seguida, selecione o recurso do Application Insights. Agora você deve visualizar alguns 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.
Limpar os recursos
Quando você não precisar mais do ambiente, poderá excluir o grupo de recursos, o serviço de aplicativo e todos os recursos relacionados. Basta executar este comando no Cloud Shell, no repositório clonado:
azd down
Perguntas frequentes
- Quais são as diferenças dos contêineres personalizados habilitados para sidecar?
- Como os contêineres sidecar lidam com a comunicação interna?
- Um contêiner sidecar pode receber solicitações da Internet?
Quais são as diferenças dos contêineres personalizados habilitados para sidecar?
Você configura aplicativos habilitados para sidecar de forma diferente dos aplicativos que não estão habilitados para sidecar.
Não habilitado para sidecar
- O nome e os tipos do contêiner são configurados diretamente com
LinuxFxVersion=DOCKER|<image-details>
(veja az webapp config set --linux-fx-version). - O contêiner principal é configurado com configurações de aplicativo, como:
DOCKER_REGISTRY_SERVER_URL
DOCKER_REGISTRY_SERVER_USERNAME
DOCKER_REGISTRY_SERVER_PASSWORD
WEBSITES_PORT
Habilitado para sidecar
- Um aplicativo habilitado para sidecar é designado por
LinuxFxVersion=sitecontainers
(consulte az webapp config set --linux-fx-version). - O contêiner principal é configurado com um recurso sitecontainers . Essas configurações não são aplicáveis a aplicativos habilitados para sidecar
DOCKER_REGISTRY_SERVER_URL
DOCKER_REGISTRY_SERVER_USERNAME
DOCKER_REGISTRY_SERVER_PASSWORD
WEBSITES_PORT
Como os contêineres sidecar lidam com a comunicação interna?
Os contêineres sidecar compartilham o mesmo host de rede que o contêiner principal, portanto, o contêiner principal (e outros contêineres sidecar) pode acessar qualquer porta no sidecar com localhost:<port>
. O exemplo startup.sh usa localhost:4318
para acessar a porta 4318 no sidecar otel-collector.
Na caixa de diálogo Editar contêiner, a caixa Porta não é usada atualmente pelo Serviço de Aplicativo. Você pode usá-la como parte dos metadados do sidecar, por exemplo, para indicar qual porta o sidecar está escutando.
Um contêiner sidecar pode receber solicitações da Internet?
Não. O Serviço de Aplicativo roteia solicitações de Internet apenas para o contêiner principal. Para aplicativos Linux baseados em código, o contêiner interno do Linux é o contêiner principal e qualquer contêiner sidecar (sitecontainers) deve ser adicionado com IsMain=false
. Para contêineres personalizados, todos, exceto um dos sitecontainers , devem ter IsMain=false
.
Para obter mais informações sobre como configurar IsMain
, consulte Microsoft.Web sites/sitecontainers.
Como fazer para usar montagens de volume?
O recurso montagens de volume permite que você compartilhe arquivos e diretórios não persistentes entre contêineres em seu Aplicativo Web.
Sub-caminho de volume: esse é um caminho de diretório lógico que é criado automaticamente e não é referenciado dentro do contêiner. Contêineres configurados com o mesmo sub-caminho de volume podem compartilhar arquivos e diretórios uns com os outros.
Caminho de montagem do contêiner: Isso corresponde a um caminho de diretório que você faz referência dentro do contêiner. O caminho de montagem do contêiner é mapeado para o subcaminho do volume.
Por exemplo, suponha que as seguintes montagens de volume estejam configuradas:
Nome do sidecar | Subcaminho do volume | Caminho de montagem do contêiner | Somente leitura |
---|---|---|---|
Contêiner1 | /directory1/directory2 | /container1Vol | Falso |
Contêiner2 | /directory1/directory2 | /container2Vol | Verdade |
Contêiner3 | /diretório1/diretório2/diretório3 | /container3Vol | Falso |
Contêiner4 | /directory4 | /container1Vol | Falso |
Com base nessas configurações, as seguintes condições se aplicam:
- Se Container1 criar /container1Vol/myfile.txt, Container2 poderá ler o arquivo por meio de /container2Vol/myfile.txt.
- Se Container1 criar /container1Vol/directory3/myfile.txt, Container2 poderá ler o arquivo por meio de /container2Vol/directory3/myfile.txte Container3 poderá ler e gravar no arquivo por meio de /container3Vol/myfile.txt.
- O Container4 não compartilha uma montagem de volume em comum com nenhum dos outros contêineres.
Observação
Para aplicativos do Linux baseados em código, o contêiner interno do Linux não pode usar montagens de volume.