Utiliza un breve script de Python con los ayudantes oficiales scan del cliente, o la API _search con un point in time (PIT) y search_after. Para extracciones rápidas de hasta 10,000 filas, ES|QL con format=json funciona directamente desde las Herramientas de Desarrollo de Kibana. Discover de Kibana también puede generar un informe, pero no en un formato que LogTotal lea hoy. Si tu integración lo conservó, event.original contiene la línea de registro sin procesar.
Elastic es una de las bases más comunes para análisis de seguridad internos, desde Elastic Security hasta pilas construidas por uno mismo. Prime Core tiene 23,722 reglas de detección para Elastic, asignadas a 671 técnicas de MITRE ATT&CK. A continuación se muestra cómo extraer datos, sanitizarlos e investigarlos de forma gratuita en LogTotal.
Antes de empezar
Autenticación. Crea una clave de API en Administración de la Pila → Claves de API con permisos de lectura y view_index_metadata en los índices que necesitas. Envíalo como Authorization: ApiKey <key>. En Elastic Cloud, el endpoint de Elasticsearch se encuentra en la página de resumen de tu implementación.
Saber dónde residen los datos. Las integraciones del Agente Elastic escriben a flujos de datos nombrados logs-<dataset>-<namespace>. Los registros de autenticación de Linux de la integración del sistema, por ejemplo, se encuentran en logs-system.auth-default.
Verifica event.original Muchos integraciones no retienen la línea sin procesar por defecto; es una opción de «preservar evento original». Si falta, los campos analizados son lo que tienes, y está bien para una carga de JSON.. Many integrations don’t keep the raw line by default; it’s a “preserve original event” option. If it’s missing, the parsed fields are what you have, and that’s fine for a JSON upload.
Niveles de datos. Las búsquedas contra niveles fríos o congelados son más lentas. Mantén las ventanas ajustadas cuando los datos son antiguos.
Los ejemplos siguen la documentación actual de Elastic, revisada en octubre de 2026.
Opción 1: Python con helpers.scan (recomendado)
import json, os
from elasticsearch import Elasticsearch, helpers
es = Elasticsearch("https://my-deployment.es.example.com:443", api_key=os.environ["ES_API_KEY"])
query = {"query": {"range": {"@timestamp": {
"gte": "2026-10-19T00:00:00Z", "lt": "2026-10-20T00:00:00Z"}}}}
with open("elastic_auth_1019.jsonl", "w") as out:
for hit in helpers.scan(es, index="logs-system.auth-*", query=query, size=1000):
out.write(json.dumps(hit["_source"]) + "n")
Para líneas sin procesar, escribe hit[«_source»].get(«event», {}).get(«original», «») en lugar de todo el documento.
Opción 2: ES|QL para extracciones rápidas
En Herramientas de Desarrollo de Kibana:
POST /_query?format=json
{
"query": """
FROM logs-system.auth-*
| WHERE @timestamp >= "2026-10-19T00:00:00Z" AND @timestamp < "2026-10-20T00:00:00Z"
| KEEP @timestamp, host.name, user.name, source.ip, message
| LIMIT 10000
"""
}
Dos consideraciones. ES|QL devuelve 1,000 filas a menos que establezcas LIMIT, y alcanza un máximo de 10,000. La respuesta JSON también viene como columnas más valores, no como registros. Para convertirlo en un objeto por línea, guarda el cuerpo de la consulta como query.json y ejecútalo con jq:
curl -sS -H "Authorization: ApiKey $ES_API_KEY" -H 'Content-Type: application/json'
"https://my-deployment.es.example.com/_query?format=json" -d @query.json
| jq -c '.columns as $c | .values[] | [$c, .] | transpose | map({(.[0].name): .[1]}) | add' > esql_1019.jsonl
Opción 3: Exportar registros desde la interfaz de Kibana (Discover)
Para investigaciones más pequeñas, Discover de Kibana te permite encontrar, filtrar y exportar registros directamente desde el navegador sin escribir scripts.
- Abrir Discover. Inicia sesión en Kibana y navega a Analítica → Discover, o selecciona Discover desde la navegación principal.
- Selecciona tus datos. Elige la vista de datos que contiene los registros que necesitas, como logs-system.auth-*. Asegúrate de que incluye los índices de Elasticsearch o flujos de datos relevantes.
- Configura el rango de tiempo. Usa el selector de tiempo en la esquina superior derecha para seleccionar el período de investigación. Ajusta la ventana para evitar exportar eventos innecesarios.
- Filtra los registros. Usa la barra de búsqueda y los filtros disponibles para aislar eventos relevantes. Por ejemplo, ingresa event.category: authentication para enfocarte en la actividad de autenticación.
- Selecciona los campos. Añade columnas útiles como @timestamp, host.name, user.name, source.ip y message. Si está disponible, incluye event.original para preservar el contenido del registro sin procesar.
- Exporta los resultados. Abre Más → Exportar → Resultados de pestañas como CSV (en algunas versiones, Compartir → Informes CSV). Genera el informe y descarga el archivo CSV. Si la exportación no se descarga de inmediato, encuéntrala en Administración de la Pila → Reportes.
Alternativa: Copiar registros como JSON. Para una selección pequeña de eventos, selecciona las filas relevantes en Discover, abre el menú Seleccionado y elige Copiar documentos como JSON. Pega el contenido copiado en un editor de texto y guárdalo como un archivo .json. Solo los campos incluidos en la selección actual de la tabla pueden ser copiados.
Limitaciones. Los informes CSV están destinados a exportaciones de tamaño moderado y tienen límites de conteo de filas y tamaño de archivo que dependen de la versión y configuración de Kibana. Exportar una definición de sesión de Discover como JSON no exporta los eventos de registro en sí mismos.
Para LogTotal, usa un formato de registro compatible. Cuando se requiera JSONL, exporta los registros utilizando los métodos de API de Python o Elasticsearch descritos a continuación, o convierte los datos exportados en un objeto JSON por línea antes de cargarlo.
Paso 3: Cargar, sanitizar y revisar en LogTotal
- Cargar. Abre logtotal.com y arrastra el archivo .jsonl.
- Sanitizar. Revísalo antes de continuar.
- Revisar.
Cuando algo sale mal
| Síntoma | Causa probable | Fix |
|---|---|---|
| 401 o 403 | La clave de API carece de privilegios en los índices | Agregar lectura y view_index_metadata |
| La ventana de resultados es demasiado grande | Más de 10,000 resultados en una _search | Usa helpers.scan o PIT con search_after |
| ES|QL devuelve exactamente 1,000 filas | Límite por defecto | Agrega LIMIT (máximo 10,000) |
| No hay campo event.original | La integración no lo preservó | Exporta el documento analizado en su lugar |
| Tiempos de espera | Datos antiguos en niveles fríos o congelados | Ajusta la ventana; ejecuta en partes |
FAQ
¿Qué pasa con las alertas de Elastic Security?
Las alertas viven en sus propios índices (.alerts-security.alerts-*). Exportar alertas es un trabajo diferente de exportar los registros detrás de ellas; para LogTotal, exporta los registros.
¿Funciona esto para OpenSearch?
La idea es la misma, los clientes son diferentes.