O Graylog mantém suas mensagens no OpenSearch ou Elasticsearch, então você tem duas rotas. Use a API REST do Graylog, autenticada com um token de acesso, ou consulte os índices de backend (graylog_* por padrão) diretamente com um script. De qualquer forma, você obtém JSON. A linha original está em message, e em full_message para algumas entradas. A exportação na interface web do Graylog produz um formato que o LogTotal não lê atualmente.
Graylog é uma plataforma popular de gestão de logs abertos, muitas vezes o primeiro log central que uma equipe configura. Prime Core tem 23.274 regras de detecção para Graylog, mapeadas para 671 técnicas MITRE ATT&CK. Abaixo está como extrair mensagens, sanitizá-las e investigá-las gratuitamente no LogTotal.
Antes de começar
Um token de acesso. No Graylog, abra as configurações do seu usuário e crie um token. Com a API, você se autentica como <token>:token: o token como nome de usuário e a palavra token como a senha.
Acesso ao backend, se você for diretamente. O cluster do OpenSearch ou Elasticsearch por trás do Graylog muitas vezes não é acessível de fora. Peça a quem gerencia isso uma conta de leitura apenas.
Streams e conjuntos de índices. O Graylog direciona mensagens para streams, e os streams mapeiam para conjuntos de índices com seus próprios prefixos e retenção. Saiba qual conjunto de índice contém os seus dados.
Opção 1: API REST do 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
Versões mais recentes do Graylog favorecem a API de pesquisa Views. Para exportações grandes, a Opção 2 é mais confiável.
Opção 2: Consultar os índices de backend
Esta é a mesma abordagem que apontamos para os índices do 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 armazena timestamp como yyyy-MM-dd HH:mm:ss.SSS em UTC, razão pela qual o intervalo usa esse formato. Para um backend rodando Elasticsearch, use o cliente elasticsearch da mesma forma.
Envie, sanitise e reveja no LogTotal
- Faça o upload. Abra logtotal.com e solte o arquivo.
- Sanitizar.
- Revisar.
Quando algo dá errado
| Sintoma | Causa provável | Fix |
|---|---|---|
| 401 da API | Autenticação de token escrita errada | Use <token>:token |
| 404 no endpoint de busca | Endpoint não disponível na sua versão | Use a Opção 2, ou a API de Views |
| Consulta de backend não retorna nada | Prefixo de índice errado, ou o formato de timestamp | Verifique conjuntos de índices; use yyyy-MM-dd HH:mm:ss.SSS |
| Backend não acessível | Cluster não exposto | Peça acesso somente leitura, ou use a API |
FAQ
Message ou full_message?
Message está sempre presente. full_message aparece para algumas entradas, como GELF, e pode conter mais detalhes. Exporte os dois se você os tiver.
Isso funciona para Graylog Cloud?
A rota da API sim. O acesso direto ao backend geralmente não está disponível em planos hospedados.