Integrar o agente Python no Microsoft Azure contêiner Apps e App Service
visualização
Ainda estamos trabalhando nesse recurso, mas adoraríamos que você experimentasse!
Atualmente, esse recurso é fornecido como parte de um programa de visualização de acordo com nossas políticas de pré-lançamento.
Este documento fornece soluções sobre a integração New Relic ao aplicativo Python hospedado no Azure sem precisar modificar o código do aplicativo. Há duas instâncias suportadas desse recurso:
O suporte para integração do New Relic para App Services usando imagens em contêineres não está disponível.
Compatibilidade e requisitos
Antes de começar, recomendamos o seguinte:
Começando com um contêiner App ou App Service que foi implantado
Instalando o Azure CLI em seu ambiente se não estiver usando o Portal do Azure
Informações
Tenha em mente que o agente Python não captura telemetria para o Azure Functions sem nossa integração. Recomendamos instalar a integração de monitoramento do Azure Functions se você quiser coletar dados sobre o Azure Functions.
Integrar o agente Python em aplicativos de contêiner
Em certos casos, um aplicativo gerenciado pelo Azure contêiner Apps já possui uma imagem que não pode ser modificada pelo usuário (ou o usuário pode simplesmente não querer modificar o aplicativo). Isso fornece uma maneira de integrar o New Relic ao ambiente sem precisar fazer nenhuma modificação no código que cria a imagem em contêiner.
Isso pode ser feito por meio do Portal do Azure ou da CLI do Azure.
Na seção "contêiner image", clique em "Add" e selecione "Init contêiner"
Insira o seguinte:
Nome do contêiner init desejado
docker Hub ou outros registros" para "Fonte da imagem"
newrelic/newrelic-python-init em "Imagem e tag"
/bin/sh para "Substituição de comando"
-c, cp -r /instrumentation /mnt/ para "Substituição de argumentos"
Núcleos de CPU e memória desejados. Este não deve exceder o do contêiner primário.
Vá para a aba "Montagens de volume" e selecione a montagem de volume criada nas etapas anteriores. O caminho de montagem deve ser /mnt/instrumentation.
az containerapp show --name $CONTAINER_APP_NAME --resource-group $RESOURCE_GROUP --output yaml > demoapp.yaml
Este arquivo produzirá um arquivo de modelo parcial que contém informações sobre o aplicativo de contêiner. Informações adicionais precisarão ser adicionadas para vincular o New Relic ao aplicativo.
Montar volume no aplicativo de contêiner
Em propriedades > modelo, haverá uma seção chamada volumes. Agora mesmo, isso diz volumes: null. Substituiremos essa linha por estas linhas:
bash
$
volumes:
$
- name: $VOLUME_NAME
$
storageName: $STORAGE_MOUNT_NAME
$
storageType: AzureFile
Onde $STORAGE_MOUNT_NAME é o que foi usado na Etapa 2 e $VOLUME_NAME é um nome de sua escolha
Adicionar contêiner init
Em propriedades > modelo, haverá uma seção chamada initContainers. Agora mesmo, isso diz initContainers: null. Substituiremos essa linha por estas linhas:
bash
$
initContainers:
$
- args:
$
- -c
$
- cp-r /instrumentation /mnt/
$
command:
$
- /bin/sh
$
image: docker.io/newrelic/newrelic-python-init
$
name: nr-init-container
Volume do link para o contêiner
Em propriedades > modelo, agora temos as seções containers e initContainers . Dentro de cada uma dessas seções, adicione as seguintes linhas:
bash
$
volumeMounts:
$
- mountPath: /mnt/instrumentation
$
volumeName: $VOLUME_NAME
Onde $VOLUME_NAME é o nome escolhido anteriormente
Atualizar aplicativo de contêiner com nova configuração
az containerapp update --name $CONTAINER_APP_NAME --resource-group $RESOURCE_GROUP --yaml demoapp.yaml
Isso deverá reimplantar o aplicativo contêiner. Aguarde alguns minutos para que o contêiner init termine de ser executado.
Integrar o agente Python no Azure App Service
Atualmente, os App Services oferecem suporte apenas a sidecars, mas não a init contêiner. Até que esse suporte esteja disponível, este script de pré-compilação pode ser usado. Observação: isso só funciona para serviços de aplicativo que usam código e não para imagens em contêineres.
Isso pode ser feito por meio do Portal do Azure ou da CLI do Azure:
Se uma versão específica do agente for desejada, adicione a variável de ambiente AGENT_VERSION com o número da versão, precedido por v (por exemplo v10.0.0).
Adicionar prebuild.sh como uma configuração de arquivo de inicialização
az webapp config appsettings set --name ${WEB_APP_NAME} --resource-group ${RESOURCE_GROUP} --settings NEW_RELIC_LICENSE_KEY=$NEW_RELIC_LICENSE_KEY NEW_RELIC_AZURE_OPERATOR_ENABLED=true NEW_RELIC_APP_NAME="Azure Service App" PYTHONPATH="/home:/home/workspace/newrelic"
Se uma versão específica do agente for desejada, adicione a variável de ambiente AGENT_VERSION com o número da versão, precedido por v (por exemplo v10.0.0) conforme mostrado no exemplo abaixo:
az webapp config appsettings set --name ${WEB_APP_NAME} --resource-group ${RESOURCE_GROUP} --settings AGENT_VERSION=v10.0.0
Adicionar prebuild.sh como uma configuração de arquivo de inicialização
az webapp config set --resource-group ${RESOURCE_GROUP} --name ${WEB_APP_NAME} --startup-file "/home/prebuild.sh"
Isso levará alguns minutos.
Resolução de problemas
Em alguns casos, a telemetria pode não estar disponível ou o script prebuild.sh pode fazer com que o aplicativo existente falhe na reimplantação. Para remediar isso, habilite estas variáveis de ambiente: