01
Qué es y qué problema resuelve
Los logs describen eventos, las métricas cuantifican comportamiento y las trazas relacionan operaciones de una solicitud. Una investigación necesita conectar síntoma e impacto: aumento de latencia, conflictos de reserva, rechazos de acceso o errores de dependencia.
Recoger datos sin preguntas operativas produce ruido.
02
Ejemplo paso a paso
Punto de partida Ejemplo de APIs de diagnóstico .NET. Una Activity requiere listeners para recogerse; la métrica requiere un consumidor. Añade instrumentación alrededor de la operación real.
Antes de ejecutar
Fragmento de instrumentación .NET 10. Para observar actividades y mediciones registra listeners o un proveedor de telemetría y exportación. Sin listener, StartActivity puede devolver null. No incluye backend ni dashboard.
using System.Diagnostics;
using System.Diagnostics.Metrics;
using var fuente = new ActivitySource("Academia.Reservas");
using var medidor = new Meter("Academia.Reservas");
var contador = medidor.CreateCounter<long>("reservas.creadas");
using var actividad = fuente.StartActivity("CrearReserva");
contador.Add(1, new KeyValuePair<string, object?>("resultado", "confirmada"));Cómo funciona
- ActivitySource nombra el origen de las operaciones trazadas.
- Meter crea un contador y una etiqueta de resultado de baja cardinalidad.
- Configura listeners y exportación para observar esa instrumentación fuera del proceso.
Resultado esperado: Se emite una medición de creación confirmada; la exportación depende de configurar instrumentación y backend.
03
Cuándo usarlo y qué debes evitar
Define nombres y cardinalidad. Una etiqueta con un identificador diferente por reserva crea series sin límite; un contador agregado por resultado es más sostenible.
Protege los datos que registras y el acceso a la plataforma. La instrumentación local necesita un exportador y una configuración de muestreo para ser útil fuera del proceso.
Ampliación opcional · contexto y variantes del tema
Contenedor y pipeline reproducible
Un contenedor empaqueta la aplicación y su runtime; no resuelve secretos, permisos de base ni migraciones. Usa etapas de compilación y ejecución, una imagen compatible mantenida y un usuario sin privilegios. No copies .git, tokens o archivos de desarrollo; una .dockerignore y revisión del contexto ayudan a controlar el artefacto. Los tags de versión facilitan actualizaciones; fija digest cuando necesites identidad exacta y establece un proceso para renovarlo.
El pipeline restaura dependencias, compila, ejecuta pruebas, analiza dependencias y secretos, publica un artefacto trazable y despliega ese mismo artefacto. Un paso de prueba no valida un proyecto que no contiene pruebas descubiertas. En el laboratorio usa dotnet run para ejecutar sus comprobaciones; al pasar a un framework usa dotnet test y conserva resultados. No recompiles el código después de aprobarlo sin volver a comprobar el resultado.
Separa secretos de build y runtime. Planifica migraciones con compatibilidad entre versiones. Una entrega gradual y health checks pueden reducir impacto, pero la estrategia de rollback debe considerar datos. Restaurar una versión antigua que ya no entiende el esquema nuevo puede fallar aun cuando el binario previo era correcto.
Punto de partida Las primeras tres líneas son ejecutables en el ZIP. La última es orientación para tu futura solución, no un comando válido sobre una solución inexistente en el laboratorio.
Antes de ejecutar
Comandos verificados con SDK .NET 10
dotnet restore Laboratorio.csproj
dotnet build Laboratorio.csproj --configuration Release --no-restore
dotnet run --project Laboratorio.csproj --configuration Release --no-build
# En un proyecto con framework de pruebas:
# dotnet test Reserva.sln --configuration ReleaseResultado esperado: Compilación sin advertencias y 15 comprobaciones aprobadas. El proceso devuelve error ante una comprobación fallida.
04 · Práctica guiada · opcional
Practica lo aprendido
Relaciona un conteo de conflictos con una traza y un log de correlación. Identifica lo que debe configurarse para recolectar y exportar las señales del fragmento.
- 01Define qué pregunta responde cada señal y sus etiquetas permitidas.
- 02Distingue crear instrumentos de registrar listeners, recolectores y exportadores.
- 03Diseña una verificación en el backend de pruebas y marca como propuesta lo que no hayas observado.
Ver solución orientativa
La métrica resume resultados, la traza sitúa la operación y el log aporta detalle por correlación. StartActivity puede devolver null sin listener; la exportación no está implementada en el fragmento. No uses IDs de reserva como etiquetas de alta cardinalidad.
05
Comprueba lo aprendido
Responde antes de abrir la explicación. Esta comprobación es opcional y no guarda una puntuación.
01¿Crear ActivitySource garantiza que una traza aparezca en un panel?
No. Deben existir listeners, exportación y configuración.
02¿Qué falta para observar una actividad creada si no hay ningún listener configurado?
Un listener que seleccione la fuente y una configuración de recolección y exportación. Sin listener, StartActivity puede devolver null; crear el instrumento no asegura datos visibles en un panel.
Cómo demostrar el objetivo
Compara tu práctica con estos resultados. Si solo diseñaste una prueba, registra su resultado como esperado, no como observado.
- El diseño conecta un conteo por resultado con una operación y su correlación.
- Identificas listener y exportación pendientes y evitas secretos e identificadores de alta cardinalidad en etiquetas.
Qué debes recordar
- Logs, métricas y trazas responden preguntas distintas.
- La instrumentación necesita un destino y límites de cardinalidad.
Tu cuaderno · notas personales
Cuaderno local
Tus notas del contenido
Se guardan únicamente en este dispositivo. Puedes exportarlas cuando quieras.
Material de apoyo · descarga, glosario y referencias
Explicaciones, ejemplos y prácticas propios de Academia de Software. Los fragmentos de integración requieren las dependencias indicadas; el ZIP contiene el núcleo de consola. Las lecturas externas se consultan en su sitio original y conservan sus condiciones. Procedencia y condiciones de uso.