Implantar o Agente de Dotnet do APM
Ao provisionar com sucesso o agente de Rede de Pontos do APM, você poderá implantar o agente de Rede de Pontos do APM no Windows ou no Linux.
Implantar o Agente de Dotnet do APM no Windows
Ao provisionar com sucesso o agente de Rede de Pontos do APM, você poderá implantar o agente de Rede de Pontos do APM no Windows.
Para implantar o agente do Dotnet do APM em qualquer aplicativo, adicione um conjunto de variáveis de ambiente antes de iniciar o aplicativo.
- Prepare PowerShell.
Antes de implantar o agente Dotnet do APM no Windows, você precisa preparar PowerShell.
Observação
O PowerShell versão 5.1 ou mais recente é suportado.Se você tiver o PowerShell versão 4.0, será necessário atualizá-lo para o 5.1 para continuar.
- Abra o Windows PowerShell como Administrador.
- Navegue até o diretório de destino no qual o agente do APM foi provisionado.
- Execute o seguinte comando na console PowerShell:
Import-Module ./OpenTelemetry.DotNet.Auto.psm1
- Prepare variáveis ambientais em PowerShell.Revise as seguintes variáveis de ambiente necessárias para implantar o agente Dotnet do APM:
$env:OTEL_EXPORTER_OTLP_ENDPOINT="<data-upload-endpoint>/20200101/opentelemetry" $env:OTEL_EXPORTER_OTLP_HEADERS="Authorization=dataKey <private-data-key>" $env:OTEL_SERVICE_NAME="<service-name>"
Em que:- <data-upload-endpoint>: DataUploadEndpoint URL que é gerado quando o domínio do APM é criado. Para obter informações, consulte Obter Ponto Final de Upload de Dados e Chaves de Dados.
- <private-data-key>: A chave de instalação do agente usada pelos agentes de Dotnet do APM (dataKey privado) que é gerada quando o domínio do APM é criado. Para obter informações, consulte Obter Ponto Final de Upload de Dados e Chaves de Dados.
- <service-name>: O nome do serviço que está sendo monitorado. Isso permite filtrar por serviço e exibir rastreamentos na interface do usuário do Trace Explorer.
Por exemplo:$env:OTEL_EXPORTER_OTLP_ENDPOINT="https://aaaaaaaaaaaaaaaaaaaaaa.apm-agt.us-phoenix-1.oci.oraclecloud.com/20200101/opentelemetry" $env:OTEL_EXPORTER_OTLP_HEADERS="Authorization=dataKey CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCB" $env:OTEL_SERVICE_NAME="myservice"
Você pode adicionar mais variáveis de ambiente, se necessário. Por exemplo, se você precisar configurar a injeção do agente do navegador ou o rastreamento resumido. O nome da variável de ambiente deve usar o prefixo
$env:
e o valor da variável de ambiente deve estar entre aspas duplas""
.Melhores Práticas: Execute o histórico claro após implantar o agente do APM .NET. Isso limpa dados confidenciais, como chave de dados privada, do histórico PowerShell.
- Opcional - Registre DLLs do .NET Framework no GAC.
Esta etapa é exigida somente pelos aplicativos do framework .NET. Se você não tiver o aplicativo .NET Framework, ignore esta etapa.
Para registrar DLLs do .NET Framework no GAC, faça o seguinte:Register-OpenTelemetryDllsToGac
- Implante o agente de Dotnet do APM.
Implante o agente Dotnet do APM nos seguintes aplicativos:
Implantar no Servidor IIS
Register-OpenTelemetryForIIS
Implantar no Serviço do Windows
Register-OpenTelemetryForWindowsService -WindowsServiceName <WindowsServiceName>
Implantar no Aplicativo da Console
Aqui estão informações sobre como implantar o agente do Dotnet do APM no Aplicativo da Console.
- Prepare as variáveis de ambiente para implantar o agente Dotnet do APM.
Revise as seguintes variáveis de ambiente necessárias para implantar o agente do Dotnet do APM para o aplicativo da console:
set COR_ENABLE_PROFILING=1 set COR_PROFILER={918728DD-259F-4A6A-AC2B-B85E1B658318} set COR_PROFILER_PATH_64=<destination>\win-x64\OpenTelemetry.AutoInstrumentation.Native.dll set COR_PROFILER_PATH_32=<destination>\win-x86\OpenTelemetry.AutoInstrumentation.Native.dll set CORECLR_ENABLE_PROFILING=1 set CORECLR_PROFILER={918728DD-259F-4A6A-AC2B-B85E1B658318} set CORECLR_PROFILER_PATH_64=<destination>\win-x64\OpenTelemetry.AutoInstrumentation.Native.dll set CORECLR_PROFILER_PATH_32=<destination>\win-x86\OpenTelemetry.AutoInstrumentation.Native.dll set DOTNET_ADDITIONAL_DEPS=<destination>\AdditionalDeps set DOTNET_SHARED_STORE=<destination>\store set DOTNET_STARTUP_HOOKS=<destination>\net\OpenTelemetry.AutoInstrumentation.StartupHook.dll set ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=OpenTelemetry.AutoInstrumentation.AspNetCoreBootstrapper set OTEL_DOTNET_AUTO_HOME=<destination> set OTEL_DOTNET_AUTO_TRACES_ADDITIONAL_SOURCES=OpenTelemetry.ODP set OTEL_SERVICE_NAME=<service-name> set OTEL_LOGS_EXPORTER=none set OTEL_DOTNET_AUTO_EXCLUDE_PROCESSES=dotnet.exe,dotnet set OTEL_EXPORTER_OTLP_ENDPOINT=<data-upload-endpoint>/20200101/opentelemetry set OTEL_EXPORTER_OTLP_HEADERS=Authorization=dataKey <private-data-key> set OTEL_DOTNET_ENABLE_BACKGROUND_ODP=true set OTEL_DOTNET_ENABLE_CONNECTION_ODP=true
Os seguintes valores devem ser substituídos pelos valores corretos:
Placeholder Descrição <destino> O diretório de destino no qual o Agente de Dotnet do APM é provisionado. Por exemplo: C:\tracer-home
<nome do serviço> O nome do serviço que está sendo monitorado. Isso permite filtrar por serviço e exibir rastreamentos na interface do usuário do Trace Explorer.
Por exemplo: apm_service
<data-upload-endpoint> O URL dataUploadEndpoint que é gerado quando o domínio do APM é criado. Por exemplo: https://dataUploadEndpoint.com
<chave de dados privada> A chave de instalação do agente usada pelo agente Dotnet do APM (dataKey privado), que é gerada quando o domínio do APM é criado. Por exemplo: IMWJ5UN2C
Observação
Para obter informações sobre o ponto final de upload de dados e as chaves de dados privadas, consulte Obter Ponto Final de Upload de Dados e Chaves de Dados.
- Execute o Aplicativo da Console.
-
Abra um prompt de comando.
-
Defina as variáveis de ambiente na etapa 1 no prompt de comando.
-
No mesmo prompt de comando, execute seu aplicativo de console.
-
Implantar o Agente de Dotnet do APM no Linux
Ao provisionar com sucesso o agente de Rede de Pontos do APM, você pode implantar o agente de Rede de Pontos do APM no Linux.
Para implantar o agente Dotnet do APM em qualquer aplicativo, adicione um conjunto de variáveis de ambiente antes de iniciar o aplicativo.
- Preparar Variáveis Ambientais
Para implantar o agente Dotnet do APM em qualquer aplicativo, você precisa definir e exportar variáveis.
Revise e defina as seguintes variáveis de ambiente necessárias para implantar o agente Dotnet do APM:export OTEL_DOTNET_AUTO_HOME=<destination> export OTEL_DOTNET_AUTO_TRACES_ADDITIONAL_SOURCES=OpenTelemetry.ODP export OTEL_SERVICE_NAME=<service-name> export OTEL_LOGS_EXPORTER=none export OTEL_EXPORTER_OTLP_ENDPOINT=<data-upload-endpoint>/20200101/opentelemetry export OTEL_EXPORTER_OTLP_HEADERS="Authorization=dataKey <private-data-key>"
Os seguintes valores devem ser substituídos pelos valores corretos:
Placeholder Descrição <destino> O diretório de destino no qual o Agente de Dotnet do APM é provisionado. <nome do serviço> O nome do serviço que está sendo monitorado. Isso permite filtrar por serviço e exibir rastreamentos na interface do usuário do Trace Explorer.
Por exemplo: apm_service
<data-upload-endpoint> O URL dataUploadEndpoint que é gerado quando o domínio do APM é criado. Por exemplo: https://dataUploadEndpoint.com
Para obter informações, consulte Obter Ponto Final de Upload de Dados e Chaves de Dados.
<chave de dados privada> A chave de instalação do agente usada pelo agente de Dotnet do APM (dataKey privado) que é gerada quando o domínio do APM é criado. Por exemplo: IMWJ5UN
Para obter informações, consulte Obter Ponto Final de Upload de Dados e Chaves de Dados.
- Configure variáveis de ambiente adicionais executando o seguinte script:
. $OTEL_DOTNET_AUTO_HOME/instrument.sh
- Execute o aplicativo.
- Abra uma sessão de shell.
- Defina variáveis ambientais da etapa 1 e da etapa 2 na sessão shell.
- Na mesma sessão, execute seu aplicativo.
Implantar o Agente de Dotnet do APM no Kubernetes usando o Operador OpenTelemetry
Veja informações sobre como implantar um agente Dotnet do APM usando o operador OpenTelemetry para injetar e configurar automaticamente o agente Dotnet do APM nos pods do aplicativo Dotnet nos clusters do Kubernetes (K8s).
Você pode usar o agente Dotnet do APM para monitorar os aplicativos Dotnet. O operador OpenTelemetry é usado para implantar o agente Dotnet do APM e é uma implementação de um operador K8s que fornece uma maneira fácil de injetar automaticamente agentes Dotnet em aplicativos Dotnet executados em pods K8s.
Pré-requisitos
Instale o Operador OpenTelemetry no cluster K8s.
Há três opções diferentes disponíveis para escolha: Gráfico de helm do operador, Manifesto de release do operador ou Hub do Operador.
Na maioria dos casos, um cert-manager deve ser instalado. Se a opção de gráfico helm for usada, haverá uma opção para gerar um certificado autoassinado.
Opção 1: Gráfico helm do operador
Esta opção é usar o gráfico helm para instalar o operador OpenTelemetry.
- Adicionar repositório de gráficos helm.
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts helm repo update
- Crie o namespace do Kubernetes para o operador OpenTelemetry.
kubectl create namespace opentelemetry-operator-system
- Instalar operador OpenTelemetry.
helm install opentelemetry-operator open-telemetry/opentelemetry-operator \ --namespace opentelemetry-operator-system \ --set "manager.collectorImage.repository=otel/opentelemetry-collector-k8s"\ --set admissionWebhooks.certManager.enabled=false\ --set admissionWebhooks.autoGenerateCert.enabled=true
Opção 2: Manifesto de release do operador
Esta opção é usar arquivos YAML para instalar o operador OpenTelemetry.
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.17.1/cert-manager.yaml
kubectl apply -f https://github.com/open-telemetry/opentelemetry-operator/releases/latest/download/opentelemetry-operator.yaml
Implantar o Agente de Dotnet do APM
Para implantar o agente Dotnet do APM, siga estas etapas:
- Criar um Recurso Personalizado (CR) do Kubernetes.
Para gerenciar a instrumentação automática, o Operador OpenTelemetry precisa receber informações sobre o agente de Dotnet do APM e sua configuração, que é feita usando a CRD (Definição de Recurso Personalizado).
Este Recurso Personalizado será usado pelo operador para copiar o agente no pod e adicionar a ele a configuração necessária.
Execute o seguinte comando para criar o CR no cluster do Kubernetes:
kubectl apply -f - <<EOF apiVersion: opentelemetry.io/v1alpha1 kind: Instrumentation metadata: name: inst-apm-dotnet namespace: opentelemetry-operator-system spec: dotnet: image: us-ashburn-1.ocir.io/idpyjkbcc9tk/apm-net-agent:latest env: - name: OTEL_EXPORTER_OTLP_ENDPOINT value: <data-upload-endpoint>/20200101/opentelemetry - name: OTEL_EXPORTER_OTLP_HEADERS value: "Authorization=dataKey <private-data-key>" - name: OTEL_LOGS_EXPORTER value: "none" - name: OTEL_DOTNET_AUTO_TRACES_ADDITIONAL_SOURCES value: "OpenTelemetry.ODP" EOF
Em que:- <data-upload-endpoint> é o URL do ponto final de upload de dados que é gerado quando o domínio do APM é criado. Para obter informações, consulte Obter Ponto Final de Upload de Dados e Chaves de Dados.
- <private-data-key> é a chave de dados privada de instalação do agente Dotnet do APM que é gerada quando o domínio do APM é criado. Para obter informações, consulte Obter Ponto Final de Upload de Dados e Chaves de Dados.
O CR criado pode ser consultado executando o seguinte comando:
Todos os pontos finais e variáveis de ambiente precisam estar corretos para que a instrumentação automática funcione corretamente.kubectl get otelinst -n opentelemetry-operator-system
- Adicione a anotação do Kubernetes.
O operador OpenTelemetry usa a anotação do Kubernetes para decidir quais pods devem ser injetados automaticamente com o agente Dotnet do APM.
A anotação pode ser adicionada a um namespace. Nesse caso, todos os pods dentro desse namespace serão injetados. A anotação também pode ser adicionada a objetos PodSpec individuais, disponíveis como parte da Implantação, Statefulset e outros recursos.
Anotação para x64 glibc:annotations: instrumentation.opentelemetry.io/inject-dotnet: opentelemetry-operator-system/inst-apm-dotnet
Anotação para x64 musl:annotations: instrumentation.opentelemetry.io/inject-dotnet: opentelemetry-operator-system/inst-apm-dotnet instrumentation.opentelemetry.io/otel-dotnet-auto-runtime: linux-musl-x64
Para começar a editar seu namespace, faça o seguinte:- Execute o comando:
kubectl edit namespace <your-namespace-name>
- Depois de executar o comando acima, edite o namespace assim que o editor for aberto. Por exemplo, usando o editor
vi
. - Adicione a anotação ao namespace. Lembre-se de que o recuo é muito importante para torná-lo um arquivo YAML válido.
Veja abaixo um exemplo de namespace com a anotação adicionada:apiVersion: v1 kind: Namespace metadata: labels: kubernetes.io/metadata.name: mynamespace annotations: instrumentation.opentelemetry.io/inject-dotnet: "opentelemetry-operator-system/inst-apm-dotnet" name: mynamespace spec:
- Execute o comando:
- Reinicie o pod do Kubernetes.
Para reiniciar o pod no qual você deseja injetar automaticamente o agente de Dotnet do APM, execute o seguinte:
kubectl delete pod <your-pod-name> -n <your-namespace-name>
- Verifique o pod do Kubernetes.
Para verificar se seu pod foi injetado automaticamente com o agente Dotnet do APM após ser reiniciado, execute o seguinte:
kubectl get pod <your-pod-name> -n <your-namespace-name> -o yaml
Agora você pode ir para a próxima etapa: Verificar Implantação do Agente de Dotnet do APM.