Tous les produits
Search
Centre de documentation

Simple Log Service:Collecter les journaux des conteneurs Docker (sortie standard/fichier)

Dernière mise à jour :Aug 07, 2026

Utilisez LoongCollector pour collecter les journaux des conteneurs Docker (stdout et fichiers) dans un seul Logstore SLS afin de centraliser le stockage, l'analyse structurée, le filtrage et l'exploration des données.

Notes d'utilisation

  • Prérequis en matière d'autorisations : Le compte Alibaba Cloud ou l'utilisateur RAM que vous utilisez pour le déploiement doit disposer de l'autorisation AliyunLogFullAccess.

  • Version de Docker et prérequis pour LoongCollector :

    • Si votre version de Docker Engine est 29.0 ou ultérieure, ou si la version minimale prise en charge de l'API Docker est 1.42 ou ultérieure, vous devez utiliser LoongCollector 3.2.4 ou une version ultérieure. Dans le cas contraire, LoongCollector ne pourra pas collecter les sorties standard des conteneurs ni les journaux de fichiers.

    • Les versions 3.2.4 et ultérieures de LoongCollector prennent en charge les versions de l'API Docker allant de 1.24 à 1.48.

    • Les versions 3.2.3 et antérieures de LoongCollector prennent en charge les versions de l'API Docker allant de 1.18 à 1.41.

  • Limites liées à la collecte de la sortie standard :

    • Vous devez ajouter "log-driver": "json-file" au fichier de configuration Docker, daemon.json.

    • Pour CentOS 7.4 et versions ultérieures, à l'exception de CentOS 8.0, vous devez définir fs.may_detach_mounts=1.

  • Limitations de la collecte des journaux texte : Seuls les pilotes de stockage overlay et overlay2 sont pris en charge. Pour les autres types de pilotes, vous devez monter manuellement le répertoire des journaux.

Aperçu du flux de travail

  1. Preparations: Créez un projet et un logstore. Un projet est une unité de gestion des ressources utilisée pour isoler les journaux de différentes applications, tandis qu'un logstore sert à stocker les journaux.

  2. Configure a machine group (install LoongCollector): Installez LoongCollector sur les hôtes Docker et ajoutez-les à un groupe de machines pour la distribution centralisée de la configuration et la surveillance de l'état.

  3. Create and configure log collection rules

    1. Global and input configuration : Définissez le nom de la configuration de collecte, ainsi que la source et la portée de la collecte des journaux.

    2. Log processing and structuring : Configurez des règles de traitement en fonction du format des journaux.

      • Journaux multilignes : Cela s'applique aux journaux uniques qui s'étendent sur plusieurs lignes, tels que les piles d'exceptions Java ou les tracebacks Python. Vous devez utiliser une expression régulière pour identifier le début de chaque journal.

      • Analyse structurée : Configurez des plug-ins d'analyse, tels que le plug-in d'expression régulière, de séparateur ou de mode NGINX, pour extraire les chaînes brutes sous forme de paires clé-valeur structurées. Cela facilite les requêtes et l'analyse ultérieures.

    3. Log filtering : Configurez des listes noires de collecte et des règles de filtrage de contenu pour sélectionner le contenu de journal valide. Cette pratique réduit la transmission et le stockage de données redondantes.

    4. Log categorization : Configurez des sujets et des tags de journal pour distinguer de manière flexible les journaux provenant de différentes applications, conteneurs ou sources de chemin d'accès.

  4. Query and analysis configuration : L'indexation en texte intégral est activée par défaut. Activez l'indexation des champs pour effectuer des requêtes précises sur les champs structurés.

  5. Validation and troubleshooting : Une fois la configuration terminée, vérifiez que les journaux sont bien collectés. Si vous rencontrez des problèmes tels que l'absence de collecte de données, des échecs de heartbeat ou des erreurs d'analyse, consultez la section FAQ.

Préparatifs

Créez un projet et un Logstore pour stocker les journaux. Si vous disposez déjà de ces ressources, passez directement à l'étape Étape 1 : Configurer un groupe de machines (installer LoongCollector).

Créer un projet

  1. Connectez-vous à la console Simple Log Service.

  2. Cliquez sur Create Project et configurez les paramètres suivants :

    • Region : Sélectionnez la région en fonction de la source des journaux. Ce paramètre ne peut pas être modifié après la création du projet.

    • Project Name : Le nom du projet doit être globalement unique au sein d'Alibaba Cloud et ne peut pas être modifié après la création du projet.

    • Conservez les paramètres par défaut pour les autres options et cliquez sur Create. Pour plus d'informations sur les autres paramètres, consultez la rubrique Créer un projet.

Créer un logstore

  1. Cliquez sur le nom du projet.

  2. Dans le volet de navigation de gauche, sélectionnez imageLog Storage et cliquez sur +.

  3. Sur la page de création du logstore, configurez les paramètres principaux suivants :

    • Logstore Name : Saisissez un nom unique au sein du projet. Ce nom ne peut pas être modifié après la création du logstore.

    • Logstore Type : Sélectionnez Standard ou Query en fonction d'une comparaison des spécifications.

    • Billing Mode :

      • Pay-by-feature : Facturation indépendante pour les ressources telles que le stockage, l'indexation et les opérations de lecture/écriture. Ce mode convient aux scénarios à petite échelle ou lorsque l'utilisation des fonctionnalités est incertaine.

      • Pay-by-ingested-data : Facturation uniquement basée sur la quantité de données brutes écrites. Ce mode offre 30 jours de stockage gratuit et des fonctionnalités gratuites telles que la transformation et la livraison des données. Il convient aux scénarios commerciaux où la période de conservation est proche de 30 jours ou lorsque le pipeline de traitement des données est complexe.

    • Data Retention Period : Spécifiez le nombre de jours de conservation des journaux. Les valeurs valides vont de 1 à 3650. La valeur 3650 indique un stockage permanent. La valeur par défaut est 30.

    • Conservez les paramètres par défaut pour les autres options et cliquez sur OK. Pour plus d'informations sur les autres paramètres, consultez la rubrique Gérer les Logstores.

Étape 1 : Configurer un groupe de machines (installer LoongCollector)

Déployez LoongCollector en tant que conteneur sur l'hôte Docker et ajoutez-le à un groupe de machines.

  1. Tirer l'image

    Sur un hôte disposant de Docker installé, exécutez la commande suivante pour tirer l'image LoongCollector. Remplacez ${region_id} par l'ID de région de l'hôte ou d'une région voisine, par exemple cn-hangzhou, afin d'améliorer la vitesse et la stabilité du téléchargement.

    # LoongCollector image address
    docker pull aliyun-observability-release-registry.${region_id}.cr.aliyuncs.com/loongcollector/loongcollector:v3.0.12.0-25723a1-aliyun
    
    # Logtail image address
    docker pull registry.${region_id}.aliyuncs.com/log-service/logtail:v2.1.11.0-aliyun
  2. Démarrer le conteneur LoongCollector

    Exécutez la commande suivante pour démarrer le conteneur. Assurez-vous de monter correctement les répertoires et de définir les variables d'environnement requises :

    docker run -d \
        -v /:/logtail_host:ro \
        -v /var/run/docker.sock:/var/run/docker.sock \
        --env ALIYUN_LOGTAIL_CONFIG=/etc/ilogtail/conf/${sls_upload_channel}/ilogtail_config.json \
        --env ALIYUN_LOGTAIL_USER_ID=${aliyun_account_id} \
        --env ALIYUN_LOGTAIL_USER_DEFINED_ID=${user_defined_id} \
        aliyun-observability-release-registry.${region_id}.cr.aliyuncs.com/loongcollector/loongcollector:v3.0.12.0-25723a1-aliyun

    Description des paramètres :

    • ${sls_upload_channel} : Le canal de téléchargement des journaux. Le format est Projet Région-Type de transfert réseau. Exemple :

      Type de transfert

      Format de la valeur de configuration

      Exemple

      Scénarios

      Transfert via le réseau interne

      regionId

      cn-hangzhou

      L'instance ECS et le projet se trouvent dans la même région.

      Transfert via Internet

      regionId-internet

      cn-hangzhou-internet

      • L'instance ECS et le projet se trouvent dans des régions différentes.

      • Le serveur provient d'un autre fournisseur de cloud ou d'un centre de données autonome.

      Accélération du transfert

      regionId-acceleration

      cn-hangzhou-acceleration

      Communication interrégionale au sein et en dehors de la Chine.

    • ${aliyun_account_id} : L'ID du compte Alibaba Cloud.

    • ${user_defined_id} : L'ID personnalisé du groupe de machines. Cet ID est utilisé pour lier le groupe de machines. Par exemple, utilisez user-defined-docker-1. L'ID doit être unique au sein de la région.

      Important

      Les conditions de démarrage suivantes doivent être respectées :

      • Les trois variables d'environnement clés sont correctement configurées :

        ALIYUN_LOGTAIL_CONFIG, ALIYUN_LOGTAIL_USER_ID et ALIYUN_LOGTAIL_USER_DEFINED_ID.

      • Le répertoire /var/run/docker.sock est monté. Ce répertoire est utilisé pour écouter les événements du cycle de vie des conteneurs.

      • Le répertoire racine / est monté sur /logtail_host. Cela permet d'accéder au système de fichiers de l'hôte.

  3. Vérifier l'état d'exécution du conteneur

    docker ps | grep loongcollector

    Exemple de sortie attendue :

    6ad510001753   aliyun-observability-release-registry.cn-beijing.cr.aliyuncs.com/loongcollector/loongcollector:v3.0.12.0-25723a1-aliyun   "/usr/local/ilogtail…"   About a minute ago   Up About a minute             recursing_shirley
  4. Configurer le groupe de machines

    Dans le volet de navigation de gauche, sélectionnez image Resources > Machine Groups, cliquez sur 机器组 > Create Machine Group, configurez les paramètres suivants et cliquez sur OK :

    • Name : Saisissez un nom personnalisé pour le groupe de machines, par exemple docker-host-group.

    • Machine Group Identifier : Sélectionnez Custom Identifier.

    • Custom Identifier : Saisissez l'${user_defined_id} que vous avez défini lors du démarrage du conteneur. L'ID doit correspondre exactement. Sinon, l'association échouera.

  5. Vérifier l'état du heartbeat du groupe de machines

    Cliquez sur le nom du nouveau groupe de machines pour accéder à la page des détails et vérifier l'Machine Group Status :

Étape 2 : Créer et configurer des règles de collecte de journaux

Définissez les sources de journaux, les règles d'analyse, les filtres de contenu et les liaisons de groupes de machines.

  1. Sur la page image Logstores, cliquez sur l'icône image située à côté du nom du logstore cible.

  2. Cliquez sur image à côté de Data Collection. Dans la boîte de dialogue Quick Data Import , sélectionnez un modèle en fonction de la source des journaux et cliquez sur Integrate Now .

  3. Configurez le Machine Group et cliquez sur Next .

    • Scenario : Sélectionnez Docker Containers .

    • Déplacez le groupe de machines que vous avez créé à l'Étape 1 de la liste des groupes de machines sources vers la liste des groupes de machines appliqués.

  4. Sur la page Logtail Configuration , configurez les paramètres suivants et cliquez sur Next .

1. Configurations globales et d'entrée

Définissez le nom de la configuration de collecte, la source des journaux et la portée de la collecte.

Collecter la sortie standard Docker

Global Configurations

  • Configuration Name : Saisissez un nom personnalisé pour la configuration de collecte. Le nom doit être unique au sein du projet et ne peut pas être modifié après la création de la configuration. Le nom doit respecter les conventions suivantes :

    • Il ne peut contenir que des lettres minuscules, des chiffres, des traits d'union (-) et des traits de soulignement (_).

    • Il doit commencer et se terminer par une lettre minuscule ou un chiffre.

Input Configurations

  • Activez le commutateur Stdout and Stderr ou Standard Error . Les deux commutateurs sont activés par défaut.

    Important

    N'activez pas simultanément la sortie standard et l'erreur standard. Cela pourrait entraîner une confusion dans les journaux collectés.

Collecter les journaux texte des conteneurs Docker

Global Configurations :

  • Configuration Name : Saisissez un nom personnalisé pour la configuration de collecte. Le nom doit être unique au sein du projet et ne peut pas être modifié après la création de la configuration. Le nom doit respecter les conventions suivantes :

    • Il ne peut contenir que des lettres minuscules, des chiffres, des traits d'union (-) et des traits de soulignement (_).

    • Il doit commencer et se terminer par une lettre minuscule ou un chiffre.

Input Configurations :

  • File Path Type :

    • Path in Container : Collecter les fichiers journaux depuis l'intérieur du conteneur.

    • Host Path : Collecter les journaux depuis les services locaux sur l'hôte.

  • File Path : Le chemin absolu du fichier journal à collecter.

    • Linux : Le chemin doit commencer par une barre oblique (/). Par exemple, /data/mylogs/**/*.log indique tous les fichiers ayant l'extension .log dans le répertoire /data/mylogs .

    • Windows : Le chemin doit commencer par une lettre de lecteur. Par exemple, C:\Program Files\Intel\**\*.Log .

  • Maximum Directory Monitoring Depth : La profondeur maximale de répertoire que le caractère générique ** peut correspondre dans le File Path . La valeur par défaut est 0, ce qui indique le répertoire actuel. La valeur peut aller de 0 à 1000.

    Nous vous recommandons de définir ce paramètre sur 0 et de configurer le chemin vers le répertoire contenant le fichier.

2. Traitement et structuration des journaux

Configurez des règles de traitement pour structurer les journaux bruts afin de faciliter les requêtes. Ajoutez un exemple de journal avant de configurer les règles :

Dans la section Processor Configurations de la page Logtail Configuration , cliquez sur Add Log Sample et saisissez le contenu du journal à collecter. Le système identifie le format du journal en fonction de l'exemple et vous aide à générer des expressions régulières et des règles d'analyse. Cela simplifie la configuration.

Scénario 1 : Traitement des journaux multilignes (tels que les journaux de pile Java)

Les piles d'exceptions Java et les journaux JSON multilignes sont divisés par défaut en enregistrements incomplets. Activez le mode multiligne et configurez une expression régulière pour la première ligne afin de fusionner les lignes consécutives en entrées de journal complètes.

Effet de l'exemple :

Journal brut sans aucun traitement

En mode de collecte par défaut, chaque ligne est traitée comme un journal indépendant, ce qui fragmente les informations de la pile et perd le contexte

Avec le mode multiligne activé, une expression régulière pour le début de la ligne identifie le journal complet, préservant ainsi la structure sémantique complète.

image

image

image

Configuration : Dans la section Processor Configurations de la page Logtail Configuration , activez Multi-line Mode :

  • Type : Sélectionnez Custom ou Multi-line JSON .

    • Custom : Le format du journal brut n'est pas fixe. Vous devez configurer une Regex to Match First Line pour identifier la ligne de départ de chaque entrée de journal.

      • Regex to Match First Line : Prend en charge la génération automatique ou la saisie manuelle. L'expression régulière doit correspondre à une ligne complète de données. Par exemple, l'expression régulière de correspondance dans l'exemple précédent est \[\d+-\d+-\w+:\d+:\d+,\d+]\s\[\w+]\s.* .

        • Génération automatique : Cliquez sur Generate . Ensuite, dans la zone de texte Log Sample , sélectionnez le contenu du journal à extraire et cliquez sur Automatically Generate .

        • Saisie manuelle : Cliquez sur Manually Enter Regular Expression . Après avoir saisi l'expression, cliquez sur Validate .

    • Multi-line JSON : Si les journaux bruts sont tous au format JSON standard, SLS gère automatiquement les sauts de ligne au sein d'un seul journal JSON.

  • Processing Method If Splitting Fails :

    • Discard : Si un morceau de texte ne correspond pas à la règle de début de ligne, il est ignoré.

    • Retain Single Line : Le texte non correspondant est découpé et conservé dans le mode de ligne unique d'origine.

Scénario 2 : Journalisation structurée

Pour les journaux non structurés tels que les journaux d'accès NGINX, les plug-ins d'analyse SLS convertissent le texte brut en paires clé-valeur structurées pour une analyse et des alertes efficaces.

Effet de l'exemple :

Journaux bruts

Journaux analysés

192.168.*.* - - [15/Apr/2025:16:40:00 +0800] "GET /nginx-logo.png HTTP/1.1" 0.000 514 200 368 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.*.* Safari/537.36"
body_bytes_sent: 368
http_referer: -
http_user_agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.x.x Safari/537.36
remote_addr:192.168.*.*
remote_user: -
request_length: 514
request_method: GET
request_time: 0.000
request_uri: /nginx-logo.png
status: 200
time_local: 15/Apr/2025:16:40:00

Étapes de configuration : Dans la section Processor Configurations de la page Logtail Configuration :

  1. Ajouter un plug-in d'analyse : Cliquez sur Add Processor et configurez un plug-in tel que l'analyse par expression régulière, l'analyse par séparateur ou l'analyse JSON qui correspond au format du journal. Par exemple, pour collecter les journaux NGINX, sélectionnez Native Processor > Data Parsing (NGINX Mode) .

  2. NGINX Log Configuration : Copiez la définition complète de log_format depuis le fichier de configuration du serveur NGINX (nginx.conf) et collez-la dans cette zone de texte.

    Exemple :

    log_format main  '$remote_addr - $remote_user [$time_local] "$request" ''$request_time $request_length ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent"';
    Important

    La définition du format doit être exactement identique au format utilisé pour générer les journaux sur le serveur. Sinon, l'analyse des journaux échouera.

  3. Paramètres courants : Les paramètres suivants apparaissent dans plusieurs plug-ins d'analyse de données. Leurs fonctions et leur utilisation sont cohérentes.

    • Original Field : Le nom du champ source à analyser. La valeur par défaut est content , qui indique l'intégralité du contenu du journal collecté.

    • Retain Original Field if Parsing Fails : Activez ce commutateur. Si l'analyse échoue en raison d'une incompatibilité de format, le contenu du journal d'origine est conservé dans le champ brut spécifié.

    • Retain Original Field if Parsing Succeeds : Si vous sélectionnez cette option, le contenu du journal d'origine est conservé même si le journal est analysé avec succès.

3. Filtrage des journaux

La collecte de journaux à faible valeur ajoutée (DEBUG, INFO) gaspille de l'espace de stockage et augmente les coûts. Utilisez le filtrage pour ne collecter que les journaux pertinents.

Réduire les coûts grâce au filtrage par contenu

Filtrez les journaux en fonction du contenu des champs. Par exemple, collectez uniquement les journaux de niveau WARNING ou ERROR.

Exemple d'effet :

Journal brut sans aucun traitement

Collecter uniquement les journaux WARNING ou ERROR

{"level":"WARNING","timestamp":"2025-09-23T19:11:40+0800","cluster":"yilu-cluster-0728","message":"Disk space is running low","freeSpace":"15%"}
{"level":"ERROR","timestamp":"2025-09-23T19:11:42+0800","cluster":"yilu-cluster-0728","message":"Failed to connect to database","errorCode":5003}
{"level":"INFO","timestamp":"2025-09-23T19:11:47+0800","cluster":"yilu-cluster-0728","message":"User logged in successfully","userId":"user-123"}
{"level":"WARNING","timestamp":"2025-09-23T19:11:40+0800","cluster":"yilu-cluster-0728","message":"Disk space is running low","freeSpace":"15%"}
{"level":"ERROR","timestamp":"2025-09-23T19:11:42+0800","cluster":"yilu-cluster-0728","message":"Failed to connect to database","errorCode":5003}

Étapes de configuration : Dans la section Processor Configurations de la page Logtail Configuration :

Cliquez sur Add Processor et sélectionnez Native Processor > Data Filtering :

  • Field Name : Le champ de journal à utiliser pour le filtrage.

  • Field Value : L'expression régulière à utiliser pour le filtrage. Seule la correspondance intégrale est prise en charge. La correspondance partielle par mot-clé n'est pas prise en charge.

Contrôler l'étendue de la collecte avec une liste noire

Utilisez une liste noire pour exclure des répertoires ou des fichiers spécifiques. Cela empêche le téléchargement de journaux non pertinents ou sensibles.

Étapes de configuration : Dans la section Input Configurations de la page Logtail Configuration, activez Collection Blacklist et cliquez sur Add.

La correspondance intégrale et la correspondance avec caractères génériques sont prises en charge pour les répertoires et les noms de fichiers. Les caractères génériques pris en charge sont l'astérisque (*) et le point d'interrogation (?).
  • File Path Blacklist : Les chemins de fichier à ignorer. Exemple :

    • /home/admin/private*.log : Ignore tous les fichiers du répertoire /home/admin/ qui commencent par « private » et se terminent par « .log » lors de la collecte.

    • /home/admin/private*/*_inner.log : Ignore les fichiers se terminant par « _inner.log » dans les répertoires commençant par « private » sous le répertoire /home/admin/ lors de la collecte.

  • File Blacklist : Les noms de fichiers à ignorer lors de la collecte. Exemple :

    • app_inner.log : Ignore tous les fichiers nommés app_inner.log lors de la collecte.

  • Directory Blacklist : Le chemin du répertoire ne doit pas se terminer par une barre oblique (/). Exemple :

    • /home/admin/dir1/ : La liste noire des répertoires ne prend pas effet.

    • /home/admin/dir* : Ignore les fichiers dans tous les sous-répertoires du répertoire /home/admin/ qui commencent par « dir » lors de la collecte.

    • /home/admin/*/dir : Ignore tous les fichiers dans les sous-répertoires nommés « dir » au deuxième niveau du répertoire /home/admin/ lors de la collecte. Par exemple, les fichiers du répertoire /home/admin/a/dir sont ignorés, tandis que les fichiers du répertoire /home/admin/a/b/dir sont collectés.

Filtrage des conteneurs

Définissez des conditions de collecte basées sur les métadonnées des conteneurs, telles que les variables d'environnement, les étiquettes de pod, les namespaces et les noms de conteneur, afin de contrôler précisément quels journaux de conteneurs sont collectés.

Étapes de configuration : Dans la section Processor Configurations de la page Logtail Configuration, activez Container Filtering et cliquez sur Add.

Plusieurs conditions sont combinées à l'aide de l'opérateur logique AND. Toutes les correspondances d'expressions régulières sont basées sur le moteur d'expressions régulières RE2 de Go, qui présente certaines limitations par rapport à des moteurs tels que PCRE. Lorsque vous écrivez des expressions régulières, respectez les limites décrites dans Annexe : Limites des expressions régulières (filtrage des conteneurs) .
  • Liste noire/liste blanche des variables d'environnement : Spécifiez les conditions de variable d'environnement pour les conteneurs dont vous souhaitez collecter les journaux.

  • Liste noire/liste blanche des étiquettes de pod K8s : Spécifiez les conditions d'étiquette pour les pods où se trouvent les conteneurs à collecter.

  • Correspondance d'expression régulière du nom de pod K8s : Spécifiez les conteneurs à collecter par nom de pod.

  • Correspondance d'expression régulière du namespace K8s : Spécifiez les conteneurs à collecter par nom de namespace.

  • Correspondance d'expression régulière du nom de conteneur K8s : Spécifiez les conteneurs à collecter par nom de conteneur.

  • Liste noire/liste blanche des étiquettes de conteneur : Collectez les journaux des conteneurs dont les étiquettes répondent aux conditions spécifiées. Ce paramètre est utilisé dans les scénarios Docker et n'est pas recommandé pour les scénarios Kubernetes.

4. Catégorisation des journaux

Lorsque plusieurs applications partagent le même format de journal, configurez des topics et des tags de journal pour distinguer les sources de journaux afin d'optimiser les requêtes.

Configurer un topic

Si plusieurs applications ou instances ont le même format de journal mais des chemins différents, tels que /apps/app-A/run.log et /apps/app-B/run.log, il est difficile de distinguer la source des journaux collectés. Vous pouvez générer un topic basé sur le groupe de machines, un nom personnalisé ou l'extraction du chemin de fichier pour distinguer de manière flexible les journaux provenant de différentes applications ou sources de chemin.

Étapes de configuration : Global Configurations > Other Global Configurations > Log Topic Type : Sélectionnez la méthode de génération du topic. Les trois types suivants sont pris en charge :

  • Machine Group Topic : Si une configuration de collecte est appliquée à plusieurs groupes de machines, LoongCollector utilise automatiquement le nom du groupe de machines auquel appartient le serveur comme valeur du champ __topic__ pour le téléchargement. Cela convient aux scénarios où les journaux sont divisés par cluster d'hôtes.

  • Custom : Le format est customized://<custom_topic_name>, par exemple, customized://app-login. Cela convient aux scénarios de topic statique avec des identifiants métier fixes.

  • File Path Extraction : Extrait les informations clés du chemin complet du fichier journal pour marquer dynamiquement la source du journal. Cela convient aux situations où plusieurs utilisateurs ou applications partagent le même nom de fichier journal mais ont des chemins différents.

    Si plusieurs utilisateurs ou services écrivent des journaux dans des répertoires de premier niveau différents, mais que les sous-chemins et les noms de fichiers sont identiques, la source ne peut pas être distinguée par le seul nom de fichier. Par exemple :

    /data/logs
    ├── userA
    │   └── serviceA
    │       └── service.log
    ├── userB
    │   └── serviceA
    │       └── service.log
    └── userC
        └── serviceA
            └── service.log

    Configurez File Path Extraction et utilisez une expression régulière pour extraire les informations clés du chemin complet. Le résultat correspondant est téléchargé dans le Logstore en tant que topic.

    Règle d'extraction : Basée sur les groupes de capture d'expressions régulières

    Lorsque vous configurez une expression régulière, le système détermine automatiquement le format du champ de sortie en fonction du nombre et du nom des groupes de capture. Les règles sont les suivantes :

    Dans l'expression régulière du chemin de fichier, vous devez échapper la barre oblique (/).

    Type de groupe de capture

    Scénario

    Champ généré

    Exemple d'expression régulière

    Exemple de chemin correspondant

    Champ généré

    Groupe de capture unique (un seul (.*?))

    Une seule dimension est nécessaire pour distinguer la source (comme le nom d'utilisateur, l'environnement)

    Génère le champ __topic__

    \/logs\/(.*?)\/app\.log

    /logs/userA/app.log

    __topic__:userA

    Plusieurs groupes de capture - non nommés (plusieurs (.*?))

    Plusieurs dimensions sont nécessaires mais aucune étiquette sémantique

    Génère un champ de tag __tag__:__topic_{i}__, où {i} est le numéro d'ordre du groupe de capture

    \/logs\/(.*?)\/(.*?)\/app\.log

    /logs/userA/svcA/app.log

    __tag__:__topic_1__userA ;

    __tag__:__topic_2__svcA

    Plusieurs groupes de capture - nommés (utilisation de (?P<name>.*?)

    Plusieurs dimensions sont nécessaires et vous souhaitez que la signification des champs soit claire pour faciliter la requête et l'analyse

    Génère un champ de tag __tag__:{name}

    \/logs\/(?P<user>.*?)\/(?P<service>.*?)\/app\.log

    /logs/userA/svcA/app.log

    __tag__:user:userA ;

    __tag__:service:svcA

Tagging des journaux

Activez la fonctionnalité d'enrichissement des tags de journaux pour extraire les informations clés des variables d'environnement des conteneurs ou des étiquettes de pod Kubernetes et les attacher en tant que tags. Cela permet un regroupement fin des journaux.

Étapes de configuration : Dans la section Input Configurations de la page Logtail Configuration, activez Log Tag Enrichment et cliquez sur Add.

  • Environment Variables : Configurez le nom de la variable d'environnement et le nom du tag. La valeur de la variable d'environnement est stockée dans le nom du tag.

    • Nom de la variable d'environnement : Spécifiez le nom de la variable d'environnement à extraire.

    • Nom du tag : Le nom du tag de la variable d'environnement.

  • Pod Labels : Configurez le nom de l'étiquette de pod et le nom du tag. La valeur de l'étiquette de pod est stockée dans le nom du tag.

    • Nom de l'étiquette de pod : Le nom de l'étiquette de pod Kubernetes à extraire.

    • Nom du tag : Le nom du tag.

5. Configuration de la sortie

Par défaut, tous les journaux sont envoyés vers le Logstore actuel, et la méthode de compression est lz4. Pour distribuer les journaux provenant de la même source vers différents Logstores, vous pouvez configurer les paramètres suivants :

Distribution dynamique multi-cibles

Important
  • La livraison multi-destinations est disponible uniquement pour LoongCollector 3.0.0 et versions ultérieures. Logtail ne prend pas en charge cette fonctionnalité.

  • Vous pouvez configurer jusqu'à cinq destinations de sortie.

  • Après avoir configuré plusieurs destinations de sortie, cette configuration de collecte n'est plus affichée dans la liste des configurations de collecte du Logstore actuel. Pour afficher, modifier ou supprimer une configuration de livraison multi-destinations, consultez Comment gérer les configurations de livraison multi-destinations ?.

Procédure : Dans la zone Output Configurations de la page Logtail Configuration.

  1. Cliquez sur image pour développer la configuration de sortie.

  2. Cliquez sur Add Output Targets et effectuez les configurations suivantes :

    • Logstores : Sélectionnez le Logstore de destination.

    • Compression Method : Prend en charge lz4 et zstd.

    • Route Settings : Acheminez et distribuez les journaux en fonction de leurs champs de tag. Les journaux correspondant à la configuration de routage sont téléchargés vers le Logstore de destination. Si la configuration de routage est vide, tous les journaux collectés sont téléchargés vers le Logstore de destination.

      • Tag Name : Le nom du champ de tag utilisé pour le routage. Saisissez directement le nom du champ, tel que __path__, sans le préfixe __tag__:. Les champs de tag sont divisés en deux catégories suivantes :

        Pour plus d'informations sur les tags, consultez Gérer les tags de collecte LoongCollector .
        • Liés à l'agent : Ces tags sont liés à l'agent de collecte lui-même et ne dépendent pas des plug-ins. Exemples : __hostname__ et __user_defined_id__.

        • Liés au plug-in d'entrée : Ces tags dépendent des plug-ins d'entrée, qui fournissent et enrichissent les journaux avec des informations pertinentes. Exemples : __path__ pour la collecte de fichiers, et _pod_name_ et _container_name_ pour la collecte Kubernetes.

      • Tag Value : Lorsque la valeur du champ de tag d'un journal correspond à cette valeur, le journal est envoyé vers ce Logstore de destination.

      • Discard this tag? : Si vous activez cette option, le journal téléchargé ne contient pas ce champ de tag.

Étape 3 : Configurer la requête et l'analyse

Une fois la configuration du traitement des journaux et des plug-ins terminée, cliquez sur Next pour accéder à la page Query and Analysis Configurations :

  • Le système active l'Index full-text par défaut, qui prend en charge les recherches par mots-clés sur le contenu brut du journal.

  • Pour effectuer des requêtes précises par champ, cliquez sur Automatic Index Generation après le chargement des données Preview Data sur la page. SLS génère un index de champ basé sur la première entrée des données d'aperçu.

Une fois la configuration terminée, cliquez sur Next pour finaliser la configuration de l'ensemble du processus de collecte.

Étape 4 : Valider et dépanner

Une fois la configuration de collecte terminée et appliquée au groupe de machines, le système distribue automatiquement la configuration et commence à collecter les journaux incrémentiels.

Afficher les journaux téléchargés

  1. Confirmez qu'il y a du nouveau contenu dans le fichier journal : LoongCollector collecte uniquement les journaux incrémentiels. Exécutez tail -f /path/to/your/log/file et déclenchez une opération métier pour vous assurer que de nouveaux journaux sont écrits.

  2. Interrogez les journaux : Accédez à la page de requête et d'analyse du Logstore cible, cliquez sur Search & Analyze (la plage de temps par défaut est les 15 dernières minutes) et vérifiez si de nouveaux journaux arrivent. Chaque journal texte de conteneur Docker collecté contient les champs suivants par défaut :

    Nom du champ

    Description

    __source__

    L'adresse IP du conteneur LoongCollector (Logtail).

    _container_ip_

    L'adresse IP du conteneur d'application.

    __tag__:__hostname__

    Le nom de l'hôte Docker où se trouve LoongCollector (Logtail).

    __tag__:__path__

    Le chemin de collecte des journaux.

    __tag__:__receive_time__

    L'heure d'arrivée du journal sur le serveur.

    __tag__:__user_defined_id__

    L'ID personnalisé du groupe de machines.

FAQ

La connexion heartbeat du groupe de machines est FAIL

  1. Vérifiez l'ID utilisateur : Si votre type de serveur n'est pas ECS, ou si l'instance ECS et le projet appartiennent à différents comptes Alibaba Cloud, vérifiez si l'ID utilisateur correct existe dans le répertoire spécifié en vous basant sur le tableau suivant.

    • Linux : Exécutez la commande cd /etc/ilogtail/users/ && touch <uid> pour créer un fichier d'ID utilisateur.

    • Windows : Accédez au répertoire C:\LogtailData\users\ et créez un fichier vide nommé <uid>.

    Si un fichier nommé avec l'ID de compte Alibaba Cloud du projet actuel existe dans le chemin spécifié, l'ID utilisateur est correctement configuré.

  2. Vérifiez l'ID du groupe de machines : Si vous utilisez un ID personnalisé pour le groupe de machines, vérifiez si un fichier user_defined_id existe dans le répertoire spécifié. S'il existe, vérifiez si le contenu du fichier est cohérent avec l'ID personnalisé configuré pour le groupe de machines.

    Système

    Répertoire spécifié

    Solution

    Linux

    /etc/ilogtail/user_defined_id

    # Configure the custom ID. If the directory does not exist, create it manually.
    echo "user-defined-1" > /etc/ilogtail/user_defined_id

    Windows

    C:\LogtailData\user_defined_id

    Créez un nouveau fichier user_defined_id dans le répertoire C:\LogtailData et écrivez-y l'ID personnalisé. (Si le répertoire n'existe pas, créez-le manuellement.)

  3. Si l'ID utilisateur et l'ID du groupe de machines sont correctement configurés, consultez Dépannage des problèmes de groupe de machines LoongCollector (Logtail) pour un dépannage supplémentaire.

Aucune donnée collectée pour les journaux

  1. Vérifiez la présence de journaux incrémentiels : Après avoir configuré LoongCollector (Logtail) pour la collecte, s'il n'y a pas de nouveaux journaux dans le fichier journal à collecter, LoongCollector (Logtail) ne collecte pas les journaux de ce fichier.

  2. Vérifiez le statut heartbeat du groupe de machines : Accédez à la page image Resources > Machine Groups, cliquez sur le nom du groupe de machines cible et, dans la section Machine Group Configurations > Machine Group Status, vérifiez le statut Heartbeat.

  3. Confirmez si la configuration de collecte LoongCollector (Logtail) a été appliquée au groupe de machines : Même si la configuration de collecte LoongCollector (Logtail) est créée, les journaux ne sont pas collectés si la configuration n'est pas appliquée au groupe de machines.

    1. Accédez à la page image Resources > Machine Groups et cliquez sur le nom du groupe de machines cible pour accéder à la page Machine Group Configurations.

    2. Sur la page, affichez Manage Configuration. Le côté gauche affiche All Logtail Configurations, et le côté droit affiche Applied Logtail Configurations. Si la configuration de collecte LoongCollector (Logtail) cible a été déplacée vers la zone appliquée à droite, la configuration a été appliquée avec succès au groupe de machines cible.

    3. Si la configuration de collecte LoongCollector (Logtail) cible n'a pas été déplacée vers la zone appliquée à droite, cliquez sur Modify. Dans la liste All Logtail Configurations à gauche, sélectionnez le nom de la configuration LoongCollector (Logtail) cible, cliquez sur image pour la déplacer vers la zone appliquée à droite, puis cliquez sur Save.

Erreur de collecte de journaux ou format incorrect

Approche de dépannage : Cette situation indique que la connexion réseau et la configuration de base sont normales. Le problème est principalement un décalage entre le contenu du journal et les règles d'analyse. Vous devez afficher le message d'erreur spécifique pour localiser le problème :

  1. Sur la page Logtail Configuration, cliquez sur le nom de la configuration LoongCollector (Logtail) présentant l'erreur de collecte. Dans l'onglet Log Collection Error, cliquez sur Select Time Range pour définir la période de requête.

  2. Dans la section Collection Exception Monitoring > Complete Error Information, affichez la métrique d'alerte du journal d'erreur et trouvez la solution correspondante dans Types d'erreurs courants lors de la collecte de données.

Étapes suivantes

  1. Requête et analyse des journaux :

  2. Visualisation des données : Utilisez des tableaux de bord de visualisation pour surveiller les tendances des métriques clés.

  3. Alerte automatique pour les anomalies de données : Configurez des politiques d'alerte pour être informé des anomalies système en temps réel.

Commandes courantes

Afficher le statut d'exécution de LoongCollector (Logtail)

docker exec ${logtail_container_id} /etc/init.d/ilogtaild status

Afficher des informations telles que le numéro de version, l'adresse IP et l'heure de démarrage de LoongCollector (Logtail)

docker exec ${logtail_container_id} cat /usr/local/ilogtail/app_info.json

Afficher les journaux d'exécution de LoongCollector (Logtail)

Les journaux d'exécution de LoongCollector (Logtail) sont enregistrés dans le répertoire /usr/local/ilogtail/ à l'intérieur du conteneur. Le nom du fichier est ilogtail.LOG, et les fichiers rotationnés sont compressés et stockés sous la forme ilogtail.LOG.x.gz. Exemple :

# View LoongCollector running logs
docker exec a287de895e40 tail -n 5 /usr/local/ilogtail/loongcollector.LOG

# View Logtail running logs
docker exec a287de895e40 tail -n 5 /usr/local/ilogtail/ilogtail.LOG

Exemple de sortie :

[2025-08-25 09:17:44.610496]    [info]  [22]    /build/loongcollector/file_server/polling/PollingModify.cpp:75          polling modify resume:succeeded
[2025-08-25 09:17:44.610497]    [info]  [22]    /build/loongcollector/file_server/polling/PollingDirFile.cpp:100                polling discovery resume:starts
[2025-08-25 09:17:44.610498]    [info]  [22]    /build/loongcollector/file_server/polling/PollingDirFile.cpp:103                polling discovery resume:succeeded
[2025-08-25 09:17:44.610499]    [info]  [22]    /build/loongcollector/file_server/FileServer.cpp:117            file server resume:succeeded
[2025-08-25 09:17:44.610500]    [info]  [22]    /build/loongcollector/file_server/EventDispatcher.cpp:1019              checkpoint dump:succeeded

Redémarrer LoongCollector (Logtail)

# Stop loongcollector
docker exec a287de895e40 /etc/init.d/ilogtaild stop

# Start loongcollector
docker exec a287de895e40 /etc/init.d/ilogtaild start

FAQ

Messages d'erreur courants

Phénomène d'erreur

Cause

Solution

Failed to connect to Logtail

La région du projet est incohérente avec celle du conteneur LoongCollector (Logtail).

Vérifiez la configuration de la région dans ALIYUN_LOGTAIL_CONFIG.

No logs in LogStore

Configuration incorrecte du chemin de fichier.

Confirmez que le chemin du journal dans le conteneur d'application correspond à la configuration de collecte.

Journal d'erreur : The parameter is invalid : uuid=none

Description du problème : Le journal LoongCollector (Logtail) (/usr/local/ilogtail/ilogtail.LOG) contient le journal d'erreur The parameter is invalid : uuid=none.

Solution : Créez un fichier product_uuid sur l'hôte, saisissez un UUID valide quelconque, tel que 169E98C9-ABC0-4A92-B1D2-AA6239C0D261, et montez ce fichier dans le répertoire /sys/class/dmi/id/product_uuid du conteneur LoongCollector (Logtail).

Comment le même fichier journal ou la sortie standard du conteneur peut-il être collecté simultanément par plusieurs configurations de collecte ?**

Par défaut, pour éviter la duplication des données, SLS restreint chaque source de journal à être collectée par une seule configuration de collecte :

  • Un fichier journal texte ne peut correspondre qu'à une seule configuration Logtail.

  • Sortie standard du conteneur (stdout) :

    • Si vous utilisez la nouvelle version du modèle de sortie standard, elle ne peut être collectée que par une seule configuration de collecte de sortie standard par défaut.

    • Si vous utilisez l'ancienne version du modèle de sortie standard, aucune configuration supplémentaire n'est nécessaire et elle prend en charge la collecte de plusieurs copies par défaut.

  1. Connectez-vous à la console Simple Log Service et accédez au projet cible.

  2. Dans le volet de navigation de gauche, choisissez image Logstores et recherchez le Logstore cible.

  3. Cliquez sur l'icône image à côté de son nom pour développer le Logstore.

  4. Cliquez sur Logtail Configuration. Dans la liste des configurations, recherchez la configuration Logtail cible et cliquez sur Manage Logtail Configuration dans la colonne Actions.

  5. Sur la page de configuration Logtail, cliquez sur Edit et faites défiler vers le bas jusqu'à la section Input Configurations :

    • Pour collecter les journaux de fichiers texte : Activez Allow File to Be Collected for Multiple Times.

    • Pour collecter la sortie standard du conteneur : Activez Allow Collection by Different Logtail Configurations.

Annexe : Présentation détaillée des plugins d'analyse natifs

Dans la section Processing Configuration de la page Logtail Configuration, ajoutez des plugins de traitement pour configurer l'analyse structurée des journaux bruts. Pour ajouter un plugin de traitement à une configuration de collecte existante, procédez comme suit :

  1. Dans le volet de navigation de gauche, sélectionnez image Logstores et identifiez le logstore cible.

  2. Cliquez sur l'icône image située à côté du nom du logstore pour le développer.

  3. Sélectionnez Logtail Configuration. Dans la liste des configurations, repérez la configuration Logtail cible et cliquez sur Manage Logtail Configuration dans la colonne Actions.

  4. Sur la page de configuration Logtail, cliquez sur Edit.

Cette section présente les plugins de traitement couramment utilisés. D'autres plugins sont disponibles dans la rubrique Plugins de traitement étendus .
Important

Règles de combinaison des plugins (applicables aux versions LoongCollector / Logtail 2.0 et ultérieures) :

  • Les plugins de traitement natifs et les plugins de traitement étendus peuvent être utilisés indépendamment ou combinés selon vos besoins.

  • Privilégiez les plugins de traitement natifs pour bénéficier de meilleures performances et d'une stabilité accrue.

  • Si les fonctionnalités natives ne répondent pas à vos exigences, ajoutez des plugins de traitement étendus après les plugins natifs pour un traitement complémentaire.

Contrainte d'ordre :

Tous les plugins sont exécutés séquentiellement dans l'ordre de leur configuration, formant ainsi une chaîne de traitement. Notez que tous les plugins de traitement natifs doivent précéder tout plugin de traitement étendu. Une fois qu'un plugin de traitement étendu a été ajouté, vous ne pouvez plus ajouter de plugins de traitement natifs.

Analyse par expression régulière

Extrayez les champs de journal à l'aide d'expressions régulières et analysez les journaux sous forme de paires clé-valeur. Chaque champ peut faire l'objet de requêtes et d'analyses indépendantes.

Résultat attendu :

Journal brut sans traitement

Analyse à l'aide du plugin d'expression régulière

127.0.0.1 - - [16/Aug/2024:14:37:52 +0800] "GET /wp-admin/admin-ajax.php?action=rest-nonce HTTP/1.1" 200 41 "http://www.example.com/wp-admin/post-new.php?post_type=page" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0"
body_bytes_sent: 41
http_referer: http://www.example.com/wp-admin/post-new.php?post_type=page
http_user_agent: Mozilla/5.0 (Windows NT 10.0; ×64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0
remote_addr: 127.0.0.1
remote_user: -
request_method: GET
request_protocol: HTTP/1.1
request_uri: /wp-admin/admin-ajax.php?action=rest-nonce
status: 200
time_local: 16/Aug/2024:14:37:52 +0800

Étapes de configuration : Dans la section Processor Configurations de la page Logtail Configuration, cliquez sur Add Processor et sélectionnez Native Processor > Data Parsing (Regex Mode) :

  • Regular Expression : Utilisée pour faire correspondre le journal. La génération automatique ou la saisie manuelle est prise en charge :

    • Génération automatique :

      • Cliquez sur Generate.

      • Dans le champ Log Sample, mettez en surbrillance le contenu du journal à extraire.

      • Cliquez sur Generate Regular Expression.

        image

    • Saisie manuelle : Cliquez sur Manually Enter Regular Expression en fonction du format du journal.

    Une fois la configuration terminée, cliquez sur Validate pour vérifier si l'expression régulière analyse correctement le contenu du journal.

  • Extracted Field : Définissez le nom de champ (clé) correspondant au contenu du journal extrait (valeur).

  • Pour plus d'informations sur les autres paramètres, consultez les descriptions des paramètres de configuration communs dans la rubrique Scénario 2 : Journalisation structurée.

Analyse par séparateur

Structurez le contenu du journal à l'aide d'un séparateur et analysez-le en plusieurs paires clé-valeur. Les séparateurs à caractère unique et à caractères multiples sont pris en charge.

Résultat attendu :

Journal brut sans traitement

Découpage des champs selon le caractère spécifié ,

05/May/2025:13:30:28,10.10.*.*,"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1",200,18204,aliyun-sdk-java
ip:10.10.*.*
request:POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1
size:18204
status:200
time:05/May/2025:13:30:28
user_agent:aliyun-sdk-java

Étapes de configuration : Dans la section Processor Configurations de la page Logtail Configuration, cliquez sur Add Processor et sélectionnez Native Processor > Data Parsing (Delimiter Mode).

  • Delimiter : Spécifiez le caractère utilisé pour découper le contenu du journal.

    Exemple : Pour un fichier au format CSV, sélectionnez Custom et saisissez une virgule (,).

  • Quote : Si la valeur d'un champ contient le séparateur, vous devez spécifier un guillemet pour encapsuler le champ afin d'éviter un découpage incorrect.

  • Extracted Field : Définissez le nom de champ (clé) correspondant pour chaque colonne, dans l'ordre de séparation. Les règles sont les suivantes :

    • Les noms de champ ne peuvent contenir que des lettres, des chiffres et des traits de soulignement (_).

    • Ils doivent commencer par une lettre ou un trait de soulignement (_).

    • La longueur maximale est de 128 octets.

  • Pour plus d'informations sur les autres paramètres, consultez les descriptions des paramètres de configuration communs dans la rubrique Scénario 2 : Journalisation structurée.

Analyse JSON standard

Structurez un journal JSON de type objet en l'analysant sous forme de paires clé-valeur.

Résultat attendu :

Journal brut sans traitement

Extraction automatique des paires clé-valeur JSON standard

{"url": "POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=U0Ujpek********&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=pD12XYLmGxKQ%2Bmkd6x7hAgQ7b1c%3D HTTP/1.1", "ip": "10.200.98.220", "user-agent": "aliyun-sdk-java", "request": {"status": "200", "latency": "18204"}, "time": "05/Jan/2025:13:30:28"}
ip: 10.200.98.220
request: {"status": "200", "latency" : "18204" }
time: 05/Jan/2025:13:30:28
url: POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=U0Ujpek******&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=pD12XYLmGxKQ%2Bmkd6x7hAgQ7b1c%3D HTTP/1.1
user-agent:aliyun-sdk-java

Étapes de configuration : Dans la section Processor Configurations de la page Logtail Configuration, cliquez sur Add Processor et sélectionnez Native Processor > Data Parsing (Delimiter Mode).

  • Original Field : La valeur par défaut est content. Ce champ sert à stocker le contenu brut du journal à analyser.

  • Pour plus d'informations sur les autres paramètres, consultez les descriptions des paramètres de configuration communs dans la rubrique Scénario 2 : Journalisation structurée.

Analyse JSON imbriqué

Analysez un journal JSON imbriqué en paires clé-valeur en spécifiant la profondeur d'expansion.

Résultat attendu :

Journal brut sans traitement

Profondeur d'expansion : 0, utilisation de la profondeur d'expansion comme préfixe

Profondeur d'expansion : 1, utilisation de la profondeur d'expansion comme préfixe

{"s_key":{"k1":{"k2":{"k3":{"k4":{"k51":"51","k52":"52"},"k41":"41"}}}}}
0_s_key_k1_k2_k3_k41:41
0_s_key_k1_k2_k3_k4_k51:51
0_s_key_k1_k2_k3_k4_k52:52
1_s_key:{"k1":{"k2":{"k3":{"k4":{"k51":"51","k52":"52"},"k41":"41"}}}}

Étapes de configuration : Dans la section Processor Configurations de la page Logtail Configuration, cliquez sur Add Processor et sélectionnez Extended Processor > Expand JSON Field :

  • Original Field : Nom du champ brut à développer, par exemple content.

  • JSON Expansion Depth : Niveau d'expansion de l'objet JSON. La valeur 0 indique une expansion complète (valeur par défaut). La valeur 1 indique le niveau actuel.

  • Character to Concatenate Expanded Keys : Connecteur utilisé pour les noms de champ lors de l'expansion JSON. Le connecteur par défaut est le trait de soulignement (_).

  • Name Prefix of Expanded Keys : Spécifiez le préfixe des noms de champ après l'expansion JSON.

  • Expand Array : Activez cette option pour développer le tableau en paires clé-valeur avec des index.

    Exemple : {"k":["a","b"]} est développé en {"k[0]":"a","k[1]":"b"}.

    Pour renommer les champs développés, par exemple pour passer de prefix_s_key_k1 à new_field_name, ajoutez un plugin Rename Field afin d'effectuer le mappage.
  • Pour plus d'informations sur les autres paramètres, consultez les descriptions des paramètres de configuration communs dans la rubrique Scénario 2 : Journalisation structurée.

Analyse de tableau JSON

Utilisez la fonction json_extract pour extraire des objets JSON d'un tableau JSON.

Résultat attendu :

Journal brut sans traitement

Extraction de la structure du tableau JSON

[{"key1":"value1"},{"key2":"value2"}]
json1:{"key1":"value1"}
json2:{"key2":"value2"}

Étapes de configuration : Dans la section Processor Configurations de la page Logtail Configuration, basculez la Processing Method sur SPL, configurez l'instruction SPL et utilisez la fonction json_extract pour extraire des objets JSON du tableau JSON.

Exemple : Extrayez les éléments du tableau JSON figurant dans le champ de journal content et stockez les résultats dans les nouveaux champs json1 et json2.

* | extend json1 = json_extract(content, '$[0]'), json2 = json_extract(content, '$[1]')

Analyse des journaux Apache

Structurez le contenu du journal en vous basant sur les définitions du fichier de configuration des journaux Apache et analysez-le en plusieurs paires clé-valeur.

Résultat attendu :

Journal brut sans traitement

Analyse du format de journal Apache Common combined

1 192.168.1.10 - - [08/May/2024:15:30:28 +0800] "GET /index.html HTTP/1.1" 200 1234 "https://www.example.com/referrer" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.X.X Safari/537.36"
http_referer:https://www.example.com/referrer
http_user_agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.X.X Safari/537.36
remote_addr:192.168.1.10
remote_ident:-
remote_user:-
request_method:GET
request_protocol:HTTP/1.1
request_uri:/index.html
response_size_bytes:1234
status:200
time_local:[08/May/2024:15:30:28 +0800]

Étapes de configuration : Dans la section Processor Configurations de la page Logtail Configuration, cliquez sur Add Processor et sélectionnez Native Processor > Data Parsing (Apache Mode) :

  • Log Format : combined

  • APACHE LogFormat Configuration : Le système renseigne automatiquement la configuration en fonction du Log Format.

    Important

    Vérifiez le contenu renseigné automatiquement pour vous assurer qu'il est strictement identique au LogFormat défini dans le fichier de configuration Apache du serveur. Ce fichier se trouve généralement à l'emplacement /etc/apache2/apache2.conf.

  • Pour plus d'informations sur les autres paramètres, consultez les descriptions des paramètres de configuration communs dans la rubrique Scénario 2 : Journalisation structurée.

Masquage des données

Masquez les données sensibles présentes dans les journaux.

Résultat attendu :

Journal brut sans traitement

Résultat du masquage

[{'account':'1812213231432969','password':'04a23f38'}, {'account':'1812213685634','password':'123a'}]
[{'account':'1812213231432969','password':'********'}, {'account':'1812213685634','password':'********'}]

Étapes de configuration : Dans la section Processor Configurations de la page Logtail Configuration, cliquez sur Add Processor et sélectionnez Native Processor > Data Masking.

  • Original Field : Champ brut contenant le contenu du journal avant analyse.

  • Data Masking Method :

    • const : Remplace le contenu sensible par la chaîne modifiée.

    • md5 : Remplace le contenu sensible par son hachage MD5 correspondant.

  • Replacement String : Si vous définissez la Masking Method sur const, vous devez saisir une chaîne pour remplacer le contenu sensible.

  • Content Expression that Precedes Replaced Content : Utilisé pour localiser le contenu sensible. Configurez ce paramètre à l'aide de la syntaxe RE2.

  • Content Expression to Match Replaced Content : Expression correspondant au contenu sensible. Configurez ce paramètre à l'aide de la syntaxe RE2.

Analyse temporelle

Analysez le champ horaire du journal et définissez le résultat de l'analyse comme valeur du champ __time__ du journal.

Résultat attendu :

Journal brut sans traitement

Analyse temporelle

{"level":"INFO","timestamp":"2025-09-23T19:11:47+0800","cluster":"yilu-cluster-0728","message":"User logged in successfully","userId":"user-123"}

image

Étapes de configuration : Dans la section Processor Configurations de la page Logtail Configuration, cliquez sur Add Processor et sélectionnez Native Processor > Time Parsing :

  • Original Field : Champ brut contenant le contenu du journal avant analyse.

  • Time Format : Définissez le format horaire correspondant en fonction du contenu temporel du journal.

  • Time Zone : Sélectionnez le fuseau horaire du champ temporel du journal. Par défaut, le fuseau horaire de la machine est utilisé, c'est-à-dire celui de l'environnement où s'exécute le processus LoongCollector (Logtail).

Annexe : Limites des expressions régulières (filtrage de conteneur)

Les expressions régulières utilisées pour le Container Filtering reposent sur le moteur RE2 de Go, qui présente certaines limitations syntaxiques par rapport à d'autres moteurs tels que PCRE. Tenez compte des points suivants lors de la rédaction d'expressions régulières :

1. Différences dans la syntaxe des groupes nommés

Go utilise la syntaxe (?P<name>...) pour définir des groupes nommés et ne prend pas en charge la syntaxe (?<name>...) de PCRE.

  • Exemple correct : (?P<year>\d{4})

  • Syntaxe incorrecte : (?<year>\d{4})

2. Fonctionnalités regex non prises en charge

Les fonctionnalités regex courantes mais complexes suivantes ne sont pas disponibles dans RE2. Évitez de les utiliser :

  • Assertion : (?=...), (?!...), (?<=...), (?<!...)

  • Expression conditionnelle : (?(condition)true|false)

  • Correspondance récursive : (?R), (?0)

  • Référence de sous-programme : (?&name), (?P>name)

  • Groupe atomique : (?>...)

3. Recommandations d'utilisation

Nous vous recommandons d'utiliser des outils tels que Regex101 pour déboguer les expressions régulières. Sélectionnez le mode Golang (RE2) pour la validation afin de garantir la compatibilité. Si vous utilisez l'une des syntaxes non prises en charge mentionnées ci-dessus, le plugin n'effectuera pas l'analyse ou la correspondance correctement.

Annexe : Comparaison des anciennes et nouvelles versions de la sortie standard des conteneurs

Le format des métadonnées de journal pour la sortie standard des conteneurs a été mis à niveau. Le nouveau format consolide les métadonnées dans le champ __tag__ pour optimiser le stockage et normaliser le format.

  1. Principaux avantages de la nouvelle version de la sortie standard

    • Amélioration significative des performances

      • Refonte en C++ : les performances sont améliorées de 180 % à 300 % par rapport à l'ancienne implémentation Go.

      • Prise en charge des plugins natifs pour le traitement des données et le traitement parallèle multithread, exploitant pleinement les ressources système.

      • Combinaison flexible des plugins natifs et Go pour répondre aux exigences des scénarios complexes.

    • Fiabilité accrue

      • Prise en charge d'une file d'attente de rotation des journaux de sortie standard. Le mécanisme de collecte des journaux est unifié avec le mécanisme de collecte de fichiers, offrant une grande fiabilité dans les scénarios où la rotation des journaux de sortie standard est rapide.

    • Consommation réduite des ressources

      • L'utilisation du CPU est réduite de 20 % à 25 %.

      • L'utilisation de la mémoire est réduite de 20 % à 25 %.

    • Cohérence opérationnelle et maintenance améliorées

      • Configuration unifiée des paramètres : les paramètres de configuration du nouveau plugin de collecte de sortie standard sont cohérents avec ceux du plugin de collecte de fichiers.

      • Gestion unifiée des métadonnées : la dénomination des champs de métadonnées des conteneurs et l'emplacement de stockage des journaux de tags sont unifiés avec le scénario de collecte de fichiers. Le côté consommateur n'a besoin de maintenir qu'un seul ensemble de logique de traitement.

  2. Comparaison des fonctionnalités des nouvelles et anciennes versions

    Dimension fonctionnelle

    Fonctionnalités de l'ancienne version

    Fonctionnalités de la nouvelle version

    Méthode de stockage

    Les métadonnées sont directement intégrées dans le contenu du journal en tant que champ normal.

    Les métadonnées sont centralisées dans le tag __tag__.

    Efficacité de stockage

    Chaque journal transporte l'intégralité des métadonnées de manière répétée, ce qui consomme davantage d'espace de stockage.

    Plusieurs journaux dans le même contexte peuvent réutiliser les métadonnées, ce qui permet de réduire les coûts de stockage.

    Cohérence du format

    Incohérent avec le format de collecte de fichiers de conteneur.

    La dénomination des champs et la structure de stockage sont entièrement alignées sur la collecte de fichiers de conteneur, offrant une expérience unifiée.

    Méthode d'accès aux requêtes

    Possibilité d'interroger directement par nom de champ, par exemple _container_name_.

    Nécessite l'accès à la paire clé-valeur correspondante via __tag__, par exemple __tag__: _container_name_.

  3. Tableau de mappage des champs de métadonnées des conteneurs

    Nom du champ de l'ancienne version

    Nom du champ de la nouvelle version

    _container_ip_

    __tag__:_container_ip_

    _container_name_

    __tag__:_container_name_

    _image_name_

    __tag__:_image_name_

    _namespace_

    __tag__:_namespace_

    _pod_name_

    __tag__:_pod_name_

    _pod_uid_

    __tag__:_pod_uid_

    Dans la nouvelle version, tous les champs de métadonnées sont stockés dans la zone de tag du journal au format __tag__:<key>, plutôt que d'être intégrés dans le contenu du journal.

  4. Impact des changements de la nouvelle version sur les utilisateurs

    • Adaptation côté consommateur : Étant donné que l'emplacement de stockage est passé du « contenu » au « tag », la logique de consommation des journaux doit être ajustée en conséquence. Par exemple, vous devez accéder aux champs via __tag__ lors des requêtes.

    • Compatibilité SQL : Le SQL de requête a été automatiquement adapté pour assurer la compatibilité ; les utilisateurs n'ont donc pas besoin de modifier leurs instructions de requête pour traiter simultanément les journaux des nouvelles et anciennes versions.

Pour en savoir plus

Paramètres globaux

Paramètre

Description

Nom de la configuration

Nom de la configuration Logtail. Il doit être unique au sein de son projet. Le nom ne peut pas être modifié après la création de la configuration Logtail.

Type de rubrique de journal

Spécifie la méthode de génération de la rubrique de journal. Les options incluent Rubrique du groupe d'ordinateurs, Extraction du chemin du fichier et Personnalisé.

Paramètres avancés

Paramètres avancés facultatifs pour la configuration globale. Créer une configuration de pipeline Logtail.

Paramètres d'entrée

Paramètre

Description

Mode de déploiement Logtail

DaemonSet : déploie un LoongCollector sur chaque nœud du cluster pour collecter les journaux de tous les conteneurs de ce nœud.

Sidecar : chaque Pod exécute un conteneur LoongCollector pour collecter les journaux de tous les conteneurs de ce Pod. La collecte des journaux est isolée entre les différents Pods.

Type de chemin de fichier

Prend en charge la configuration d'un Path in Container ou d'un Host Path.

  • Path in Container : sélectionnez cette option pour collecter des fichiers journaux texte à l'intérieur d'un conteneur.

  • Host Path : sélectionnez cette option pour collecter les journaux de service depuis les nœuds du cluster.

Chemin du fichier

Spécifie le répertoire des journaux et le nom du fichier en fonction de leur emplacement sur l'hôte, par exemple une instance ECS.

  • Si l'hôte cible est un système Linux, le chemin du journal doit commencer par une barre oblique (/). Par exemple, /apsara/nuwa/**/app.Log.

  • Si l'hôte cible est un système Windows, le chemin du journal doit commencer par une lettre de lecteur. Par exemple, C:\Program Files\Intel\**\*.Log.

Les noms de répertoire et de fichier prennent en charge la correspondance exacte et les caractères génériques. Voir Correspondance avec caractères génériques. Les seuls caractères génériques pris en charge pour les chemins de journaux sont l'astérisque (*) et le point d'interrogation (?).

La collecte des journaux utilise une correspondance de répertoires multiniveaux. Cela signifie que Logtail recherche tous les fichiers correspondant aux critères dans le répertoire spécifié et tous ses sous-répertoires. Par exemple :

  • /apsara/nuwa/**/*.log indique les fichiers avec le suffixe .log dans le répertoire /apsara/nuwa et ses sous-répertoires récursifs.

  • /var/logs/app_*/**/.log indique les fichiers avec le suffixe .log dans tous les répertoires correspondant au format app_ sous le répertoire /var/logs et leurs sous-répertoires récursifs.

  • /var/log/nginx/**/access* indique les fichiers dont le nom commence par access dans le répertoire /var/log/nginx et ses sous-répertoires récursifs.

Profondeur maximale de surveillance des répertoires

Spécifie la profondeur maximale des répertoires à surveiller. Il s'agit de la profondeur maximale des répertoires correspondant au caractère générique ** dans le File Path. Une valeur de 0 indique que seul le répertoire actuel est surveillé.

Sortie standard

Si vous activez Stdout and Stderr, Logtail collecte la sortie standard du conteneur.

Erreur standard

Si vous activez Standard Error, Logtail collecte l'erreur standard du conteneur.

Autoriser la collecte multiple de la sortie standard

Par défaut, la sortie standard d'un conteneur ne peut être collectée que par une seule configuration Logtail. Pour collecter la sortie standard avec plusieurs configurations, activez l'option Allow File to Be Collected for Multiple Times.

Activer l'aperçu des métadonnées du conteneur

L'activation de l'option Enable Container Metadata Preview vous permet de consulter les métadonnées du conteneur après la création d'une configuration Logtail. Cela inclut les informations sur les conteneurs correspondants et les informations complètes sur les conteneurs.

Filtrage des conteneurs

  • Conditions de filtrage

Important
  • Un libellé de conteneur correspond au libellé présent dans la sortie de la commande docker inspect et diffère d'un libellé Kubernetes. Obtenir les libellés de conteneur.

  • Une variable d'environnement est configurée au démarrage d'un conteneur. Obtenir les variables d'environnement du conteneur.

  • Dans les scénarios Kubernetes, utilisez les informations de niveau Kubernetes pour le filtrage des conteneurs, telles que K8s Pod Name Regular Matching, K8s Namespace Regular Matching, K8s Container Name Regular Matching et Kubernetes Pod Label Whitelist.

  1. Dans Kubernetes, les namespaces et les noms de conteneurs sont mappés respectivement aux libellés de conteneur io.kubernetes.pod.namespace et io.kubernetes.container.name. Nous vous recommandons d'utiliser ces libellés pour le filtrage des conteneurs. Par exemple, si un Pod appartient au namespace backend-prod et possède un conteneur nommé worker-server, vous pouvez collecter les journaux du conteneur en définissant la liste d'autorisation des libellés de conteneur sur io.kubernetes.pod.namespace : backend-prod ou io.kubernetes.container.name : worker-server.

  2. Si ces deux libellés de conteneur ne répondent pas à vos besoins de filtrage, utilisez la liste d'autorisation ou de blocage des variables d'environnement pour le filtrage des conteneurs.

K8s Pod Name Regular Matching

Spécifie une expression régulière pour faire correspondre les noms de Pod. Les journaux sont collectés à partir des conteneurs situés dans les Pods correspondants. Par exemple, si vous définissez ce paramètre sur ^(nginx-log-demo.*)$, tous les conteneurs des Pods dont le nom commence par nginx-log-demo sont mis en correspondance.

K8s Namespace Regular Matching

Spécifie une expression régulière pour faire correspondre les namespaces. Les journaux sont collectés à partir des conteneurs situés dans les namespaces correspondants. Par exemple, si vous définissez ce paramètre sur ^(default|nginx)$, tous les conteneurs des namespaces nginx et default sont mis en correspondance.

K8s Container Name Regular Matching

Spécifie une expression régulière pour faire correspondre les noms de conteneur. Le nom du conteneur Kubernetes est défini dans spec.containers. Les journaux sont collectés à partir des conteneurs dont le nom correspond. Par exemple, si vous définissez ce paramètre sur ^(container-test)$, tous les conteneurs nommés container-test sont mis en correspondance.

Container Label Whitelist (We recommend that you configure this parameter in a Docker environment and do not configure this parameter in a Kubernetes environment.)

Spécifie les conteneurs à partir desquels collecter les journaux. Par défaut, cette liste est vide, ce qui signifie que la sortie standard de tous les conteneurs est collectée. Pour définir une liste d'autorisation des libellés de conteneur, LabelKey est requis et LabelValue est facultatif.

  • Si LabelValue est vide, tous les conteneurs portant le libellé LabelKey sont mis en correspondance.

  • Si LabelValue n'est pas vide, seuls les conteneurs dont le libellé est identique à LabelKey=LabelValue sont mis en correspondance.

    Par défaut, LabelValue utilise une correspondance de chaîne. La correspondance réussit uniquement si LabelValue est identique à la valeur du libellé du conteneur. Si la valeur commence par ^ et se termine par $, une correspondance d'expression régulière est utilisée. Par exemple, si vous définissez LabelKey sur io.kubernetes.container.name et LabelValue sur ^(nginx|cube)$, les conteneurs nommés nginx ou cube sont mis en correspondance.

Plusieurs entrées de la liste d'autorisation ont une relation logique OU. Un conteneur est mis en correspondance si son libellé correspond à l'une des entrées de la liste d'autorisation.

Container Label Blacklist (We recommend that you configure this parameter in a Docker environment and do not configure this parameter in a Kubernetes environment.)

Exclut des conteneurs de la collecte des journaux. Par défaut, cette liste est vide, ce qui signifie qu'aucun conteneur n'est exclu. Pour définir une liste de blocage des libellés de conteneur, LabelKey est requis et LabelValue est facultatif.

  • Si LabelValue est vide, tous les conteneurs portant le libellé LabelKey sont exclus.

  • Si LabelValue n'est pas vide, seuls les conteneurs dont le libellé est identique à LabelKey=LabelValue sont exclus.

    LabelValue utilise par défaut une correspondance de chaîne. La correspondance réussit uniquement si la valeur de LabelValue est identique à la valeur du libellé du conteneur. Si la valeur commence par ^ et se termine par $, une correspondance d'expression régulière est effectuée. Par exemple, si vous définissez LabelKey sur io.kubernetes.container.name et LabelValue sur ^(nginx|cube)$, cela met en correspondance les conteneurs nommés nginx ou cube.

Plusieurs entrées de la liste de blocage ont une relation logique OU. Un conteneur est exclu si son libellé correspond à l'une des entrées de la liste de blocage.

Environment Variable Whitelist

Spécifie les conteneurs à partir desquels collecter les journaux. Par défaut, cette liste est vide, ce qui signifie que la sortie standard de tous les conteneurs est collectée. Pour définir une liste d'autorisation des variables d'environnement, EnvKey est requis et EnvValue est facultatif.

  • Si EnvValue est vide, tous les conteneurs possédant la variable d'environnement EnvKey sont mis en correspondance.

  • Si EnvValue n'est pas vide, seuls les conteneurs dont la variable d'environnement est identique à EnvKey=EnvValue sont mis en correspondance.

    Par défaut, EnvValue utilise une correspondance de chaîne. La correspondance réussit uniquement si la valeur de EnvValue est identique à la valeur de la variable d'environnement. Si la valeur commence par ^ et se termine par $, il s'agit d'une correspondance d'expression régulière. Par exemple, si vous définissez EnvKey sur NGINX_SERVICE_PORT et EnvValue sur ^(80|6379)$, cette configuration met en correspondance les conteneurs dont le port de service est 80 ou 6379.

Plusieurs entrées de la liste d'autorisation ont une relation logique OU. Un conteneur est mis en correspondance si ses variables d'environnement correspondent à l'une des paires clé-valeur spécifiées.

Environment Variable Blacklist

Exclut des conteneurs de la collecte des journaux. Par défaut, cette liste est vide, ce qui signifie qu'aucun conteneur n'est exclu. Pour définir une liste de blocage des variables d'environnement, EnvKey est requis et EnvValue est facultatif.

  • Si EnvValue est vide, les journaux de tous les conteneurs possédant la variable d'environnement EnvKey sont exclus.

  • Si EnvValue n'est pas vide, seuls les conteneurs dont la variable d'environnement est identique à EnvKey=EnvValue sont exclus.

    Par défaut, EnvValue utilise une correspondance de chaîne, ce qui signifie que la correspondance réussit uniquement si la valeur de EnvValue est identique à la valeur de la variable d'environnement. Si la valeur commence par ^ et se termine par $, elle est traitée comme une expression régulière. Par exemple, si vous définissez EnvKey sur NGINX_SERVICE_PORT et EnvValue sur ^(80|6379)$, cette configuration met en correspondance les conteneurs dont le port de service est 80 ou 6379.

Plusieurs entrées de la liste de blocage ont une relation logique OU. Un conteneur est exclu si ses variables d'environnement correspondent à l'une des paires clé-valeur spécifiées.

Kubernetes Pod Label Whitelist

Spécifie les conteneurs à partir desquels collecter les journaux en utilisant une liste d'autorisation de libellés Kubernetes. Pour définir une liste d'autorisation de libellés Kubernetes, LabelKey est requis et LabelValue est facultatif.

  • Si LabelValue est vide, tous les conteneurs portant le libellé Kubernetes LabelKey sont mis en correspondance.

  • Si LabelValue n'est pas vide, seuls les conteneurs dont le libellé Kubernetes est identique à LabelKey=LabelValue sont mis en correspondance.

    Par défaut, LabelValue utilise une correspondance de chaîne, ce qui signifie que la correspondance réussit uniquement si LabelValue est identique à la valeur du libellé Kubernetes. Si la valeur commence par ^ et se termine par $, elle est traitée comme une expression régulière. Par exemple, définir LabelKey sur app et LabelValue sur ^(test1|test2)$ met en correspondance les conteneurs portant le libellé Kubernetes app:test1 ou app:test2.

Plusieurs entrées de la liste d'autorisation ont une relation logique OU. Un conteneur est mis en correspondance si son libellé Kubernetes correspond à l'une des entrées de la liste d'autorisation.

Remarque
  • Si vous modifiez un libellé sur un contrôleur de ressource Kubernetes tel qu'un Deployment pendant l'exécution, le Pod en cours d'exécution n'est pas redémarré. Par conséquent, le Pod ne peut pas détecter le changement, ce qui peut entraîner l'échec des règles de correspondance. Lorsque vous configurez la liste d'autorisation et la liste de blocage des libellés Kubernetes, utilisez les libellés Kubernetes des Pods. Pour plus d'informations sur les libellés Kubernetes, voir Libellés et sélecteurs.

Kubernetes Pod Label Blacklist

Exclut des conteneurs de la collecte des journaux en utilisant une liste de blocage de libellés Kubernetes. Pour définir une liste de blocage de libellés Kubernetes, LabelKey est requis et LabelValue est facultatif.

  • Si LabelValue est vide, tous les conteneurs portant le libellé Kubernetes LabelKey sont exclus.

  • Si LabelValue n'est pas vide, seuls les conteneurs dont le libellé Kubernetes est identique à LabelKey=LabelValue sont exclus.

    Par défaut, LabelValue effectue une correspondance de chaîne exacte. La correspondance réussit uniquement si LabelValue est identique à la valeur du libellé Kubernetes. Si la valeur commence par ^ et se termine par $, elle est traitée comme une expression régulière. Par exemple, si vous définissez LabelKey sur app et LabelValue sur ^(test1|test2)$, cela met en correspondance les conteneurs portant les libellés Kubernetes app:test1 ou app:test2.

Plusieurs entrées de la liste de blocage ont une relation logique OU. Un conteneur est exclu si son libellé Kubernetes correspond à l'une des entrées de la liste de blocage.

Remarque
  • Si vous modifiez un libellé sur un contrôleur de ressource Kubernetes tel qu'un Deployment pendant l'exécution, le Pod en cours d'exécution n'est pas redémarré. Par conséquent, le Pod ne peut pas détecter le changement, ce qui peut entraîner l'échec des règles de correspondance. Lorsque vous configurez la liste d'autorisation et la liste de blocage des libellés Kubernetes, utilisez les libellés Kubernetes des Pods. Pour plus d'informations sur les libellés Kubernetes, voir Libellés et sélecteurs.

Enrichissement des tags de journal

Ajoute des variables d'environnement et des libellés Kubernetes aux journaux en tant que tags de journal.

Environment Variables

Après avoir configuré les champs d'extension de variable d'environnement, Log Service ajoute des champs liés aux variables d'environnement à vos journaux. Par exemple, si vous définissez Environment Variable Name sur VERSION et Tag Name sur env_version, et qu'un conteneur possède la variable d'environnement VERSION=v1.0.0, le champ __tag__:__env_version__: v1.0.0 est ajouté à vos journaux.

Pod Labels

Après avoir configuré les champs d'extension de Pod Kubernetes, Log Service ajoute des champs liés aux Pods Kubernetes à vos journaux. Par exemple, si vous définissez le Pod Label Name sur app et le Tag Name sur k8s_pod_app, le champ __tag__:__k8s_pod_app__: serviceA est ajouté aux journaux d'un Pod portant le libellé app=serviceA.

Encodage de fichier

Spécifie le format d'encodage des fichiers journaux.

Taille de la première collecte

Lorsque la configuration prend effet pour la première fois, ce paramètre spécifie la position de départ de la collecte, mesurée à partir de la fin du fichier. La valeur par défaut est 1 024 Ko.

  • Pour la première collecte, si un fichier est inférieur à 1 024 Ko, la collecte commence au début du fichier.

  • Pour la première collecte, si un fichier est supérieur à 1 024 Ko, la collecte commence à 1 024 Ko de la fin du fichier.

Vous pouvez modifier la First Collection Size. La valeur, spécifiée en Ko, peut varier de 0 à 10 485 760.

Liste de blocage de collecte

L'activation de l'option Collection Blacklist vous permet de configurer une liste de blocage pour ignorer des répertoires ou des fichiers spécifiques lors de la collecte. Vous pouvez spécifier des répertoires et des noms de fichiers en utilisant des correspondances exactes ou des caractères génériques. Les seuls caractères génériques pris en charge sont l'astérisque (*) et le point d'interrogation (?).

Important
  • Si vous utilisez un caractère générique dans le File Path mais souhaitez filtrer certains des chemins résultants, vous devez saisir les chemins complets correspondants dans la Collection Blacklist pour garantir que la configuration de la liste de blocage prenne effet.

    Par exemple, si vous définissez le File Path sur /home/admin/app/log/.log mais souhaitez exclure tous les sous-répertoires du répertoire /home/admin/app1, sélectionnez Directory Blacklist et définissez le répertoire sur /home/admin/app1/**. Si vous définissez le répertoire sur /home/admin/app1*, la liste de blocage ne prendra pas effet.

  • La correspondance avec la liste de blocage entraîne une surcharge de calcul. Pour des performances optimales, utilisez 10 entrées de liste de blocage ou moins.

  • Un chemin de répertoire ne peut pas se terminer par une barre oblique (/). Par exemple, si vous définissez le chemin sur /home/admin/dir1/, la liste de blocage de répertoire ne prend pas effet.

Vous pouvez configurer une liste de blocage par chemin de fichier, nom de fichier ou répertoire.

File Path Blacklist

  • Sélectionnez File Path Blacklist et définissez le chemin sur /home/admin/private*.log pour ignorer tous les fichiers du répertoire /home/admin/ qui commencent par private et se terminent par .log lors de la collecte.

  • Sélectionnez File Path Blacklist et définissez le chemin sur /home/admin/private/_inner.log pour ignorer les fichiers se terminant par _inner.log dans les répertoires commençant par private sous le répertoire /home/admin/. Par exemple, le fichier /home/admin/private/app_inner.log est ignoré, mais le fichier /home/admin/private/app.log est collecté.

Liste de blocage de fichiers

Si vous sélectionnez File Blacklist et définissez le nom de fichier sur app_inner.log, tous les fichiers nommés app_inner.log sont ignorés lors de la collecte.

Liste de blocage de répertoire

  • Sélectionnez Directory Blacklist et définissez le répertoire sur /home/admin/dir1. Cela ignore tous les fichiers du répertoire /home/admin/dir1 lors de la collecte.

  • Sélectionnez Directory Blacklist et définissez le répertoire sur /home/admin/dir* pour ignorer tous les fichiers des sous-répertoires commençant par dir sous le répertoire /home/admin/ lors de la collecte.

  • Sélectionnez Directory Blacklist et définissez le répertoire sur /home/admin/*/dir. Cela ignore tous les fichiers de tout sous-répertoire de deuxième niveau nommé dir sous le répertoire /home/admin/ lors de la collecte. Par exemple, les fichiers du répertoire /home/admin/a/dir sont ignorés, mais les fichiers du répertoire /home/admin/a/b/dir sont collectés.

Autoriser la collecte multiple d'un fichier

Par défaut, un fichier journal ne peut correspondre qu'à une seule configuration Logtail. Si les journaux d'un fichier doivent être collectés plusieurs fois, activez l'option Allow File to Be Collected for Multiple Times.

Paramètres avancés

Paramètres avancés facultatifs pour le plugin d'entrée de fichier. Créer une configuration de pipeline Logtail.

Paramètres du processeur

Paramètre

Description

Exemple de journal

Un échantillon du journal que vous souhaitez collecter. Utilisez un exemple de journal issu de votre cas d'utilisation réel. L'exemple vous aide à configurer plus facilement les paramètres de traitement. Vous pouvez ajouter plusieurs exemples. La longueur totale ne peut pas dépasser 1 500 caractères.

[2023-10-01T10:30:01,000] [INFO] java.lang.Exception: exception happened
    at TestPrintStackTrace.f(TestPrintStackTrace.java:3)
    at TestPrintStackTrace.g(TestPrintStackTrace.java:7)
    at TestPrintStackTrace.main(TestPrintStackTrace.java:16)

Mode multiligne

  • Type de journal multiligne : un journal multiligne est une entrée qui s'étend sur plusieurs lignes. Vous devez définir une règle pour identifier le début de chaque entrée de journal.

    • Custom : utilise une Regex to Match First Line afin d'identifier chaque entrée de journal.

    • Multi-line JSON : chaque objet JSON est développé sur plusieurs lignes. Exemple :

      {
        "name": "John Doe",
        "age": 30,
        "address": {
          "city": "New York",
          "country": "USA"
        }
      }
  • Action en cas d'échec du fractionnement :

    Exception in thread "main" java.lang.NullPointerException
        at com.example.MyClass.methodA(MyClass.java:12)
        at com.example.MyClass.methodB(MyClass.java:34)
        at com.example.MyClass.main(MyClass.java:½0)

    Si Log Service ne parvient pas à fractionner le contenu du journal précédent :

    • Discard : supprime ce segment de journal.

    • Retain Single Line : conserve chaque ligne de texte en tant qu'entrée de journal distincte, ce qui donne un total de quatre entrées de journal.

Mode de traitement

Processors, qui inclut le Native Processor et le Extended Processor. Pour plus d'informations sur les processeurs, voir Utiliser des processeurs natifs et étendus.

Important

Pour connaître les limites d'utilisation des processeurs, reportez-vous aux invites de la console.

  • Logtail 2.0 et versions ultérieures :

    • Vous pouvez combiner des processeurs natifs de n'importe quelle manière.

    • Vous pouvez combiner des processeurs natifs et étendus, mais tous les processeurs étendus doivent suivre tous les processeurs natifs.

  • Versions de Logtail antérieures à 2.0 :

    • Vous ne pouvez pas utiliser conjointement des processeurs natifs et étendus.

    • Les processeurs natifs ne peuvent être utilisés que pour collecter des journaux texte. Lors de l'utilisation de processeurs natifs, vous devez respecter les exigences suivantes :

      • Le premier processeur doit être un processeur d'analyse par expression régulière, d'analyse basée sur des délimiteurs, d'analyse JSON, d'analyse de modèle Nginx, d'analyse de modèle Apache ou d'analyse de modèle IIS.

      • Après le processeur d'analyse initial, vous pouvez ajouter au maximum un processeur d'analyse temporelle, un processeur de filtrage et plusieurs processeurs de masquage des données.

    • Pour les paramètres Retain Original Field if Parsing Fails et Retain Original Field if Parsing Succeeds, seules les combinaisons suivantes sont valides.

      • Télécharger uniquement les journaux analysés avec succès :

        image

      • Télécharger les journaux analysés en cas de réussite et les journaux bruts en cas d'échec :

        image

      • En cas de réussite, téléchargez les journaux analysés et ajoutez le champ de journal brut. En cas d'échec, téléchargez les journaux bruts.

        Par exemple, si le journal original "content": "{"request_method":"GET", "request_time":"200"}" est analysé avec succès, l'ajout du champ d'origine ajoute un nouveau champ au journal analysé. Le nom du champ est le champ d'origine renommé (s'il est laissé vide, le nom prend par défaut le nom du champ d'origine) et la valeur du champ est le journal original {"request_method":"GET", "request_time":"200"}.

        image

Régions

  1. Connectez-vous à la console Simple Log Service. Dans la liste des projets, cliquez sur le projet de destination.

  2. Cliquez sur l'icône image à côté du nom du projet pour accéder à la page de présentation du projet.

  3. Dans la section Informations de base, affichez le nom de la région du projet actuel. Le tableau suivant établit la correspondance entre les noms de région et leurs ID de région respectifs.

    Une région est l'emplacement géographique du centre de données physique d'un service cloud . Un ID de région est son identifiant unique.

    Nom de la région

    ID de région

    Chine (Qingdao)

    cn-qingdao

    Chine (Pékin)

    cn-beijing

    Chine (Zhangjiakou)

    cn-zhangjiakou

    Chine (Hohhot)

    cn-huhehaote

    Chine (Ulanqab)

    cn-wulanchabu

    Chine (Hangzhou)

    cn-hangzhou

    Chine (Shanghai)

    cn-shanghai

    Chine (Nanjing - Région locale - Mise hors service)

    cn-nanjing

    Chine (Fuzhou - Région locale - Mise hors service)

    cn-fuzhou

    Chine (Shenzhen)

    cn-shenzhen

    Chine (Heyuan)

    cn-heyuan

    Chine (Guangzhou)

    cn-guangzhou

    Philippines (Manille)

    ap-southeast-6

    Corée du Sud (Séoul)

    ap-northeast-2

    Malaisie (Kuala Lumpur)

    ap-southeast-3

    Japon (Tokyo)

    ap-northeast-1

    Thaïlande (Bangkok)

    ap-southeast-7

    Chine (Chengdu)

    cn-chengdu

    Singapour

    ap-southeast-1

    Indonésie (Jakarta)

    ap-southeast-5

    Chine (Hong Kong)

    cn-hongkong

    Allemagne (Francfort)

    eu-central-1

    États-Unis (Virginie)

    us-east-1

    États-Unis (Silicon Valley)

    us-west-1

    Royaume-Uni (Londres)

    eu-west-1

    Émirats arabes unis (Dubaï)

    me-east-1

    Arabie saoudite (Riyad - Région partenaire)

    me-central-1

Types de transmission réseau

Type de réseau

Type de nom de domaine correspondant

Description

Scénarios

Réseau interne Alibaba Cloud

Nom de domaine privé

Le réseau interne Alibaba Cloud est un réseau partagé gigabit. Le transfert des données de journal sur ce réseau est plus rapide et plus stable que sur Internet. Le réseau interne comprend les clouds privés virtuels (VPC) et les réseaux classiques.

L'instance ECS et le projet SLS se trouvent dans la même région, ou un serveur est connecté à un cloud privé virtuel (VPC) via Express Connect.

Remarque

Créez un projet SLS dans la même région que l'instance ECS pour collecter les journaux via le réseau interne Alibaba Cloud. Cette méthode ne consomme pas de bande passante publique.

Internet

Nom de domaine public

Le transfert des données de journal sur Internet est limité par la bande passante du réseau. La vitesse et la stabilité de la collecte des données peuvent également être affectées par les fluctuations du réseau, la latence et la perte de paquets.

Transférez les données via Internet dans les deux scénarios suivants.

  • L'instance ECS et le projet SLS se trouvent dans des régions différentes.

  • Le serveur est hébergé par un autre fournisseur de cloud ou dans un centre de données géré en interne.

Accélération du transfert

Endpoint d'accélération

Cette méthode utilise les nœuds périphériques du réseau de distribution de contenu (CDN) d'Alibaba Cloud pour accélérer la collecte des journaux. Elle offre des avantages significatifs en termes de latence et de stabilité du réseau par rapport à la collecte de données via Internet. Toutefois, des frais supplémentaires s'appliquent pour le trafic.

Si votre serveur d'application et votre projet SLS se trouvent dans des pays différents, le transfert de données via Internet peut entraîner une latence élevée et une instabilité. Utilisez l'accélération du transfert pour résoudre ces problèmes. Pour plus d'informations, voir Accélération du transfert.