For AI agents: the complete documentation index is available at https://docs.ovhcloud.com/fr/llms.txt, the full documentation bundle is available at https://docs.ovhcloud.com/fr/llms-full.txt, and this page is available as Markdown at https://docs.ovhcloud.com/fr/guides/manage-and-operate/observability/logs-data-platform/extract-logs.md.

Extraire des logs depuis Logs Data Platform

Voir en Markdown

Comment exporter vos logs avec Logstash ou Elasticdump

Objectif

Ce guide explique comment exporter les logs stockés dans Logs Data Platform (LDP) à l'aide d'outils compatibles avec l'API OpenSearch. Il présente deux implémentations de référence :

  • Logstash, adapté aux pipelines de longue durée et aux transformations complexes.
  • Elasticdump, un utilitaire CLI léger conçu pour des exports ponctuels ou planifiés.

L'export de logs est un besoin courant lorsque vous souhaitez analyser des données en dehors de l'écosystème LDP ou les transmettre à des outils de BI externes. Pour l'archivage à long terme, nous proposons une autre solution.

Les sections suivantes expliquent comment extraire des documents de votre alias avec Logstash ou avec le CLI Elasticdump, afin que vous puissiez choisir l'outil le mieux adapté à votre modèle opérationnel.

La dernière partie explique comment exporter vos logs depuis vos archives à froid.

Prérequis

  • Vous envoyez déjà des logs sur un flux que vous possédez — consultez le tutoriel de démarrage rapide.
  • Vous connaissez l'endpoint OpenSearch de votre cluster LDP (https://<ldp-cluster>.logs.ovh.com:9200).
  • Votre hôte peut atteindre le port TCP 9200 de l'endpoint du cluster via TLS.
  • Vous disposez des identifiants pour l'alias que vous souhaitez exporter (authentification basique ou jeton bearer IAM).
  • Vous pouvez installer Logstash ≥ 8.0 ou Elasticdump ≥ 6.0 sur l'hôte qui exécutera l'export.

Accès à l'espace client OVHcloud

  • Lien direct :
  • Pour accéder à vos services : Identité, Sécurité & Opérations > Logs Data Platform > Sélectionnez la plateforme concernée

En pratique

Conventions de nommage des alias

Lorsque vous créez un alias OpenSearch qui pointe vers un flux Graylog, la seule partie personnalisable est le suffixe après -a-, par exemple ldp-ti-98765-a-your_suffix.

Le reste du nom est généré par la plateforme :

Statut IAMPartie généréeExemple d'alias complet
IAM activél'identifiant de service (par ex. ldp-ti-98765)ldp-ti-98765-a-logs-export
IAM désactivé (avant la migration IAM)votre nom d'utilisateur (par ex. logs-ab-12345)logs-ab-12345-a-logs-export

La partie <suffix> (ici logs-export) est une chaîne libre que vous choisissez pour décrire l'objectif de l'alias.

Créer un alias de flux

  1. Cliquez sur Logs Data Platform sous Opérations, puis cliquez sur le compte souhaité.
  2. Sélectionnez l'onglet Alias et cliquez sur Ajouter un alias.
  3. Choisissez un suffixe, ajoutez une description et enregistrez l'alias.
  4. Cliquez sur le menu … à droite de l'alias nouvellement créé et sélectionnez Attacher du contenu à l'alias.
  5. Sélectionnez le ou les flux Graylog que vous souhaitez exporter et confirmez.

L'alias pointe désormais vers l'alias OpenSearch sous-jacent qui stocke les logs du flux choisi.

Exporter les logs avec Logstash

Prérequis

PrérequisDétails
Logstash ≥ 8.0Installez Logstash sur un hôte capable d'atteindre votre cluster LDP.
Java 8 ou 11Requis par Logstash.
Endpoint OpenSearchhttps://<ldp‑cluster>.logs.ovh.com:9200
AuthentificationUtilisateur/mot de passe basique ou jeton bearer IAM (voir la FAQ IAM).
Nom de l'aliasL'alias créé à l'étape précédente (par ex. ldp-ti-98765-a-logs-export).

Installer Logstash et les plugins OpenSearch

# Download Logstash (tarball example)
wget https://artifacts.elastic.co/downloads/logstash/logstash-8.8.2-linux-x86_64.tar.gz
tar -zxvf logstash-8.8.2-linux-x86_64.tar.gz
cd logstash-8.8.2

# Install the required plugins
bin/logstash-plugin install logstash-input-opensearch

Pipeline Logstash

Créez un fichier pipeline.conf (à l'emplacement de votre choix, par ex. config/pipeline.conf) :

input {
  opensearch {
    # Notez que seul le nom d'hôte est indiqué
    hosts => ["<ldp-cluster>.logs.ovh.com:9200"]
    # Utilisez l'authentification basic ou un jeton IAM avec le nom d'utilisateur pat_jwt_<prefix>
    user => "`<username>`"
    password => "<password>"
    index => "<alias-name>"
    schedule => "*/5 * * * *"          # (Optional) Run every 5 minutes
    query => '{"query":{"bool":{"must":[{"match_all":{}}],"filter":[{"range":{"timestamp":{"gte":"now-1d"}}}]}}}'
    scroll => "5m" # (Optional) The scroll stays open for 5m
    ssl => true
  }
}

filter {
  # (Facultatif) Convertir l'horodatage dans un format lisible
  date {
    match => ["timestamp", "ISO8601"]
    target => "timestamp"
  }
}

output {
  csv {
    path => "/var/log/ldp/export-%{+YYYY-MM-dd}.csv"
    fields => ["timestamp", "host", "log.level", "message"]
    gzip => false # (Optional) Compress the output file.
    create_if_deleted => true # (Optional) Re‑create the file if it disappears while Logstash runs.
    flush_interval => 2 # (Optional) How often Logstash flushes data to disk.
  }
}

Exécuter le pipeline

# Depuis le répertoire racine de Logstash
bin/logstash -f config/pipeline.conf --config.reload.automatic

Logstash se connecte à l'endpoint OpenSearch, lit les documents appartenant à l'alias défini ci-dessus, et écrit les champs sélectionnés dans un fichier CSV quotidien sous /var/log/ldp/.

Exporter les logs avec Elasticdump

Prérequis

PrérequisDétails
Elasticdump ≥ 6.0Installez-le sur un hôte capable d'atteindre votre cluster LDP en HTTPS.
Runtime Node.jsElasticdump est un CLI Node.js ; installez Node.js 18 LTS ou une version ultérieure.
Accès réseauAutorisez la connectivité TCP sortante vers <ldp-cluster>.logs.ovh.com sur le port 9200.
AuthentificationUtilisez soit des identifiants d'authentification basique (utilisateurs historiques), soit un jeton bearer IAM.
Magasin de confiance TLSAssurez-vous que le magasin de confiance système contient des autorités de certification publiques, ou fournissez un bundle CA avec --input-ca.
Nom de l'aliasL'alias créé précédemment (par ex. ldp-ti-98765-a-logs-export).

Installer Elasticdump

Elasticdump est un logiciel open source conçu pour exporter des données depuis ElasticSearch/OpenSearch vers un fichier ou vers une autre instance OpenSearch/ElasticSearch. C'est un excellent outil pour migrer d'ElasticSearch vers OpenSearch et pour télécharger les données contenues dans vos alias ou index. Il est écrit en JavaScript et repose donc sur un runtime JavaScript pour s'exécuter.

# Installez Node.js avec la méthode de votre choix (exemple pour Debian/Ubuntu)
sudo apt update
sudo apt install nodejs npm

# Install elasticdump globally
npm install -g elasticdump

# Validate the installation
elasticdump --version

Pour les environnements isolés (air-gapped) ou conteneurisés, vous pouvez télécharger l'image Docker officielle et exécuter les mêmes commandes avec docker run --rm -v "$PWD":/work -w /work elasticdump/elasticsearch-dump.

S'authentifier auprès de Logs Data Platform

Elasticdump s'appuie sur des en-têtes HTTP pour l'authentification. Choisissez la méthode correspondant à votre compte :

  • Authentification basique — ajoutez les identifiants dans l'URL : https://<username>:<password>@<ldp-cluster>.logs.ovh.com:9200/<alias>.
  • Jeton bearer IAM — ajoutez un en-tête Authorization : --input-headers '{"Authorization":"Bearer <iam-token>"}'.

Lorsque vous utilisez des jetons IAM, ne mettez pas les identifiants dans l'URL et reposez-vous uniquement sur l'en-tête. Les jetons ont une durée de vie courte ; prévoyez de les renouveler avant de lancer des exports longs.

Exporter un alias au format JSON

Créez un fichier JSON (search-body.json) qui définit votre requête. L'exemple ci-dessous récupère les événements des dernières 24 heures :

{
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "timestamp": {
              "gte": "now-24h",
              "lte": "now"
            }
          }
        }
      ]
    }
  },
  "sort": [
    {
      "timestamp": "asc"
    }
  ]
}

Exécutez Elasticdump pour exporter les documents :

elasticdump \
  --input https://<user>:<password>@<ldp-cluster>.logs.ovh.com:9200/<alias-name> \
  --output ./ldp-export.json \
  --searchBody @search-body.json \
  --limit 1000 \
  --type data

Pour vous authentifier avec IAM, vous pouvez utiliser le flag d'en-tête ou l'authentification hybride :

elasticdump \
  --input https://<ldp-cluster>.logs.ovh.com:9200/<alias-name> \
  --input-headers '{"Authorization":"Bearer `<iam-token>`"}' \
  --output ./ldp-export.json \
  --searchBody @search-body.json \
  --type data
elasticdump \
  --input https://pat_jwt_<any_string_here>:`<iam-token>`@<ldp-cluster>.logs.ovh.com:9200/<alias-name> \
  --output ./ldp-export.json \
  --searchBody @search-body.json \
  --type data

Elasticdump diffuse les résultats vers ldp-export.json au format JSON délimité par des retours à la ligne, qui peut être chargé dans des outils d'analyse ou archivé à des fins de conformité.

$ elasticdump --input https://<user>:<password>@gra2.logs.ovh.com:9200/<alias-name> --output ./ldp-export.json --searchBody @search-body.json --limit 500 --type data
Tue, 07 Oct 2025 14:11:30 GMT | starting dump
Tue, 07 Oct 2025 14:11:30 GMT | got 79 objects from source elasticsearch (offset: 0)
Tue, 07 Oct 2025 14:11:30 GMT | sent 79 objects, 0 offset, to destination file, wrote 79
Tue, 07 Oct 2025 14:11:30 GMT | got 0 objects from source elasticsearch (offset: 500)
Tue, 07 Oct 2025 14:11:30 GMT | Total Writes: 79
Tue, 07 Oct 2025 14:11:30 GMT | dump complete

Gérer les formats, la pagination et les plages de temps étendues

Pour exporter les données au format CSV, utilisez le schéma csv dans le fichier de sortie :

elasticdump \
  --input https://pat_jwt_<any_string_here>:`<iam-token>`@<ldp-cluster>.logs.ovh.com:9200/<alias-name> \
  --output csv://./ldp-export.json \
  --searchBody @search-body.json \
  --type data

Elasticdump pagine automatiquement les résultats à l'aide de l'API scroll d'OpenSearch. Ajustez l'export avec les options suivantes :

  • --limit <n> : contrôle le nombre de documents qu'Elasticdump récupère par lot. Réduisez la valeur (par ex. 200) si vous rencontrez des timeouts.
  • --maxSockets <n> : ajuste le nombre de connexions HTTP simultanées. Fixez-le à 1 pour une limitation stricte du débit, ou augmentez-le pour accélérer les exports sur des alias à débit élevé.
  • --input-parameters '{"scroll":"10m"}' : étend le curseur côté serveur à 10 minutes, utile pour les jeux de données volumineux.

Pour exporter des plages de temps spécifiques, modifiez search-body.json avec un filtre range et exécutez plusieurs commandes successivement :

elasticdump --input https://<user>:<password>@<cluster>/<alias> \
  --output ./ldp-2024-05-01.json \
  --searchBody '{"query":{"range":{"timestamp":{"gte":"2024-05-01","lt":"2024-05-02"}}}}'

elasticdump --input https://<user>:<password>@<cluster>/<alias> \
  --output ./ldp-2024-05-02.json \
  --searchBody '{"query":{"range":{"timestamp":{"gte":"2024-05-02","lt":"2024-05-03"}}}}'

Le flag --transform vous permet d'ajuster chaque document avant de l'écrire sur le disque. Par exemple, pour supprimer le champ _id :

elasticdump --input https://<cluster>/<alias> \
  --output ./ldp.json \
  --searchBody @search-body.json \
  --transform 'delete doc._id; return doc;'

Exporter les logs depuis les archives

Pour exporter les logs depuis vos archives, nous mettons à disposition un outil permettant de les télécharger : ldp-archive-mirror. Ce logiciel nécessite Python ≥ 3.6 pour fonctionner.

Commencez par installer ldp-archive-mirror via pip :

$ pip3 install -U ldp-archive-mirror

Vous pouvez ensuite utiliser le binaire ldp-mirror :

usage: ldp-mirror [-h] [--app-key KEY] [--app-secret SECRET]
              [--consumer-key KEY] [--ovh-region REGION] [--db DIR]
              [--mirror DIR] [--ldp-host HOST] [--ldp-token TOKEN]
              [--chunk-size CHUNK] [--gpg-passphrase SECRET]
              STREAM_ID [STREAM_ID ...]

LDP archive Mirror CLI - 0.2.0

positional arguments:
  STREAM_ID            LDP Stream UUIDs

optional arguments:
  -h, --help              Show this help message and exit
  --app-key KEY           OVH application key (default: dcd57be8c9dc53ff)
  --app-secret SECRET     OVH application secret (default: d37f35c27e60be58746e81e3351a84db)
  --consumer-key SECRET   OVH consumer key (default: 819fb70c64f91f797daf0ed3990e5ff0)
  --ovh-region REGION     OVH region (default: ovh-eu)
  --db DIR                Where to place the local sqlite database (default: /data/db)
  --mirror DIR            Where to place your archives (default: /data/mirror)
  --ldp-host HOST         If set, push logs of the current application to given LDP hostname
  --ldp-token TOKEN       If set, push logs of the current application to associated LDP stream token
  --chunk-size CHUNK      Download chunk size in bytes (default: 16384)
  --gpg-passphrase SECRET PGP private key passphrase (default: None)

Rendez-vous sur la page GitHub pour installer ce logiciel et obtenir les informations les plus récentes à son sujet.

Aller plus loin

Pour plus de détails sur le plugin d'entrée OpenSearch, consultez la documentation officielle. La référence du plugin de sortie CSV est disponible ici. La documentation d'Elasticdump est disponible ici.

Cette page vous a-t-elle aidé ?