Graylog mantiene sus mensajes en OpenSearch o Elasticsearch, por lo que tienes dos rutas. Usa la API REST de Graylog, autenticada con un token de acceso, o consulta directamente los índices del backend (graylog_* por defecto) con un script. En cualquier caso, obtienes JSON. La línea original está en message, y en full_message para algunas entradas. La exportación en la interfaz web de Graylog produce un formato que LogTotal no lee hoy.
Graylog es una plataforma popular de gestión de registros abiertos, a menudo la primera solución de logging central que implementa un equipo. Prime Core tiene 23,274 reglas de detección para Graylog, mapeadas a 671 técnicas MITRE ATT&CK. A continuación, se explica cómo extraer mensajes, limpiarlos e investigarlos de forma gratuita en LogTotal.
Antes de comenzar
Un token de acceso. En Graylog, abre la configuración de tu usuario y crea un token. Con la API, te autenticas como <token>:token: el token como el nombre de usuario y la palabra token como la contraseña.
Acceso al backend, si vas directamente. El clúster de OpenSearch o Elasticsearch detrás de Graylog a menudo no es accesible desde fuera. Pregunta a quien lo gestiona por una cuenta de solo lectura.
Flujos y conjuntos de índices. Graylog dirige mensajes a flujos, y los flujos se asignan a conjuntos de índices con sus propios prefijos y retención. Conoce qué conjunto de índices contiene tus datos.
Opción 1: API REST de Graylog
GL="https://graylog.example.com"
curl -sS -u "$GL_TOKEN:token" -H 'Accept: application/json' -G "$GL/api/search/universal/absolute"
--data-urlencode 'query=source:web-03'
--data-urlencode 'from=2026-10-19T00:00:00.000Z'
--data-urlencode 'to=2026-10-20T00:00:00.000Z'
--data-urlencode 'limit=10000'
| jq -c '.messages[].message' > graylog_web03_1019.jsonl
Las versiones más recientes de Graylog favorecen la API de búsqueda de Views. Para grandes exportaciones, la Opción 2 es más confiable.
Opción 2: Consultar índices del backend.
Este es el mismo enfoque que dirigimos a los índices de Graylog:
import json, os
from opensearchpy import OpenSearch, helpers
client = OpenSearch("https://opensearch.example.com:9200",
http_auth=("reader", os.environ["OS_PASSWORD"]), verify_certs=True)
query = {"query": {"bool": {"filter": [
{"term": {"source": "web-03"}},
{"range": {"timestamp": {"gte": "2026-10-19 00:00:00.000", "lt": "2026-10-20 00:00:00.000"}}},
]}}}
with open("graylog_web03_1019.jsonl", "w") as out:
for hit in helpers.scan(client, index="graylog_*", query=query, size=1000):
out.write(json.dumps(hit["_source"]) + "n")
Graylog almacena el timestamp como yyyy-MM-dd HH:mm:ss.SSS en UTC, por lo que la consulta de rango utiliza ese formato. Para un backend que ejecuta Elasticsearch, use el cliente de Elasticsearch de la misma manera.
Subir, limpiar y revisar en LogTotal
- Subir. Abrir logtotal.com y suelta el archivo.
- Limpiar.
- Revisar.
Cuando algo sale mal
| Síntoma | Causa probable | Fix |
|---|---|---|
| 401 desde la API | Autenticación del token escrita incorrectamente | Usa <token>:token |
| 404 en el punto de búsqueda | Punto final no disponible en tu versión | Usa la Opción 2, o la API de Views |
| Consulta del backend no devuelve nada | Prefijo del índice incorrecto o el formato del timestamp | Verifica conjuntos de índices; usa yyyy-MM-dd HH:mm:ss.SSS |
| Backend no accesible | Clúster no expuesto | Solicita acceso de solo lectura o usa la API |
FAQ
¿Message o full_message?
Message siempre está presente. full_message aparece para algunas entradas, como GELF, y puede contener más detalles. Exporta ambos si los tienes.
¿Esto funciona para Graylog Cloud?
La ruta de API sí. El acceso directo al backend generalmente no está disponible en planes alojados.