Utilisez un court script Python avec les helpers.scan du client officiel, ou l’API _search avec un point dans le temps (PIT) et search_after. Pour des extractions rapides allant jusqu’à 10 000 lignes, ES|QL avec format=json fonctionne directement depuis Dev Tools de Kibana. Kibana Discover peut également générer un rapport, mais pas dans un format que LogTotal lit aujourd’hui. Si votre intégration l’a préservé, event.original contient la ligne de journal brute.
Elastic est l’une des fondations les plus courantes pour les analyses de sécurité internes, d’Elastic Security aux environnements construits par soi-même. Prime Core dispose de 23 722 règles de détection pour Elastic, correspondant à 671 techniques MITRE ATT&CK. Voici comment extraire les données, les assainir et les examiner gratuitement dans LogTotal.
Avant de commencer
Authentification. Créez une clé API dans Gestion de la pile → Clés API avec lecture et view_index_metadata sur les indices dont vous avez besoin. Envoyez-la en tant qu’Authorization: ApiKey <clé>. Sur Elastic Cloud, le point d’accès Elasticsearch se trouve sur la page de présentation de votre déploiement.
Sachez où se trouvent les données. Les intégrations Elastic Agent écrivent vers des flux de données nommés logs-<dataset>-<namespace>. Par exemple, les journaux d’authentification Linux de l’intégration système se trouvent dans logs-system.auth-default.
Vérifiez pour event.original. De nombreuses intégrations ne conservent pas la ligne brute par défaut ; c’est une option « préserver l’événement original ». S’il manque, les champs analysés sont ce que vous avez, et c’est correct pour un upload JSON.
Tiers de données. Les recherches contre les tiers froids ou gelés sont plus lentes. Gardez des fenêtres étroites lorsque les données sont anciennes.
Les exemples suivent la documentation Elastic actuelle, vérifiée en octobre 2026.
Option 1 : Python avec helpers.scan (recommandé)
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")
Pour les lignes brutes, écrivez hit[« _source »].get(« event », {}).get(« original », « ») au lieu de tout le document.
Option 2 : ES|QL pour des extractions rapides
Dans Kibana Dev Tools :
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
"""
}
Deux mises en garde. ES|QL renvoie 1 000 lignes à moins que vous ne définissiez LIMIT, et il plafonne à 10 000. La réponse JSON vient également sous forme de colonnes avec valeurs, et non comme des enregistrements. Pour le transformer en un objet par ligne, enregistrez le corps de la requête sous query.json et lancez-le via 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
Option 3 : Exporter les journaux depuis l’interface Kibana (Discover)
Pour des enquêtes plus petites, Kibana Discover vous permet de trouver, filtrer et exporter directement les journaux depuis le navigateur sans écrire de scripts.
- Ouvrir Discover. Connectez-vous à Kibana et naviguez vers Analytique → Discover, ou sélectionnez Discover depuis la navigation principale.
- Sélectionnez vos données. Choisissez la vue de données contenant les journaux dont vous avez besoin, comme logs-system.auth-*. Assurez-vous qu’elle inclut les indices ou flux de données Elasticsearch pertinents.
- Définissez l’intervalle de temps. Utilisez le sélecteur de temps dans le coin supérieur droit pour sélectionner la période d’enquête. Réduisez la fenêtre pour éviter d’exporter des événements inutiles.
- Filtrez les journaux. Utilisez la barre de recherche et les filtres disponibles pour isoler les événements pertinents. Par exemple, entrez event.category: authentication pour vous concentrer sur l’activité d’authentification.
- Sélectionnez les champs. Ajoutez des colonnes utiles comme @timestamp, host.name, user.name, source.ip, et message. Si disponible, incluez event.original pour conserver le contenu brut du journal.
- Exportez les résultats. Ouvrir Plus → Exporter → Résultats en onglet sous forme CSV (dans certaines versions, Partager → Rapports CSV). Générez le rapport et téléchargez le fichier CSV. Si l’export n’est pas téléchargé immédiatement, trouvez-le sous Gestion de la pile → Rapports.
Alternative : Copier les journaux en JSON. Pour une petite sélection d’événements, sélectionnez les lignes pertinentes dans Discover, ouvrez le menu Sélectionné , et choisissez Copier les documents en JSON. Collez le contenu copié dans un éditeur de texte et enregistrez-le sous forme de fichier .json. Seuls les champs inclus dans la sélection de tableau actuelle peuvent être copiés.
Limites. Les rapports CSV sont destinés aux exportations de taille modérée et ont des limites de nombre de lignes et de taille de fichier qui dépendent de la version et de la configuration de Kibana. Exporter une définition de session Discover en JSON n’exporte pas les événements de journal eux-mêmes.
Pour LogTotal, utilisez un format de journal pris en charge. Lorsque JSONL est requis, exportez les enregistrements en utilisant les méthodes API Python ou Elasticsearch décrites ci-dessous, ou convertissez les données exportées en un objet JSON par ligne avant d’uploader.
Étape 3 : Upload, assainir et examiner dans LogTotal
- Upload. Ouvrir logtotal.com et déposez le fichier .jsonl.
- Assainir. Examinez-le avant de continuer.
- Examiner.
Quand ça ne va pas
| Symptôme | Cause probable | Fix |
|---|---|---|
| 401 ou 403 | La clé API manque de privilèges sur les indices | Ajoutez lecture et view_index_metadata |
| La fenêtre de résultats est trop grande | Plus de 10 000 touches dans un _search | Utilisez helpers.scan ou PIT avec search_after |
| ES|QL renvoie exactement 1 000 lignes | Limite par défaut | Ajoutez LIMIT (max 10 000) |
| Pas de champ event.original | L’intégration ne l’a pas préservé | Exportez le document analysé à la place |
| Timeouts | Données anciennes sur des tiers froids ou gelés | Réduisez la fenêtre ; exécutez-le par morceaux |
FAQ
Que dire des alertes Elastic Security ?
Les alertes vivent dans leurs propres indices (.alerts-security.alerts-*). Exporter des alertes est un travail différent de celui d’exporter les journaux derrière elles ; pour LogTotal, exportez les journaux.
Cela fonctionne-t-il pour OpenSearch ?
L’idée est la même, les clients diffèrent.