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/djehouty.md.

Envoyer des logs avec une bibliothèque de logs - Python 2.x - Djehouty

Voir en Markdown

Envoyez les logs de vos applications Python 2.x vers Logs Data Platform avec Djehouty.

Objectif

Ce guide vous montre comment envoyer vos logs vers Logs Data Platform en utilisant Python 2.x.

Djehouty est conçu comme un ensemble de formatters et de handlers de journalisation permettant d'envoyer facilement des entrées de log vers Logs Data Platform.

Ce package inclut :

  • pour GELF :
    • un handler TCP/TLS pour envoyer des entrées de log via TCP avec prise en charge de TLS.
    • un formatter pour convertir un enregistrement de log au format GELF(1.1).
  • pour LTSV :
    • un handler TCP/TLS pour envoyer des entrées de log via TCP avec prise en charge de TLS.
    • un formatter pour convertir un enregistrement de log au format LTSV.

Prérequis

Pour suivre ce guide, vous aurez besoin de :

En pratique

Installation

Via pip

Vous pouvez utiliser pip pour installer Djehouty ; veillez à utiliser la dernière version :

$ pip install --upgrade pip
[...]
Successfully installed pip-<version>
$ pip install --upgrade djehouty
[...]
Successfully installed djehouty-<version> setuptools-18.3.1

Via les sources

Djehouty est disponible sur le dépôt GitHub d'OVH et peut être installé manuellement :

$ git clone git@github.com:ovh/djehouty.git
Cloning into 'djehouty'...
remote: Counting objects: 58, done.
remote: Compressing objects: 100% (53/53), done.
remote: Total 58 (delta 26), reused 0 (delta 0)
Receiving objects: 100% (58/58), 9.62 KiB | 0 bytes/s, done.
Resolving deltas: 100% (26/26), done.
Checking connectivity... done.

$ cd djehouty
$ python setup.py install
[...]
Using /usr/lib/python2.7/site-packages
Finished processing dependencies for djehouty==<version>

Comment envoyer des logs

Les exemples suivants supposent que vous disposez déjà d'un flux fonctionnel. Vous devrez par ailleurs modifier l'adresse et les ports de l'endpoint pour ceux qui vous ont été attribués. Pour récupérer l'adresse et les ports de votre endpoint, rendez-vous sur la page About du Manager. Pour envoyer des messages de log, utilisez simplement le handler du format souhaité avec les paramètres suivants (« * » signifie obligatoire) :

ParamètreGelfLTSV
host *votre endpoint attribué. Ex : gra1.logs.ovh.com
port *Reportez-vous à la liste des ports PaaS Logs
levellogging.DEBUG ou supérieur
use_tlsTrue ou False (selon le port choisi)
static_fields *{"X-OVH-TOKEN": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"}
null_characterTrueNon pris en charge

La liste complète des paramètres pris en charge par Djehouty est disponible sur GitHub.

Exemple : cas d'usage avec GELF sur TCP/TLS

import logging
from djehouty.libgelf.handlers import GELFTCPSocketHandler

gelf_logger = logging.getLogger('djehouty-gelf')
gelf_logger.setLevel(logging.DEBUG)
gelf_logger.addHandler(GELFTCPSocketHandler(
    host            = "gra1.logs.ovh.com",
    port            = 12202,
    static_fields   = {"X-OVH-TOKEN": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"},
    use_tls         = True,
    level           = logging.DEBUG,
    null_character  = True,
))

gelf_logger.info('test')

Exemple : cas d'usage avec LTSV sur TCP/TLS

import logging
from djehouty.libltsv.handlers import LTSVTCPSocketHandler

ltsv_logger = logging.getLogger('djehouty-ltsv')
ltsv_logger.setLevel(logging.DEBUG)
ltsv_logger.addHandler(LTSVTCPSocketHandler(
    host            = "gra1.logs.ovh.com",
    port            = 12201,
    static_fields   = {"X-OVH-TOKEN": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"},
    use_tls         = True,
    level           = logging.DEBUG
))

ltsv_logger.info('test')

Envoyer des métadonnées supplémentaires

Si vous avez plusieurs handlers, vous pouvez utiliser la classe logging.LoggerAdapter pour ajouter des données supplémentaires.

L'exemple suivant utilise le logger LTSV défini ci-dessus :

mylogger = logging.LoggerAdapter(
    ltsv_logger,
    extra = {"myvar": 5}
)
mylogger.info('test')

Vous pouvez ajouter des métadonnées de log spécifiques à chaque entrée à l'aide du paramètre extra ; l'exemple suivant utilise le logger LTSV défini ci-dessus :

ltsv_logger.info("Hello '%s'", 'John', extra={"lang": 'en'})
ltsv_logger.info("Bonjour '%s'", 'John', extra={"lang": 'fr'})

Aller plus loin

Cette page vous a-t-elle aidé ?