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.

  1. 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.

    1. Abra o Windows PowerShell como Administrador.
    2. Navegue até o diretório de destino no qual o agente do APM foi provisionado.
    3. Execute o seguinte comando na console PowerShell:
      Import-Module ./OpenTelemetry.DotNet.Auto.psm1
  2. 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.

  3. 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
  4. Implante o agente de Dotnet do APM.

    Implante o agente Dotnet do APM nos seguintes aplicativos:

Implantar no Servidor IIS

Execute o seguinte comando na console PowerShell:
Register-OpenTelemetryForIIS

Implantar no Serviço do Windows

Execute o seguinte comando na console PowerShell:
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.

  1. 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.

  2. Execute o Aplicativo da Console.
    1. Abra um prompt de comando.

    2. Defina as variáveis de ambiente na etapa 1 no prompt de comando.

    3. 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.

  1. 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.

  2. Configure variáveis de ambiente adicionais executando o seguinte script:
    . $OTEL_DOTNET_AUTO_HOME/instrument.sh
  3. Execute o aplicativo.
    1. Abra uma sessão de shell.
    2. Defina variáveis ambientais da etapa 1 e da etapa 2 na sessão shell.
    3. 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.

  1. Adicionar repositório de gráficos helm.
    helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
    helm repo update
  2. Crie o namespace do Kubernetes para o operador OpenTelemetry.
    kubectl create namespace opentelemetry-operator-system
  3. 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.

Para instalar o gerenciador de certificados, execute o seguinte:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.17.1/cert-manager.yaml
Para instalar o operador OpenTelemetry, execute o seguinte:
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:

  1. 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:
    O CR criado pode ser consultado executando o seguinte comando:
    kubectl get otelinst -n opentelemetry-operator-system
    Todos os pontos finais e variáveis de ambiente precisam estar corretos para que a instrumentação automática funcione corretamente.
  2. 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:
  3. 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>
  4. 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.