Saltar al contenido
Telemetry
Explorar documentación
SDKActualizado el 29 de julio de 2026Revisado por los equipos editorial y de producto de Telemetry3 min de lectura

Usa esta documentación con tu agente de programación

Abra un paquete de mensajes enfocados para Claude Code, Codex, Cursor u otro agente de codificación, luego adáptelo al flujo de trabajo que se describe aquí.

En esta página
  1. Configurar un cliente con nombre
  2. Enviar un evento estructurado
  3. Ejecute SQL
  4. Política de error y reintento
  5. Verificar la integración

Integración .NET HTTP

Telemetry no publica un .NET SDK nativo. Utilice HTTP API a través de una configuración HttpClient o IHttpClientFactory propiedad de la aplicación cuando un servicio, trabajador o trabajo programado de ASP.NET Core necesite una ingestión de eventos estructurados.

La aplicación sigue siendo responsable de la reutilización de la conexión, los tiempos de espera, los reintentos, la serialización, la cancelación y si una falla de observabilidad puede afectar el flujo de trabajo del cliente.

Configurar un cliente con nombre

builder.Services.AddHttpClient("telemetry", client =>
{
    client.BaseAddress = new Uri("https://api.telemetry.sh");
    client.Timeout = TimeSpan.FromSeconds(3);
});

Resuelva el cliente desde IHttpClientFactory en lugar de construir un nuevo HttpClient para cada evento. Almacene la clave Telemetry en el administrador secreto existente del servicio y use claves de ámbito de escritura y lectura independientes donde el tiempo de ejecución admita tanto la ingesta como la consulta.

Enviar un evento estructurado

Cree una carga útil escrita y incluida en la lista de permitidos después de conocer el resultado final de la aplicación:

using System.Net.Http.Json;

var payload = new
{
    table = "api_request_completed",
    data = new
    {
        event_id = eventId,
        route_template = "/api/projects/:id",
        method = "POST",
        status_code = 201,
        status = "success",
        latency_ms = elapsed.TotalMilliseconds,
        request_id = requestId,
        release
    }
};

using var request = new HttpRequestMessage(HttpMethod.Post, "/log")
{
    Content = JsonContent.Create(payload)
};
request.Headers.TryAddWithoutValidation("Authorization", telemetryApiKey);

var client = httpClientFactory.CreateClient("telemetry");
using var response = await client.SendAsync(request, cancellationToken);

if (!response.IsSuccessStatusCode)
{
    RecordDeliveryFailure((int)response.StatusCode, eventId);
}

Utilice plantillas de ruta, identificadores internos estables y categorías de error controladas. No serialice encabezados, cookies, credenciales, cuerpos de solicitudes, valores SQL vinculados, seguimientos de pila, mensajes, contenido generado ni mensajes de excepción sin restricciones.

Ejecute SQL

Utilice una fecha límite de consulta más larga y delimitada por separado y una clave de ámbito de lectura:

var queryPayload = new
{
    query = """
        SELECT route_template, COUNT(*) AS requests
        FROM api_request_completed
        WHERE timestamp_utc >= now() - INTERVAL '24 hours'
        GROUP BY route_template
        ORDER BY requests DESC
        """
};

using var queryRequest = new HttpRequestMessage(HttpMethod.Post, "/query")
{
    Content = JsonContent.Create(queryPayload)
};
queryRequest.Headers.TryAddWithoutValidation(
    "Authorization",
    telemetryReadApiKey
);

using var queryResponse = await client.SendAsync(
    queryRequest,
    queryCancellationToken
);

Verifique el estado de HTTP y los campos de respuesta status, data y key_order. Un resultado vacío es un resultado válido y no debe tratarse como un error de transporte.

Política de error y reintento

Reintente solo fallas transitorias limitadas, como errores de conexión, 429, 502, 503 y 504. Aplique un retroceso exponencial con fluctuación, limite el tiempo total transcurrido, respete la cancelación de solicitudes y reutilice el mismo event_id. No vuelva a intentar un error de esquema sin cambios o una credencial incorrecta.

Para el análisis normal del producto, no convierta una operación exitosa del cliente en un error porque falló la entrega de telemetría. Para eventos de facturación o auditoría aprobados que requieren durabilidad, confirme un registro de bandeja de salida con la transacción comercial y entréguelo a través de un trabajador en segundo plano.

Verificar la integración

Envíe accesorios conocidos de éxito, fracaso, reintento, cancelación y tiempo de espera, luego inspeccione las filas recientes:

SELECT timestamp_utc, event_id, route_template, status, latency_ms, error_type
FROM api_request_completed
ORDER BY timestamp_utc DESC
LIMIT 20;

Confirme una fila terminal por resultado lógico, tipos de campos estables, unidades esperadas, marcas de tiempo UTC y la ausencia de contenido confidencial. Realice un tiempo de espera Telemetry y un cierre ordenado de los trabajadores antes de habilitar la ruta en el volumen de producción.

Continúe con Integración de .NET y Serilog, Registro API, límites de tasa y errores y procesamiento por lotes y apagado.

Función relacionada del producto

Registra nombres de eventos estables, campos con tipos definidos y contexto revisado para proteger la privacidad.

Responsabilidad y referencias técnicas

El equipo editorial de Telemetry es responsable de esta explicación; el equipo de producto revisa el comportamiento, los ejemplos y las limitaciones.

Consultar los criterios editoriales