Despliegue del agente Dotnet de APM
Al aprovisionar correctamente el agente Dotnet de APM, puede desplegar el agente Dotnet de APM en Windows o Linux.
Despliegue del agente Dotnet de APM en Windows
Al aprovisionar correctamente el agente Dotnet de APM, puede desplegar el agente Dotnet de APM en Windows.
Para desplegar el agente Dotnet de APM en cualquier aplicación, debe agregar un juego de variables de entorno antes de iniciar la aplicación.
- Prepare PowerShell.
Antes de desplegar el agente Dotnet de APM en Windows, debe preparar PowerShell.
Nota
Se soporta PowerShell versión 5.1 o superior.Si tiene PowerShell versión 4.0, debe actualizarla a 5.1 para continuar.
- Abra Windows PowerShell como administrador.
- Navegue al directorio de destino donde se aprovisionó el agente de APM.
- Ejecute el siguiente comando en la consola PowerShell:
Import-Module ./OpenTelemetry.DotNet.Auto.psm1
- Prepare las variables de entorno en PowerShell.Revise las siguientes variables de entorno necesarias para desplegar el agente Dotnet de 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>"
Donde:- <data-upload-endpoint>: URL DataUploadEndpoint que se genera cuando se crea el dominio de APM. Para obtener información, consulte Obtención del punto final de carga de datos y las claves de datos.
- <private-data-key>: clave de instalación del agente utilizada por los agentes Dotnet de APM (private dataKey) que se genera cuando se crea el dominio de APM. Para obtener información, consulte Obtención del punto final de carga de datos y las claves de datos.
- <service-name>: nombre del servicio que se está supervisando. Esto permite filtrar por servicio y ver los rastreos en la interfaz de usuario del Explorador de rastreo.
Ejemplo:$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"
Puede agregar más variables de entorno si es necesario. Por ejemplo, si necesita configurar la inyección de agente del explorador o el rastreo abreviado. El nombre de variable de entorno debe utilizar el prefijo
$env:
y el valor de variable de entorno debe estar entre comillas dobles""
.Mejores prácticas: ejecute clear-history después de desplegar el agente .NET de APM. Esto limpia los datos confidenciales, como la clave de datos privada, del historial PowerShell.
- Opcional: registre las DLL de .NET Framework en GAC.
Este paso sólo es necesario para las aplicaciones de .NET Framework. Si no tiene la aplicación .NET Framework, omita este paso.
Para registrar las DLL de .NET Framework en GAC, haga lo siguiente:Register-OpenTelemetryDllsToGac
- Despliegue el agente Dotnet de APM.
Despliegue el agente Dotnet de APM en las siguientes aplicaciones:
Desplegar en servidor IIS
Register-OpenTelemetryForIIS
Desplegar en el servicio de Windows
Register-OpenTelemetryForWindowsService -WindowsServiceName <WindowsServiceName>
Despliegue en la aplicación de consola
A continuación, se incluye información sobre cómo desplegar el agente Dotnet de APM en la aplicación de consola.
- Prepare las variables de entorno para desplegar el agente Dotnet de APM.
Revise las siguientes variables de entorno necesarias para desplegar el agente Dotnet de APM para la aplicación de consola:
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
Los valores correctos deben sustituirse por los siguientes:
Identificador Descripción <destino> Directorio de destino en el que se aprovisiona el agente de Dotnet de APM. Por ejemplo: C:\tracer-home
<nombre-servicio> Nombre del servicio que se está supervisando. Esto le permite filtrar por servicio y ver los rastreos en la interfaz de usuario del Explorador de rastreo.
Por ejemplo: apm_service
<data-upload-endpoint> URL dataUploadEndpoint que se genera cuando se crea el dominio de APM. Por ejemplo: https://dataUploadEndpoint.com
<private-data-key> Clave de instalación de agente utilizada por el agente Dotnet de APM (dataKey privado), que se genera cuando se crea el dominio de APM. Por ejemplo: IMWJ5UN2C
Nota
Para obtener información sobre el punto final de carga de datos y las claves de datos privadas, consulte Obtención del punto final de carga de datos y las claves de datos.
- Ejecute la aplicación de consola.
-
Abra un símbolo del sistema.
-
Defina las variables de entorno del paso 1 en el símbolo del sistema.
-
En el mismo símbolo del sistema, ejecute la aplicación de consola.
-
Despliegue del agente Dotnet de APM en Linux
Al aprovisionar correctamente el agente Dotnet de APM, puede desplegar el agente Dotnet de APM en Linux.
Para desplegar el agente Dotnet de APM en cualquier aplicación, debe agregar un juego de variables de entorno antes de iniciar la aplicación.
- Preparación de variables de entorno
Para desplegar el agente Dotnet de APM en cualquier aplicación, debe definir y exportar variables.
Revise y defina las siguientes variables de entorno necesarias para desplegar el agente Dotnet de 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>"
Los valores correctos deben sustituirse por los siguientes:
marcador de lugar Descripción <destino> Directorio de destino en el que se aprovisiona el agente de Dotnet de APM. <nombre-servicio> Nombre del servicio que se está supervisando. Esto le permite filtrar por servicio y ver los rastreos en la interfaz de usuario del Explorador de rastreo.
Por ejemplo: apm_service
<data-upload-endpoint> URL dataUploadEndpoint que se genera cuando se crea el dominio de APM. Por ejemplo: https://dataUploadEndpoint.com
Para obtener información, consulte Obtención del punto final de carga de datos y las claves de datos.
<private-data-key> Clave de instalación del agente utilizada por el agente Dotnet de APM (privado dataKey) que se genera cuando se crea el dominio de APM. Por ejemplo: IMWJ5UN
Para obtener información, consulte Obtención del punto final de carga de datos y las claves de datos.
- Configure variables de entorno adicionales ejecutando la siguiente secuencia de comandos:
. $OTEL_DOTNET_AUTO_HOME/instrument.sh
- Ejecute la aplicación.
- Abra una sesión de shell.
- Defina variables de entorno de los pasos 1 y 2 en la sesión de shell.
- En la misma sesión, ejecute la aplicación.
Despliegue del agente Dotnet de APM en Kubernetes con el operador OpenTelemetry
A continuación, se muestra información sobre cómo desplegar un agente Dotnet de APM mediante el operador OpenTelemetry para inyectar y configurar automáticamente el agente Dotnet de APM en los pods de aplicaciones de Dotnet en clusters de Kubernetes (K8s).
Puede utilizar el agente Dotnet de APM para supervisar las aplicaciones Dotnet. El operador OpenTelemetry se utiliza para desplegar el agente Dotnet de APM y es una implantación de un operador K8s que proporciona una forma sencilla de inyectar automáticamente agentes Dotnet en aplicaciones Dotnet que se ejecutan en pods K8s.
Requisito
Instale OpenTelemetry Operator en el cluster K8s.
Hay tres opciones diferentes disponibles para elegir: Gráfico de cascos de operador, Manifiesto de versión de operador o Hub de operador.
En la mayoría de los casos, se debe instalar un cert-manager. Si se utiliza la opción de gráfico de timón, hay una opción para generar un certificado autofirmado en su lugar.
Opción 1: Gráfico de cascos de operador
Esta opción es utilizar el gráfico de timón para instalar el operador OpenTelemetry.
- Agregar repositorio de gráfico de timón.
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts helm repo update
- Cree el espacio de nombres de Kubernetes para el operador OpenTelemetry.
kubectl create namespace opentelemetry-operator-system
- Instale el 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
Opción 2: Operator release manifest
Esta opción es utilizar archivos YAML para instalar el 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
Despliegue del agente Dotnet de APM
Para desplegar el agente Dotnet de APM, siga estos pasos:
- Crear un recurso personalizado (CR) de Kubernetes.
Para gestionar la instrumentación automática, se debe proporcionar al operador OpenTelemetry información sobre el agente Dotnet de APM y su configuración, que se realiza mediante la definición de recursos personalizada (CRD).
El operador utilizará este recurso personalizado para copiar el agente en el pod y agregarle la configuración necesaria.
Ejecute el siguiente comando para crear la CR en el cluster de 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
Donde:- <data-upload-endpoint> es la URL de punto final de carga de datos que se genera cuando se crea el dominio de APM. Para obtener información, consulte Obtención del punto final de carga de datos y las claves de datos.
- <private-data-key> es la clave de datos privada de instalación del agente Dotnet de APM que se genera cuando se crea el dominio de APM. Para obtener información, consulte Obtención del punto final de carga de datos y las claves de datos.
La CR creada se puede consultar ejecutando el siguiente comando:
Todos los puntos finales y las variables de entorno deben ser correctos para que la instrucción automática funcione correctamente.kubectl get otelinst -n opentelemetry-operator-system
- Agregue la anotación de Kubernetes.
El operador OpenTelemetry utiliza la anotación de Kubernetes para decidir qué pods se deben inyectar automáticamente con el agente Dotnet de APM.
La anotación se puede agregar a un espacio de nombres. En ese caso, todos los pods dentro de ese espacio de nombres se inyectarán. La anotación también se puede agregar a objetos PodSpec individuales, disponibles como parte de Deployment, Statefulset y otros recursos.
Anotación para x64 glibc:annotations: instrumentation.opentelemetry.io/inject-dotnet: opentelemetry-operator-system/inst-apm-dotnet
Anotación 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 empezar a editar el espacio de nombres, haga lo siguiente:- Ejecute el comando:
kubectl edit namespace <your-namespace-name>
- Después de ejecutar el comando anterior, edite el espacio de nombres una vez que se abra el editor. Por ejemplo, utilizando el editor
vi
. - Agregue la anotación al espacio de nombres. Tenga en cuenta que la sangría es muy importante para que sea un archivo YAML válido.
Consulte a continuación un ejemplo de un espacio de nombres con la anotación agregada: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:
- Ejecute el comando:
- Reinicie el pod de Kubernetes.
Para reiniciar el pod donde desea inyectar automáticamente el agente Dotnet de APM, ejecute lo siguiente:
kubectl delete pod <your-pod-name> -n <your-namespace-name>
- Verifique el pod de Kubernetes.
Para verificar que el pod se ha inyectado automáticamente con el agente de APM Dotnet después de reiniciarlo, ejecute lo siguiente:
kubectl get pod <your-pod-name> -n <your-namespace-name> -o yaml
Ahora puede ir al siguiente paso: Verify APM Dotnet Agent Deployment.