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. Crear un cliente compartido
  2. Enviar un evento estructurado
  3. Ejecute SQL
  4. Política de error y reintento
  5. Verificar la integración

Integración de Java HTTP

Telemetry no publica un SDK nativo de Java. Utilice HTTP API a través de un java.net.http.HttpClient propiedad de la aplicación cuando un servicio Java o JVM necesite ingesta de eventos estructurados o consultas SQL.

Este límite mantiene la reutilización de la conexión, los tiempos de espera, los reintentos, la serialización y la política de fallas bajo el control del servicio.

Crear un cliente compartido

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;

HttpClient telemetryHttp = HttpClient.newBuilder()
    .connectTimeout(Duration.ofSeconds(2))
    .build();

Cree el cliente una vez durante el inicio de la aplicación. Utilice una clave API con ámbito de escritura del lado del servidor para la ingesta y una clave independiente con ámbito de lectura para informes o automatización de consultas.

Enviar un evento estructurado

Utilice la biblioteca JSON ya aprobada por la aplicación. Este ejemplo supone que eventJson se serializó a partir de un objeto incluido en la lista de permitidos en lugar de ensamblarse a partir de un cuerpo de solicitud:

String eventJson = objectMapper.writeValueAsString(Map.of(
    "table", "api_request_completed",
    "data", Map.of(
        "event_id", eventId,
        "route_template", "/api/projects/:id",
        "method", "POST",
        "status_code", 201,
        "status", "success",
        "latency_ms", latencyMs,
        "request_id", requestId,
        "release", release
    )
));

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.telemetry.sh/log"))
    .timeout(Duration.ofSeconds(3))
    .header("Authorization", telemetryApiKey)
    .header("Content-Type", "application/json")
    .POST(HttpRequest.BodyPublishers.ofString(eventJson))
    .build();

HttpResponse<String> response = telemetryHttp.send(
    request,
    HttpResponse.BodyHandlers.ofString()
);

if (response.statusCode() < 200 || response.statusCode() >= 300) {
    recordDeliveryFailure(response.statusCode(), eventId);
}

Utilice plantillas de ruta y categorías de error controladas. No serialice encabezados, cookies, credenciales, cuerpos de solicitud, parámetros SQL, seguimientos de pila, mensajes, contenido generado ni mensajes de excepción sin restricciones.

Ejecute SQL

PUBLICAR un cuerpo JSON que contiene query en https://api.telemetry.sh/query con una clave de alcance de lectura:

String queryJson = objectMapper.writeValueAsString(Map.of(
    "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
        """
));

HttpRequest queryRequest = HttpRequest.newBuilder()
    .uri(URI.create("https://api.telemetry.sh/query"))
    .timeout(Duration.ofSeconds(15))
    .header("Authorization", telemetryReadApiKey)
    .header("Content-Type", "application/json")
    .POST(HttpRequest.BodyPublishers.ofString(queryJson))
    .build();

Verifique el estado de HTTP y los campos de respuesta status, data y key_order. Trate un resultado vacío como un estado válido en lugar de un error de análisis.

Política de error y reintento

Reintente solo fallas transitorias limitadas, como errores de conexión, 429, 502, 503 y 504. Utilice un retroceso exponencial con fluctuación, limite el tiempo transcurrido y conserve el mismo event_id en todos los intentos. No vuelva a intentar respuestas 400, 401 o 403 sin cambios.

Para el análisis de productos ordinario, una falla de telemetría no debe reemplazar una respuesta completa del cliente. Si un evento de facturación o auditoría aprobado debe ser duradero, escriba un registro de la bandeja de salida en la misma transacción que el estado comercial y entréguelo de un trabajador.

Verificar la integración

Envíe accesorios controlados de éxito, error, reintento 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 el grano del evento, el nombre de la tabla, los tipos de campo, las unidades, la hora UTC y el límite de privacidad. Pruebe un tiempo de espera de Telemetry y el cierre del proceso antes de poner la entrega en una ruta de alto tráfico.

Continúe con Integración de arranque de primavera, Registro API, límites de tasa y errores y entrega de eventos e idempotencia.

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