elastic/observability-edot-dotnet-migrate

Migra una aplicación .NET del agente clásico Elastic APM .NET al SDK EDOT .NET. Úsalo al cambiar de paquetes Elastic.Apm.* a Elastic.OpenTelemetry.

¿Qué es observability-edot-dotnet-migrate?

Esta habilidad automatiza la migración de aplicaciones .NET desde el agente clásico Elastic APM .NET (paquetes Elastic.Apm.*) al nuevo SDK EDOT .NET (Elastic.OpenTelemetry). Es útil para desarrolladores que desean aprovechar las capacidades modernas de OpenTelemetry en sus aplicaciones .NET, garantizando una transición suave sin perder funcionalidades de monitoreo. Compatible con plataformas .NET estándar (ASP.NET Core, .NET Framework, etc.), la habilidad analiza el código fuente, identifica dependencias obsoletas, actualiza paquetes NuGet, y ajusta la configuración de inicialización del agente. El proceso incluye pasos como reemplazar referencias a paquetes, modificar la configuración en appsettings.json, y actualizar el código de inicio (Startup.cs o Program.cs) para usar la nueva API de OpenTelemetry. Todo esto se realiza con instrucciones claras y comandos de ejemplo, minimizando errores y documentando cambios clave.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/elastic/agent-skills/tree/main/skills/observability-edot-dotnet-migrate

Installed? Explore more Productividad y colaboración skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace observability-edot-dotnet-migrate?

Migra una aplicación .NET del agente clásico Elastic APM .NET al SDK EDOT .NET. Úsalo al cambiar de paquetes Elastic.Apm.* a Elastic.OpenTelemetry.

Descripción

Esta habilidad te guía a través del proceso de migración de una aplicación .NET que actualmente utiliza el agente clásico Elastic APM .NET (paquetes Elastic.Apm.*) al nuevo SDK EDOT .NET (Elastic.OpenTelemetry). La migración permite a tu aplicación aprovechar las capacidades modernas de OpenTelemetry mientras mantienes la integración con Elastic Observability.

Plataformas compatibles

  • .NET 6+
  • ASP.NET Core
  • .NET Framework 4.6.1+
  • Aplicaciones de consola, servicios y APIs

Requisitos previos

  • Tener instalado el SDK de .NET correspondiente
  • Acceso a NuGet para instalar paquetes
  • Conocimiento básico de la estructura del proyecto .NET

Pasos de migración

1. Eliminar dependencias del agente clásico

Elimina todas las referencias a paquetes Elastic.Apm.* de tu archivo de proyecto (.csproj):

<!-- Eliminar estas líneas -->
<PackageReference Include="Elastic.Apm" Version="..." />
<PackageReference Include="Elastic.Apm.AspNetCore" Version="..." />
<PackageReference Include="Elastic.Apm.EntityFrameworkCore" Version="..." />

2. Agregar el paquete EDOT .NET SDK

Agrega el paquete Elastic.OpenTelemetry a tu proyecto:

dotnet add package Elastic.OpenTelemetry

3. Actualizar la configuración

Reemplaza la configuración del agente clásico en appsettings.json o variables de entorno con la configuración de OpenTelemetry:

{
  "Elastic" : {
    "OpenTelemetry": {
      "ServiceName": "mi-aplicacion",
      "Endpoint": "http://localhost:8200",
      "ApiKey": "mi-api-key"
    }
  }
}

Si usas variables de entorno, cambia:

  • ELASTIC_APM_SERVER_URL → OTEL_EXPORTER_OTLP_ENDPOINT
  • ELASTIC_APM_API_KEY → OTEL_EXPORTER_OTLP_HEADERS (formato Authorization=Bearer ...)
  • ELASTIC_APM_SERVICE_NAME → OTEL_SERVICE_NAME

4. Modificar el código de inicio

En Program.cs o Startup.cs, reemplaza la inicialización del agente:

// Antes (agente clásico)
using Elastic.Apm;
Agent.Setup(new AgentComponents());

// Después (EDOT SDK)
using OpenTelemetry;
using OpenTelemetry.Trace;

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddOpenTelemetry()
    .WithTracing(tracing => tracing
        .AddAspNetCoreInstrumentation()
        .AddHttpClientInstrumentation()
        .AddElasticOpenTelemetry());

5. Verificar la migración

  • Ejecuta la aplicación y verifica que los datos se envíen correctamente al servidor Elastic
  • Revisa los logs para confirmar que no hay errores de inicialización
  • Prueba funcionalidades clave como solicitudes HTTP, consultas a bases de datos, etc.

Notas importantes

  • La migración es irreversible: una vez que cambies al SDK EDOT, no podrás volver al agente clásico sin deshacer los cambios manualmente
  • Algunas opciones de configuración del agente clásico no tienen equivalente directo en OpenTelemetry; consulta la documentación oficial para más detalles
  • Si usas funcionalidades avanzadas como filtros de transacciones o hooks personalizados, migra esos componentes a la API de procesadores OpenTelemetry

Solución de problemas

  • Error "No se pudo cargar Elastic.Apm": Asegúrate de haber eliminado todas las referencias a paquetes antiguos
  • No se envían datos: Verifica la configuración del endpoint y las credenciales en appsettings.json o variables de entorno
  • Problemas de rendimiento: Revisa que los instrumentos agregados no sean excesivos; usa solo los necesarios para tu aplicación

Referencias

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

elastic/cloud-access-management

Manage Elastic Cloud organization access: invite users, assign roles to Serverless projects, and create or revoke Cloud API keys. Use when granting, modifying, or auditing user access.

elastic/cloud-create-project

Creates Elastic Cloud Serverless projects (Elasticsearch, Observability, or Security) via the REST API, saves credentials to file, and bootstraps a scoped Elasticsearch API key. Use when creating a new serverless project, provisioning a search or observability environment, or spinning up a new Elastic Cloud project.

elastic/cloud-manage-project

Manages existing Elastic Cloud Serverless projects: list, get, update, delete, reset credentials, resume, and load saved credentials. Connects to existing projects by resolving endpoints and acquiring scoped Elasticsearch API keys. Use when performing day-2 operations on serverless projects, connecting to an existing project, loading or resetting project credentials, or looking up project details.

elastic/cloud-network-security

Manage Serverless network security (traffic filters): create, update, and delete IP filters and AWS PrivateLink VPC filters. Use when restricting network access or configuring private connectivity.

elastic/cloud-setup

Configures Elastic Cloud authentication and environment defaults. Use when setting up EC_API_KEY, configuring Cloud API access, or when another cloud skill requires credentials.

elastic/elasticsearch-audit

Enable, configure, and query Elasticsearch security audit logs. Use when the task involves audit logging setup, event filtering, or investigating security incidents like failed logins.

elastic/elasticsearch-authn

Authenticate to Elasticsearch using native, file-based, LDAP/AD, SAML, OIDC, Kerberos, JWT, or certificate realms. Use when connecting with credentials, choosing a realm, or managing API keys. Assumes the target realms are already configured.

elastic/elasticsearch-authz

Manage Elasticsearch RBAC: native users, roles, role mappings, document- and field-level security. Use when creating users or roles, assigning privileges, or mapping external realms like LDAP/SAML.

elastic/elasticsearch-esql

Execute ES|QL (Elasticsearch Query Language) queries, use when the user wants to query Elasticsearch data, analyze logs, aggregate metrics, explore data, or create charts and dashboards from ES|QL results.

elastic/elasticsearch-file-ingest

Ingest and transform data files (CSV/JSON/Parquet/Arrow IPC) into Elasticsearch with stream processing and custom transforms. Use when loading files or batch importing data — not for reindexing, general ingest pipeline design, or bulk API patterns.

elastic/elasticsearch-onboarding

Help developers new to Elasticsearch get from zero to a working search experience. Guide them through understanding their intent, mapping their data, and building a search experience with best practices baked in. Use this when the user shows intent to build search-related functionality, asks about Elasticsearch-related concepts for their use case, or expresses the need for help getting started with Elasticsearch.

elastic/elasticsearch-security-troubleshooting

Diagnose and resolve Elasticsearch security errors: 401/403 failures, TLS problems, expired API keys, role mapping mismatches, and Kibana login issues. Use when the user reports a security error.

elastic/kibana-agent-builder

Create and manage Agent Builder agents and custom tools in Kibana. Use when asked to create, update, delete, test, or inspect agents or tools in Agent Builder.

elastic/kibana-alerting-rules

Create and manage Kibana alerting rules via REST API or Terraform. Use when creating, updating, or managing rule lifecycle (enable, disable, mute, snooze) or rules-as-code workflows.

elastic/kibana-audit

Enable and configure Kibana audit logging for saved object access, logins, and space operations. Use when setting up Kibana audit, filtering events, or correlating Kibana and ES audit logs.

elastic/kibana-connectors

Create and manage Kibana connectors for Slack, PagerDuty, Jira, webhooks, and more via REST API or Terraform. Use when configuring third-party integrations or managing connectors as code.

elastic/kibana-dashboards

Create and manage Kibana Dashboards and visualizations. Use when you need to define dashboards and visualizations declaratively, version control them, or automate their deployment.

elastic/kibana-streams

List, inspect, enable, disable, and resync Kibana Streams via the REST API. Use when the user needs stream details, ingest/query settings, queries, significant events, or attachments.

elastic/kibana-vega

Create Vega and Vega-Lite visualizations with ES|QL data sources in Kibana. Use when building custom charts, dashboards, or programmatic panel layouts beyond standard Lens charts.

elastic/observability-edot-dotnet-instrument

Instrument a .NET application with the Elastic Distribution of OpenTelemetry (EDOT) .NET SDK for automatic tracing, metrics, and logs. Use when adding observability to a .NET service that has no existing APM agent.

Skills relacionados