Ingesta de eventos a través de la API de streaming
Introducción
Utilice esta API para enviar datos de eventos a una canalización para su procesamiento, filtrado, enriquecimiento y enrutamiento.
Este punto final admite la ingesta en tiempo real de alto rendimiento y admite eventos JSON estructurados y semiestructurados. Es ideal para aplicaciones en la nube, microservicios, dispositivos IoT o cualquier sistema que emita telemetría.
Funciones de la API
- Enviar registros y métricas directamente a una canalización
- Normalizar y enriquecer los datos antes de enviarlos aguas abajo
- Reducir los costes mediante el filtrado o el muestreo temprano
- Crear canalizaciones flexibles sin dependencia de un proveedor
Antes de empezar
Asegúrese de que dispone de:
- Un token de API con permisos de ingestión
- Un ID de flujo
- Cargas útiles de eventos en formato JSON
curlo Postman instalado
Descripción general de la canalización
- Mermaid (código)
- Mermaid (imagen)
- ASCII
flowchart LR
A["Aplicación en la nube / microservicio"] --> B["Streaming Ingest API"]
B --> C["Capa de procesamiento<br/> • Análisis sintáctico<br/> • Enriquecimiento<br/> • Enmascaramiento"]
C --> D["Motor de enrutamiento<br/> • Filtros<br/> • Muestreo<br/> • Reglas"]
D --> E{{"Destinos:<br/>S3 / SIEM / Elastic / Snowflake"}}
+--------------+ +------------------+ +----------------+ +----------------+
| Cloud App | ---> | Ingest API | ---> | Processing | ---> | Routing |
| (Logs/Events)| | (POST /ingest) | | (Parse/Enrich) | | (Rules Engine) |
+--------------+ +------------------+ +----------------+ +----------------+
|
v
+----------------------+
| Destinations |
| S3 | SIEM | DW | ES |
+----------------------+
Punto final de ingestión
POST /v1/streams/ingest
Encabezados de solicitud
| Encabezado | Valor | Obligatorio | Descripción |
|---|---|---|---|
| Authorization | Bearer <token> | Sí | Token de API |
| Content-Type | application/json | Sí | Carga útil JSON |
| X-Stream-Id | <your-stream-id> | Sí | Canalización de destino |
Cuerpo de la solicitud
{
"timestamp": "2025-02-12T14:32:15Z",
"source": "payments-app",
"event": {
"transactionId": "txn_30921",
"status": "approved",
"latency_ms": 182,
"amount": 499,
"currency": "USD"
},
"metadata": {
"env": "prod",
"team": "payments"
}
}
Notas
timestamp: formato ISO 8601event: Datos del evento principal (pares clave-valor)- Tamaño máximo de la carga útil: 1 MB
Respuesta
200 OK
{
"status": "accepted",
"ingested_bytes": 527,
"stream_id": "a0c3b4de-1923-4ff1-8dba-f92ad912d20f"
}
400 Bad request
Problemas comunes:
- JSON no válido
- Formato de marca de tiempo incorrecto
- Faltan campos de origen o evento
- La carga útil supera el tamaño máximo
{
"error": "invalid_format",
"detail": "The 'timestamp' field must be a valid ISO 8601 string."
}
401 Unauthorized
- Falta el token o ha caducado.
429 Rate limited
- Reducir la tasa de solicitudes o los eventos por lotes.
Ejemplo de cURL
curl -X POST "https://api.example.com/v1/streams/ingest" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-H "X-Stream-Id: $STREAM_ID" \
-d @event.json
Casos de uso comunes
- Ingestión de registros de microservicios
- Transmisión de telemetría desde dispositivos IoT
- Normalización de eventos de sistemas distribuidos
- Enrutamiento de eventos enriquecidos a SIEM, S3, Elastic o Snowflake
- Canalizaciones de detección de fraudes o anomalías en tiempo real
Solución de problemas
| Síntoma | Causa probable | Solución |
|---|---|---|
| No se muestran eventos en la canalización | ID de flujo incorrecto | Copie el ID de flujo correcto |
| Carga rechazada | JSON no válido | Valide con jq |
| Campos que faltan | Discrepancia en la estructura anidada | Revise las reglas de análisis |
| Alta latencia | Cargas grandes o procesamiento por lotes | Reduzca el tamaño de los lotes |
Próximos pasos
- Añada reglas de análisis, enmascaramiento o enriquecimiento
- Enrute los datos a múltiples destinos
- Reduzca los costes con muestreo o filtrado
- Cree métricas y paneles de control para el canal