Graylog conserve ses messages dans OpenSearch ou Elasticsearch, vous avez donc deux possibilités. Utilisez l’API REST de Graylog, authentifiée avec un jeton d’accès, ou interrogez directement les indices du backend (graylog_* par défaut) avec un script. Dans tous les cas, vous obtiendrez du JSON. La ligne originale se trouve dans message, et dans full_message pour certaines entrées. L’exportation dans l’interface web de Graylog produit un format que LogTotal ne lit pas aujourd’hui.
Graylog est une plateforme de gestion des journaux ouverte populaire, souvent la première configuration de journalisation centrale qu’une équipe met en place. Prime Core dispose de 23,274 règles de détection pour Graylog, mappées à 671 techniques MITRE ATT&CK. Voici comment extraire les messages, les assainir et les investiguer gratuitement dans LogTotal.
Avant de commencer
Un jeton d’accès. Dans Graylog, ouvrez les paramètres de votre utilisateur et créez un jeton. Avec l’API, vous vous authentifiez comme <token>:token: le jeton en tant que nom d’utilisateur et le mot token en tant que mot de passe.
Accès backend, si vous allez directement. Le cluster OpenSearch ou Elasticsearch derrière Graylog n’est souvent pas accessible de l’extérieur. Demandez à celui qui le gère un compte en lecture seule.
Flux et ensembles d’index. Graylog achemine les messages vers des flux, et les flux se mappent à des ensembles d’index avec leurs propres préfixes et rétention. Sachez quel ensemble d’index contient vos données.
Option 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
Les versions plus récentes de Graylog privilégient l’API de recherche Views. Pour de grandes exportations, l’Option 2 est plus fiable.
Option 2 : Interroger les indices du backend
C’est la même approche que celle pointée vers les indices 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 stocke le timestamp comme yyyy-MM-dd HH:mm:ss.SSS en UTC, ce qui explique pourquoi la plage utilise ce format. Pour un backend utilisant Elasticsearch, utilisez le client elasticsearch de la même manière.
Téléchargez, assainissez et examinez dans LogTotal
- Téléchargez. Ouvrez logtotal.com et déposez le fichier.
- Assainissez.
- Examinez.
Quand cela ne fonctionne pas
| Symptôme | Cause probable | Fix |
|---|---|---|
| 401 de l’API | Erreur d’écriture de l’authentification du jeton | Utilisez <token>:token |
| 404 sur le point de terminaison de recherche | Point de terminaison non disponible dans votre version | Utilisez l’Option 2, ou l’API Views |
| La requête backend ne retourne rien | Mauvais préfixe d’index, ou format de timestamp | Vérifiez les ensembles d’index; utilisez yyyy-MM-dd HH:mm:ss.SSS |
| Backend inaccessible | Cluster non exposé | Demandez un accès en lecture seule, ou utilisez l’API |
FAQ
Message ou full_message ?
Le message est toujours là. full_message apparaît pour certaines entrées, comme GELF, et peut contenir plus de détails. Exportez les deux si vous les avez.
Cela fonctionne-t-il pour Graylog Cloud ?
La voie de l’API fonctionne. L’accès direct au backend n’est généralement pas disponible sur les plans hébergés.