Tous les produits
Search
Centre de documentation

Simple Log Service:Data parsing plugins

Dernière mise à jour :Aug 26, 2026

Par défaut, Log Service stocke les journaux bruts dans le champ content. Utilisez un plugin d'analyse pour extraire des paires clé-valeur structurées, ce qui permet d'effectuer des requêtes, des agrégations et des visualisations au niveau des champs. Les plugins d'analyse s'appliquent à n'importe quel champ : il vous suffit de spécifier le champ cible et de choisir un plugin adapté au format du contenu.

Exemple d'analyse des données

Voici un journal d'application courant avant et après l'analyse :

Sans plugin d'analyse des données

Sans analyse, toutes les informations sont stockées dans un seul champ content, ce qui rend les données difficiles à interroger et à analyser par champ.

Content:"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""

Avec un plugin d'analyse par expression régulière

Un plugin d'analyse par expression régulière extrait des champs nommés qui peuvent être interrogés et analysés indépendamment.

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; Win64; ×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

Sélection d'un plugin d'analyse des données

  • Recommandé : Analyse dédiée aux formats de journaux. Pour les journaux Nginx, Apache ou IIS, utilisez le mode d'analyse dédié (Analyse en mode Nginx, Analyse en mode Apache, Analyse en mode IIS). Aucune règle manuelle n'est nécessaire.

  • Alternative : Analyse de données structurées (JSON / délimiteur). Pour les objets JSON ou les journaux utilisant un délimiteur fixe (virgule, barre verticale, etc.), utilisez l'analyse JSON ou l'analyse en mode délimiteur. La configuration est simple et l'analyse rapide.

  • Solution de secours : Analyse par expression régulière. Utilisez l'analyse par expression régulière pour les journaux irréguliers et non structurés que les autres modes ne peuvent pas traiter. Bien que polyvalente, l'expression régulière est plus difficile à écrire et à déboguer, et peut réduire le débit.

Procédure

Ajoutez un plugin d'analyse lors de la création ou de la modification d'une configuration Logtail.

Modifier une configuration existante

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

  2. Dans la section Projects, cliquez sur celui que vous souhaitez utiliser.

    image

  3. Dans l'onglet Log Storage > Logstores, cliquez sur > à côté du Logstore cible, puis choisissez Data Collection > Logtail Configurations.

  4. Dans la liste Logtail Configurations, cliquez sur Manage Logtail Configuration dans la colonne Actions de la configuration cible.

  5. Cliquez sur Edit en haut de la page. Dans la section Processor Configurations en bas de la page, ajoutez un plugin Logtail, puis cliquez sur Save.

Créer une nouvelle configuration

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

  2. Cliquez sur la carte Quick Data Import située à droite de la console.

  3. Dans la boîte de dialogue Import Data, cliquez sur une carte de source de données et suivez l'assistant. À l'étape Logtail Configurations, ajoutez un plugin Logtail dans la section Logtail Configurations.

    Remarque

    Les paramètres du plugin sont identiques à ceux utilisés lors de la modification d'une configuration Logtail.

Utilisation des plugins d'analyse des données

Paramètres communs

Ces paramètres s'appliquent à tous les plugins d'analyse des données et ne sont pas répétés dans les sections suivantes.

Paramètre

Description

Original Field

Champ source contenant le contenu du journal à analyser. Par défaut, il s'agit de content, qui stocke l'intégralité de l'entrée de journal brute.

Retain Original Field if Parsing Fails

Recommandé. Conserve le contenu original dans le champ source en cas d'échec de l'analyse (par exemple, en raison d'une incompatibilité de format), ce qui préserve les données pour le débogage.

Retain Original Field if Parsing Succeeds

Conserve le contenu original du journal après une analyse réussie. Généralement utilisé pour la vérification des données.

New Name of Original Field

Renomme le champ source conservé afin d'éviter les conflits de noms lorsque l'option Keep source field on parse failure ou Keep source field on parse success est activée.

Analyse par expression régulière

Extrait les champs des journaux à l'aide d'une expression régulière et les analyse sous forme de paires clé-valeur. Très flexible, cette méthode s'adapte à presque tous les formats de texte.

Configuration

  • Détails des paramètres

    Outre les paramètres communs, ce plugin dispose des paramètres principaux suivants :

    Paramètre

    Description

    Regular Expression

    Expression régulière utilisée pour faire correspondre le contenu du journal.

    • Si vous fournissez un exemple de journal, vous pouvez générer automatiquement ou saisir manuellement une expression régulière.

      • Cliquez sur Generate. Dans la zone de texte Log Sample, mettez en surbrillance le contenu à extraire, puis cliquez sur Generate Regular Expression. Simple Log Service génère une expression régulière basée sur votre sélection.

      • Cliquez sur Manually Enter Regular Expression et saisissez une expression régulière. Après avoir saisi l'expression, cliquez sur Validate pour confirmer qu'elle analyse correctement le contenu du journal. Pour plus d'informations, consultez la rubrique Comment tester une expression régulière.

    • Si vous ne fournissez pas d'exemple de journal, vous devez saisir manuellement une expression régulière correspondant au format de votre journal.

    Extracted Field

    Spécifie les noms de champ (clés) pour le contenu du journal extrait (valeurs).

  • Exemple de configuration

    • Journal d'entrée

      127.0.0.1 - - [16/Oct/2023:12:36:49 +0800] "GET /index.html HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"
    • Configuration du plugin

      Suivez la Procédure pour configurer le plugin. L'expression régulière est (\S+)\s-\s(\S+)\s\[([^]]+)]\s"(\w+)\s(\S+)\s([^"]+)"\s(\d+)(\s\d+)[^-]+([^"]+)"\s"([^"]+).*.

      Définissez le Source field sur content et saisissez un journal d'accès Nginx dans la zone de texte Log sample. L'analyse du journal avec l'expression régulière remplit la section Extracted log fields avec des paires clé-valeur, telles que remote_addr, remote_user, time_local, request_method, request_uri, request_protocol, status, body_bytes_sent, http_referer et http_user_agent. Les options Keep source field on parse failure et Keep source field on parse success ne sont pas sélectionnées.

    • Résultat de l'analyse

Analyse JSON

Analyse les objets JSON en paires clé-valeur.

Limites

Le plugin JSON extrait uniquement les paires clé-valeur de premier niveau d'un objet JSON. Il n'analyse pas directement les tableaux JSON. Pour gérer des structures JSON complexes, utilisez l'approche décrite dans la rubrique Traitement de JSON complexes.

Configuration

  • Paramètres

    Ce plugin utilise uniquement les paramètres de configuration généraux.

  • Exemple de configuration

    • Journal d'entrée

      {"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/2020:13:30:28"}
    • Configuration du plugin

      Suivez la Procédure. Définissez le processor type sur JSON et le source field sur content. Désactivez les cases à cocher keep source field on failure et keep source field on success. Laissez les advanced parameters désactivés, puis cliquez sur OK.

    • Résultat de l'analyse

      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/2020:13:30:28

Analyse en mode délimiteur

Le plugin d'analyse en mode délimiteur utilise un caractère de séparation pour structurer le contenu du journal, en l'analysant sous forme de plusieurs paires clé-valeur.

Configuration

  • Paramètres

    Outre les paramètres communs, ce plugin dispose des paramètres suivants :

    Paramètre

    Description

    Delimiter

    Sélectionnez le délimiteur correspondant au contenu de votre journal, tel qu'une barre verticale (|).

    Remarque

    Pour spécifier un Non-printable Character comme délimiteur, recherchez sa valeur hexadécimale dans la table de codes ASCII et saisissez-la au format 0x<valeur hexadécimale>. Par exemple, le caractère non imprimable dont le code ASCII est 1 est saisi sous la forme 0x01.

    Quote

    Si un champ de journal contient le délimiteur, vous devez entourer le champ avec un caractère de guillemet. Simple Log Service analyse le contenu entouré par le caractère de guillemet comme un seul champ. Sélectionnez le caractère de guillemet correspondant au format de votre journal.

    Remarque

    Pour spécifier un Non-printable Character comme caractère de guillemet, recherchez sa valeur hexadécimale dans la table de codes ASCII et saisissez-la au format 0x<valeur hexadécimale>. Par exemple, le caractère non imprimable dont le code ASCII est 1 est saisi sous la forme 0x01.

    Extracted log fields

    • Si vous fournissez un exemple de journal, Simple Log Service extrait le contenu du journal en fonction de l'exemple et du délimiteur spécifié. Log Service extrait le contenu dans des valeurs (Values). Vous devez attribuer une clé (Key) à chaque valeur.

    • Si vous ne fournissez pas d'exemple de journal, aucune liste de valeurs n'est générée et vous devez saisir manuellement les clés en fonction de vos données de journal et du délimiteur.

    Une clé ne peut contenir que des lettres, des chiffres et des traits de soulignement (_), et doit commencer par une lettre ou un trait de soulignement (_). La longueur maximale est de 128 octets.

    Allow Missing Field

    Ce paramètre détermine si un journal est chargé dans Simple Log Service lorsque le nombre de valeurs extraites est inférieur au nombre de clés spécifiées. Sélectionnez Allow Missing Field pour charger le journal.

    Par exemple, si le journal est 11|22|33|44, le délimiteur est une barre verticale (|) et les clés sont A, B, C, D et E.

    • Si vous sélectionnez Allow Missing Field, la valeur du champ E est vide et Simple Log Service charge le journal.

    • Si vous ne sélectionnez pas Allow Missing Field, le journal est ignoré.

      Remarque

      Le paramètre Allow Missing Field pour l'analyse en mode délimiteur est pris en charge par Logtail pour Linux 1.0.28 et versions ultérieures, ainsi que par Logtail pour Windows 1.0.28.0 et versions ultérieures.

    Processing Method of Field to which Excess Part is Assigned

    Définit la manière de traiter un journal lorsque le nombre de valeurs extraites dépasse le nombre de clés spécifiées.

    • Expand : Conserve les valeurs excédentaires et les ajoute à des champs distincts au format __column$i__, où $i est l'index du champ excédentaire, commençant à 0. Par exemple, __column0__ et __column1__.

    • Retain : Ajoute toutes les valeurs excédentaires à un seul champ nommé __column0__.

    • Discard : Ignore les valeurs excédentaires.

  • Exemples de configuration

    • Exemple 1 : Délimiteur à caractère unique

      • Journal d'entrée

        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
      • Configuration du plugin

        Suivez la Procédure. Utilisez une virgule (,) comme délimiteur et un guillemet double (") comme caractère de guillemet.

        Remarque

        Délimiteur : Vous pouvez utiliser un caractère unique pour fractionner les journaux, tel qu'une tabulation (\t), une barre verticale (|), un espace, une virgule (,), un point-virgule (;) ou un caractère non imprimable. Le délimiteur ne peut pas être un guillemet double (").

        Si un guillemet double (") apparaît dans un champ, vous devez l'échapper sous la forme "" dans le journal. Simple Log Service restaure automatiquement "" en " lors de l'analyse du champ. Par exemple, si le délimiteur est une virgule (,) et le caractère de guillemet est un guillemet double ("), et qu'un champ contient à la fois une virgule et un guillemet double, vous devez entourer le champ avec le caractère de guillemet et échapper le guillemet double sous la forme "". L'entrée de journal résultante, Chevy,"Venture ""Extended Edition, Very Large""","", est analysée en trois champs : Chevy, Venture "Extended Edition, Very Large" et un champ vide.

        Caractère de guillemet : Si un champ de journal contient le délimiteur, vous devez entourer le champ avec un caractère de guillemet. Log Service analyse le contenu entouré comme un seul champ. Le caractère de guillemet peut être un caractère unique, tel qu'une tabulation (\t), une barre verticale (|), un espace, une virgule (,), un point-virgule (;) ou un caractère non imprimable.

        Par exemple, si le délimiteur est une virgule (,) et le caractère de guillemet est un guillemet double ("), Log Service analyse le journal 1997,"ac,moon",3000.00 en trois champs : 1997, ac,moon et 3000.00.

      • Résultat de l'analyse

        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
    • Exemple 2 : Délimiteur à caractères multiples

      • Journal d'entrée

        05/May/2022:13:30:28&&10.200.**.**&&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
      • Configuration du plugin

        Suivez la Procédure. Utilisez && comme délimiteur et conservez le caractère de guillemet par défaut, qui est un guillemet double (").

        Important

        En mode multi-caractères, le délimiteur peut contenir deux ou trois caractères, tels que ||, &&& ou ^_^. Logtail analyse les journaux en fonction de la correspondance du délimiteur, il n'est donc pas nécessaire d'entourer les champs avec un caractère de guillemet. Assurez-vous qu'aucun contenu de champ ne contient une correspondance exacte du délimiteur. Sinon, Logtail risque de fractionner incorrectement le champ.

      • Résultat de l'analyse

        ip:10.200.**.**
        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/2022:13:30:28
        user_agent:aliyun-sdk-java

Gestion des échecs d'analyse par délimiteur

Si le délimiteur est mélangé à d'autres caractères dans le contenu du journal — par exemple, si l'horodatage contient lui-même un espace et une virgule, ou si des espaces entourent le délimiteur — l'analyse en mode délimiteur peut ne pas séparer les limites des champs comme prévu. Les valeurs de champ extraites risquent alors d'être incorrectes.

Exemple

Le journal suivant utilise une barre verticale (|) comme délimiteur :

2026-03-06 21:04:32,701 - | 4 | 45 | 980

Étant donné que l'horodatage contient un espace, l'analyse en mode délimiteur conserve le trait d'union final de l'horodatage, ce qui donne 2026-03-06 21:04:32,701 -. De plus, les champs numériques 4, 45 et 980 comportent des espaces de début et de fin.

Dans ce cas, basculez vers l'analyse par expression régulière et utilisez Regular Expression pour rédiger une expression régulière correspondant exactement à chaque valeur de champ. Par exemple, l'expression régulière suivante extrait correctement le journal précédent en quatre champs :

^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3})\s+-\s+\|\s+(\d+)\s+\|\s+(\d+)\s+\|\s+(\d+)$

Définissez Extracted Field sur time, field1, field2 et field3 dans cet ordre. Le résultat de l'analyse est le suivant :

time: 2026-03-06 21:04:32,701
field1: 4
field2: 45
field3: 980

Pour savoir comment déboguer une expression régulière, reportez-vous à Comment tester une expression régulière Comment tester une expression régulière .

Dépannage

Si vous ignorez si un plug-in dans Processor Configurations est à l'origine de l'échec d'analyse, supprimez les plug-ins un par un et recollez les journaux pour vérifier :

  1. Dans la liste Logtail Configurations, repérez la configuration Logtail cible et cliquez sur Manage Logtail Configuration.

  2. Cliquez sur Edit. Dans la section Processor Configurations, supprimez un plug-in de traitement et cliquez sur Save.

  3. Recollez les fichiers journaux et vérifiez si le résultat d'analyse redevient normal.

  4. Répétez les étapes précédentes pour supprimer les plug-ins un par un jusqu'à identifier celui qui cause l'échec d'analyse.

Analyse en mode Nginx

Le plug-in en mode Nginx analyse le contenu du journal en paires clé-valeur selon la définition log_format.

Journaux Nginx

Les serveurs Nginx génèrent des journaux d'accès selon les directives log_format et access_log. Par défaut, ces directives sont configurées comme suit :

log_format main  '$remote_addr - $remote_user [$time_local] "$request" '
                 '$request_time $request_length '
                 '$status $body_bytes_sent "$http_referer" '
                 '"$http_user_agent"';
access_log /var/logs/nginx/access.log main

Le journal contient les champs suivants :

Nom du champ

Description

remote_addr

L'adresse IP du client.

remote_user

Le nom d'utilisateur du client.

time_local

L'heure du serveur. Elle doit être encadrée par des crochets ([]).

request

L'URI de la requête et le protocole HTTP.

request_time

Le temps total de traitement de la requête, en secondes.

request_length

La longueur de la requête, incluant la ligne de requête, l'en-tête de requête et le corps de la requête.

status

Le code d'état de la requête.

body_bytes_sent

Le nombre d'octets envoyés au client, hors taille de l'en-tête de réponse.

http_referer

Le référent.

http_user_agent

Les informations sur le client, telles que le type et la version du navigateur.

Configuration

  • Paramètres

    Outre les paramètres communs, ce plug-in dispose des paramètres suivants :

    Paramètre

    Description

    NGINX Log Configuration

    La définition log_format issue de votre fichier de configuration Nginx.

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

    Extracted Field

    Le plug-in extrait automatiquement les champs de journal (clés) en fonction de la NGINX Log Configuration.

  • Exemple de configuration

    • Journal d'entrée

      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"
    • Configuration du plug-in

      Suivez la Procédure. En production, la directive log_format doit correspondre à la définition de votre fichier de configuration Nginx (généralement /etc/nginx/nginx.conf).

      log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                          '$request_time $request_length $status $body_bytes_sent '
                          '"$http_referer" "$http_user_agent"';
    • Résultat de l'analyse

      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.*.* 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

Analyse selon le modèle Apache

Le plug-in d'analyse selon le modèle Apache structure le contenu du journal en paires clé-valeur en se basant sur les définitions de votre fichier de configuration des journaux Apache.

Journaux Apache

Un serveur Apache génère des journaux selon le format, le chemin et le nom spécifiés dans son fichier de configuration des journaux. Par exemple, la directive CustomLog "/var/log/apache2/access_log" combined écrit les journaux au format combined dans le fichier /var/log/apache2/access_log.

  • Formats de journal Apache

    • Format combined

      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    • Format common

      LogFormat "%h %l %u %t \"%r\" %>s %b" 
    • Format personnalisé

      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D %f %k %p %q %R %T %I %O" customized

    Le tableau suivant décrit les champs. Consultez mod_log_config pour la référence complète.

    Format

    Paramètre

    Description

    %a

    client_addr

    L'adresse IP du client.

    %A

    local_addr

    L'adresse IP locale.

    %b

    response_size_bytes

    La taille de la réponse en octets. Un trait d'union (-) est enregistré pour les valeurs nulles.

    %B

    response_bytes

    La taille de la réponse en octets. Un 0 est enregistré pour les valeurs nulles.

    %D

    request_time_msec

    Le temps nécessaire pour servir la requête, en microsecondes.

    %f

    filename

    Le nom du fichier.

    %h

    remote_addr

    Le nom d'hôte distant.

    %H

    request_protocol_supple

    Le protocole de la requête.

    %I

    bytes_received

    Les octets reçus par le serveur. Nécessite le module mod_logio.

    %k

    keep_alive

    Le nombre de requêtes gérées sur cette connexion.

    %l

    remote_ident

    Le nom de journalisation distant issu d'identd, s'il est fourni.

    %m

    request_method_supple

    La méthode de la requête.

    %O

    bytes_sent

    Les octets envoyés par le serveur. Nécessite le module mod_logio.

    %p

    remote_port

    Le numéro de port du serveur.

    %P

    child_process

    L'ID du processus enfant.

    %q

    request_query

    La chaîne de requête. Une chaîne vide est enregistrée si elle n'existe pas.

    %r

    request

    La ligne de requête, qui inclut la méthode, l'URI et le protocole HTTP.

    %R

    response_handler

    Le type de gestionnaire sur le serveur.

    %s

    status

    Le statut HTTP initial de la réponse.

    %>s

    status

    Le statut HTTP final de la réponse.

    %t

    time_local

    L'heure du serveur.

    %T

    request_time_sec

    Le temps nécessaire pour servir la requête, en secondes.

    %u

    remote_user

    L'utilisateur distant, si la requête est authentifiée.

    %U

    request_uri_supple

    Le chemin URI demandé, sans la chaîne de requête.

    %v

    server_name

    Le nom du serveur.

    %V

    server_name_canonical

    Le nom du serveur tel que déterminé par la directive UseCanonicalName.

    %{User-Agent}i

    http_user_agent

    L'en-tête de requête HTTP User-Agent.

    %{Referer}i

    http_referer

    L'URL de la page d'origine de la requête.

Configuration

  • Paramètres

    Outre les paramètres communs, ce plug-in dispose des paramètres suivants :

    Paramètre

    Description

    Log Format

    Sélectionnez le format de journal défini dans votre fichier de configuration des journaux Apache. Les options incluent common, combined et custom.

    APACHE LogFormat Configuration

    La directive LogFormat issue de votre fichier de configuration Apache.

    • Lorsque vous définissez le Log Format sur common ou combined, les champs de configuration correspondants sont automatiquement renseignés. Vérifiez que le format est cohérent avec celui défini dans le fichier de configuration Apache.

    • Lorsque vous définissez le Log Format sur Custom, saisissez la chaîne de format réelle. Par exemple, LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D %f %k %p %q %R %T %I %O" customized.

    Extracted Field

    Champs de journal (clés) extraits automatiquement en fonction du contenu de la APACHE LogFormat Configuration.

  • Exemple de configuration

    • Journal d'entrée

      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"
    • Configuration du plug-in

      Suivez la Procédure. Définissez Log format sur combined.

    • Résultat de l'analyse

      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]

Analyse en mode IIS

Le plug-in de mode IIS analyse le contenu des journaux en plusieurs paires clé-valeur, conformément à la définition du format de journal IIS.

Journaux IIS

Un serveur Windows génère des journaux IIS selon le format de journal que vous sélectionnez (IIS, NCSA ou W3C).

  • Format de journal

    #Fields: date time s-sitename s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken
    • Descriptions des préfixes de champ

      Préfixe

      Description

      s-

      Action du serveur.

      c-

      Action du client.

      cs-

      Action du client vers le serveur.

      sc-

      Action du serveur vers le client.

    • Descriptions des champs

      Champ

      Description

      date

      Date de la requête.

      time

      Heure de la requête.

      s-sitename

      Nom du service Internet et numéro d'instance du site auquel le client a accédé.

      s-computername

      Nom du serveur qui a généré l'entrée de journal.

      s-ip

      Adresse IP du serveur qui a généré l'entrée de journal.

      cs-method

      Méthode de requête, par exemple GET ou POST.

      cs-uri-stem

      Ressource URI demandée par le client.

      cs-uri-query

      Requête URI : informations suivant le point d'interrogation (?) dans la requête.

      s-port

      Port du serveur.

      cs-username

      Domaine ou nom d'utilisateur authentifié.

      • Pour un utilisateur authentifié, le format est Domain\Username.

      • Pour un utilisateur anonyme, un trait d'union (-) s'affiche.

      c-ip

      Adresse IP du client ayant accédé au serveur.

      cs-version

      Version du protocole, par exemple HTTP/1,0 ou HTTP/1,1.

      cs(User-Agent)

      Navigateur utilisé par le client.

      Cookie

      Contenu du cookie envoyé ou reçu. Si aucun cookie n'est présent, un trait d'union (-) s'affiche.

      referer

      Site à partir duquel l'utilisateur a été redirigé.

      cs-host

      Informations de l'en-tête host.

      sc-status

      Code d'état HTTP.

      sc-substatus

      Code de sous-état HTTP.

      sc-win32-status

      Code d'état opérationnel spécifique à Windows.

      sc-bytes

      Nombre d'octets envoyés par le serveur.

      cs-bytes

      Nombre d'octets reçus par le serveur.

      time-taken

      Temps nécessaire pour traiter la requête, en millisecondes.

Configuration

  • Descriptions des paramètres

    Outre les paramètres communs, ce plug-in dispose des paramètres suivants :

    Paramètre

    Description

    Log Format

    Format de journal utilisé par le serveur IIS. Les formats pris en charge incluent IIS, NCSA et W3C.

    IIS Configuration Fields

    • Si le format de journal est IIS ou NCSA, Log Service définit par défaut les champs de configuration IIS.

    • Si le format de journal est W3C, définissez ce paramètre sur le contenu du paramètre logExtFileFlags dans votre fichier de configuration IIS. Par exemple :

      logExtFileFlags="Date, Time, ClientIP, UserName, SiteName, ComputerName, ServerIP, Method, UriStem, UriQuery, HttpStatus, Win32Status, BytesSent, BytesRecv, TimeTaken, ServerPort, UserAgent, Cookie, Referer, ProtocolVersion, Host, HttpSubStatus"
      • Chemin d'accès par défaut au fichier de configuration IIS 5 : C:\WINNT\system32\inetsrv\MetaBase.bin.

      • Chemin d'accès par défaut au fichier de configuration IIS 6 : C:\WINDOWS\system32\inetsrv\MetaBase.xml.

      • Chemin d'accès par défaut au fichier de configuration IIS 7 : C:\Windows\System32\inetsrv\config\applicationHost.config.

    Extracted Field

    Log Service génère automatiquement les champs de journal extraits (clés) en fonction du contenu du paramètre IIS Configuration Fields.

  • Exemple de configuration

    • Journal d'entrée

      #Fields: date time s-sitename s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken
      2023-10-27 08:00:00 W3SVC1 192.168.1.1 GET /index.html - 80 - 10.0.0.5 Mozilla/5.0 200 0 0 500 100 150
    • Configuration du plug-in

      Suivez la procédure. Définissez Log format sur IIS.

    • Résultat analysé

      date: 2023-10-27
      time: 08:00:00
      s-sitename: W3SVC1
      s-ip: 192.168.1.1
      cs-method: GET
      cs-uri-stem: /index.html
      cs-uri-query: -
      s-port: 80
      cs-username: -
      c-ip: 10.0.0.5
      cs(User-Agent): Mozilla/5.0
      sc-status: 200
      sc-substatus: 0
      sc-win32-status: 0
      sc-bytes: 500
      cs-bytes: 100
      time-taken: 150

FAQ

Échec de l'expression régulière dans Log Service

Vérifiez les problèmes courants suivants :

  1. Échantillon de journal non correspondant : assurez-vous que l'échantillon de journal utilisé dans la configuration Logtail correspond exactement au format des journaux collectés, y compris les espaces et les caractères spéciaux.

  2. Formats de journal mixtes : si votre source de journal contient plusieurs formats, une seule expression régulière peut ne pas correspondre à tous. Activez l'option keep unmatched content pour conserver les journaux bruts en cas d'échec de l'analyse. Vous pouvez également utiliser plusieurs configurations Logtail pour gérer les formats séparément.

  3. Différences d'échappement entre le code et la console : une expression régulière copiée depuis le code peut contenir des caractères d'échappement supplémentaires, tels que \\S+. Dans la console Log Service, utilisez une seule barre oblique inverse, telle que \S+.

Interrogation des journaux d'un fichier spécifique

Log Service ajoute automatiquement le champ de métadonnées __tag__:__path__ à chaque entrée de journal, contenant le chemin d'accès complet du fichier source. Utilisez ce champ pour filtrer les journaux d'un fichier spécifique tel que /var/log/app/error.log : * AND __tag__:__path__: /var/log/app/error.log.

Impossible d'interroger les données historiques après modification de l'index

Les modifications d'index s'appliquent uniquement aux nouvelles données ingérées. Pour interroger les données historiques existantes avec la nouvelle configuration d'index, exécutez une tâche de réindexation.

Gestion des journaux JSON avec des tableaux

Le plug-in d'analyse JSON ne peut pas directement diviser un tableau JSON en entrées de journal distinctes.

Solution :

Log Service fournit le plug-in de dépliage de champ JSON pour déplier ou diviser un champ de tableau JSON.

Fonctionnement : en spécifiant une profondeur de dépliage, le plug-in parcourt le champ de tableau et génère une nouvelle entrée de journal pour chaque élément du tableau. Le plug-in copie les autres champs (membres non tableaux) du journal original vers chaque nouvelle entrée de journal.

Exemple de comparaison :

Remarque
  • Cette opération augmente le nombre d'entrées de journal. Un seul journal contenant un tableau de N éléments devient N entrées de journal. Tenez-en compte lors de la planification de vos coûts de stockage et d'indexation des journaux.

  • Profondeur de dépliage : niveau auquel l'objet JSON est déplié. Une valeur de 0 (par défaut) déplie entièrement l'objet, 1 déplie uniquement le niveau actuel, et ainsi de suite.

Journal brut

Profondeur de dépliage : 0 (préfixe ajouté)

Profondeur de dépliage : 1 (préfixe ajouté)

{"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"}}}}

Analyse des journaux avec du texte et du JSON intégré

Enchaînez plusieurs plug-ins de traitement, où la sortie de l'un devient l'entrée du suivant.

Cas d'utilisation :

Supposons que votre journal d'application ait le format suivant, qui inclut un horodatage, un niveau de journal et un message JSON intégré.

2025-11-12 10:30:15 INFO Request details: {"trace_id": "xyz-123", "user_id": 500, "action": "login"}

Stratégie d'analyse : ajoutez les deux plug-ins suivants dans l'ordre. Spécifiez le champ source correct pour le deuxième plug-in. Cette approche en chaîne fonctionne pour tout journal de format mixte.

  1. Utilisez un plug-in d'analyse par expression régulière pour extraire les champs de texte principaux et capturer la chaîne JSON intégrée dans un champ distinct. Le résultat est le suivant :

    {
         "log_time": "2025-11-12 10:30:15",
         "log_level": "INFO",
         "json_message": "{\"trace_id\": \"xyz-123\", \"user_id\": 500, \"action\": \"login\"}"
    }
  2. Ajoutez un plug-in d'analyse JSON et définissez json_message comme champ source pour analyser le contenu JSON en paires clé-valeur. Le résultat est le suivant :

    {
         "log_time": "2025-11-12 10:30:15",
         "log_level": "INFO",
         "trace_id": "xyz-123",
         "user_id": 500,
         "action": "login"
    }

Documents connexes