Tous les produits
Search
Centre de documentation

Simple Log Service:Fonctions d'extraction de valeurs

Dernière mise à jour :Aug 26, 2026

Cette rubrique décrit la syntaxe des fonctions d'extraction de valeurs de champ, y compris leurs paramètres et des exemples.

Liste des fonctions

Type

Fonction

Description

Extraction par expression régulière

e_regex

Extrait une valeur d'un champ à l'aide d'une expression régulière et l'assigne à un autre champ.

Cette fonction peut être combinée avec d'autres fonctions. Pour un exemple connexe, consultez Analyser les journaux d'erreurs Java.

Extraction JSON

e_json

Traite un objet JSON dans un champ spécifié. Les opérations incluent le développement de l'objet, l'extraction de données avec JMESPath ou l'extraction et le développement.

Cette fonction peut être combinée avec d'autres fonctions. Pour un exemple connexe, consultez Transformer des données JSON complexes.

Extraction basée sur des délimiteurs

e_csv, e_psv, e_tsv

Extrait les valeurs de plusieurs champs à partir d'un champ source en utilisant un délimiteur et des noms de champ prédéfinis.

  • e_csv : le délimiteur par défaut est la virgule (,).

  • e_psv : le délimiteur par défaut est la barre verticale (|).

  • e_tsv : le délimiteur par défaut est le caractère de tabulation (\t).

Ces fonctions peuvent être combinées avec d'autres fonctions. Pour un exemple connexe, consultez Analyser les journaux au format CSV.

Extraction clé-valeur

e_kv

Extrait des paires clé-valeur d'un ou plusieurs champs sources en utilisant un caractère de guillemet spécifié.

Cette fonction peut être combinée avec d'autres fonctions. Pour un exemple connexe, consultez Extraire des paires clé-valeur dynamiques d'une chaîne.

e_kv_delimit

Extrait des paires clé-valeur d'un champ source en utilisant un délimiteur.

Extraction standard Syslog

e_syslogrfc

Calcule la facility et la severity à partir d'une valeur de priorité selon le protocole Syslog et les mappe au niveau correspondant.

Cette fonction peut être combinée avec d'autres fonctions. Pour un exemple connexe, consultez Analyser les données au format Syslog standard.

Extraction basée sur des règles

e_anchor

Extrait des chaînes en utilisant les règles définies dans anchor_rules.

e_regex

Extrait les valeurs d'un champ sur la base d'une expression régulière et les assigne à d'autres champs.

  • Syntaxe

    e_regex(key, regex, fields_info, mode="fill-auto", pack_json=None)
  • Paramètres

    Paramètre

    Type

    Obligatoire

    Description

    key

    Any

    Oui

    Le champ source. Si le champ n'existe pas, la fonction ne fait rien. Pour plus d'informations sur la configuration des noms de champs spéciaux, consultez types d'événements.

    regex

    String

    Oui

    L'expression régulière utilisée pour extraire les valeurs des champs. Elle prend en charge les groupes capturants et non capturants.

    Remarque

    Un groupe non capturant, qui nécessite le préfixe ?:, est parfois utilisé pour le regroupement. Par exemple, \w+@\w+\.\w(?:\.\cn)?. Pour plus d'informations, consultez groupes non capturants.

    fields_info

    String/List/Dict

    Non

    Les champs cibles pour les valeurs correspondantes. Ce paramètre est requis si vous n'utilisez pas de groupes capturants nommés dans l'expression régulière.

    mode

    String

    Non

    Le mode d'écrasement pour les champs. La valeur par défaut est fill-auto. Pour plus d'informations sur les valeurs et leur signification, consultez vérification de l'extraction de champ et mode d'écrasement.

    pack_json

    String

    Non

    Regroupe tous les résultats correspondants de l'expression régulière dans le champ spécifié par pack_json. La valeur par défaut est None, ce qui indique que le regroupement est désactivé.

  • Réponse

    Renvoie le journal, mis à jour avec les champs extraits et leurs valeurs.

  • Exemples

    • Exemple 1 : Extraire une seule valeur

      • journal brut

        msg: 192.168.0.1 http://... 127.0.0.0
      • règle de transformation

        # Extract the first IP address from the msg field. 
        e_regex("msg",r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}","ip")
      • résultat de la transformation

        msg: 192.168.0.1 http://... 127.0.0.0
        ip: 192.168.0.1
    • Exemple 2 : Extraire plusieurs valeurs

      • journal brut

        msg: 192.168.0.1 http://... 127.0.0.0
      • règle de transformation

        # Extract two IP addresses from the msg field and assign them to server_ip and client_ip.
        e_regex("msg",r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}",["server_ip","client_ip"])
      • résultat de la transformation

        msg: 192.168.0.1 http://... 127.0.0.0
        server_ip: 192.168.0.1
        client_ip: 127.0.0.0
    • Exemple 3 : Extraire des valeurs en utilisant un groupe capturant.

      • journal brut

        content: start sys version: deficience, err: 2
      • règle de transformation

        # Use a regular expression to capture the version and error values from the content field.
        e_regex("content",r"start sys version: (\w+),\s*err: (\d+)",["version","error"])
      • résultat de la transformation

        content: start sys version: deficience, err: 2
        error: 2
        version: deficience
    • Exemple 4 : Extraire des valeurs en utilisant un groupe capturant nommé

      • journal brut

        content:  start sys version: deficience, err: 2
      • règle de transformation

        e_regex("content",r"start sys version: (?P<version>\w+),\s*err: (?P<error>\d+)")
      • résultat de la transformation

        content:  start sys version: deficience, err: 2
        error:  2
        version:  deficience
    • Exemple 5 : Créer dynamiquement un nom de champ et une valeur à partir du champ dict.

      • journal brut

        dict: verify:123
      • règle de transformation

        e_regex("dict",r"(\w+):(\d+)",{r"k_\1": r"v_\2"})
      • résultat de la transformation

        dict: verify:123
        k_verify: v_123
    • Exemple 6 : Extraire et regrouper une valeur dans le champ name.

      • journal brut

        msg: 192.168.0.1 http://... 127.0.0.0
      • règle de transformation

        e_regex("msg", r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}", "ip", pack_json="name")
      • résultat de la transformation

        msg:192.168.0.1 http://... 127.0.0.0
        name:{"ip": "192.168.0.1"}
    • Exemple 7 : Créer dynamiquement des champs à partir du champ dict et les regrouper dans le champ name.

      • journal brut

        dict: x:123, y:456, z:789
      • règle de transformation

        e_regex("dict", r"(\w+):(\d+)", {r"k_\1": r"v_\2"}, pack_json="name")
      • résultat de la transformation

        dict:x:123, y:456, z:789
        name:{"k_x": "v_123", "k_y": "v_456", "k_z": "v_789"}
    • Exemple 8 : Extraire et regrouper des valeurs d'un groupe capturant dans le champ name.

      • journal brut

        content: start sys version: deficience, err: 2
      • règle de transformation

        e_regex( "content", r"start sys version: (\w+),\s*err: (\d+)", ["version", "error"],pack_json="name")
      • résultat de la transformation

        content:start sys version: deficience, err: 2
        name:{"version": "deficience", "error": "2"}
  • Références

    Vous pouvez combiner cette fonction avec d'autres fonctions. Pour un exemple connexe, consultez Analyser les journaux d'erreurs Java.

e_json

Exécute des opérations JSON sur un objet JSON situé dans un champ spécifié. Ces opérations incluent le développement des données JSON, l'extraction de données à l'aide d'une expression JMESPath, ou l'extraction puis le développement d'un sous-ensemble JSON.

  • Syntaxe

    e_json(key, expand=None, depth=100, prefix="__", suffix="__", fmt="simple", sep=".", 
         expand_array=True, fmt_array="{parent}_{index}", 
         include_node=r"[\u4e00-\u9fa5\u0800-\u4e00a-zA-Z][\w\-\.]*",  
         exclude_node="", include_path="", exclude_path="",
         jmes="", output="", jmes_ignore_none=False, mode='fill-auto'
    )
    Remarque

    Si la chaîne cible n'est pas un objet JSON valide, la fonction e_json renvoie la chaîne d'origine sans l'analyser.

  • Paramètres

    Parameter

    Type

    Required

    Description

    key

    String

    Yes

    Le nom du champ d'entrée. Si le champ n'existe pas, la fonction n'effectue aucune action. Pour plus d'informations sur la configuration des noms de champs spéciaux, consultez la rubrique Event types.

    expand

    Boolean

    No

    Indique s'il faut développer le champ.

    • Si le paramètre jmes n'est pas configuré, la valeur par défaut est True, ce qui développe le champ.

    • Si le paramètre jmes est configuré, la valeur par défaut est False, ce qui ne développe pas le champ.

    depth

    Number

    No

    La profondeur à laquelle la fonction développe le champ. Valeurs valides : 1 à 2000. La valeur par défaut est 100. Une valeur de 1 développe uniquement le premier niveau.

    prefix

    String

    No

    Le préfixe à ajouter à chaque nom de champ développé.

    suffix

    String

    No

    Le suffixe à ajouter à chaque nom de champ développé.

    fmt

    String

    No

    La méthode de formatage pour les noms de champs développés. Valeurs valides :

    • simple (par défaut) : utilise le nom du nœud actuel comme nom de champ. Le format est {prefix}{current}{suffix}.

    • full : combine le chemin complet depuis le champ source jusqu'au nœud actuel comme nom de champ. Le format est {parent_list_str}{sep}{prefix}{current}{suffix}. Le délimiteur est spécifié par le paramètre sep. Le délimiteur par défaut est ..

    • parent : combine le nom du nœud actuel avec le nom de son nœud parent immédiat. Le format est {parent}{sep}{prefix}{current}{suffix}. Le délimiteur est spécifié par le paramètre sep. Le délimiteur par défaut est ..

    • root : combine le nom du nœud actuel avec le nom du nœud racine. Le format est {parent_list[0]}{sep}{prefix}{current}{suffix}. Le délimiteur est spécifié par le paramètre sep. Le délimiteur par défaut est ..

    sep

    String

    No

    Le délimiteur entre les noms des nœuds parents et enfants. Ce paramètre s'applique lorsque fmt est défini sur full, parent ou root. La valeur par défaut est ..

    expand_array

    Boolean

    No

    Indique s'il faut développer les tableaux. La valeur par défaut est True.

    fmt_array

    String

    No

    La méthode de formatage pour le développement des tableaux. Le format est {parent_rlist[0]}_{index}. Vous pouvez également créer une chaîne de format personnalisée en utilisant jusqu'à cinq espaces réservés : parent_list, current, sep, prefix et suffix.

    include_node

    String/Number

    No

    La liste d'autorisation des nœuds spécifie les noms de nœuds à inclure pour le filtrage. Par défaut, seuls les nœuds dont les noms sont composés de caractères chinois, de chiffres, de lettres et de _.- sont automatiquement développés.

    exclude_node

    String

    No

    Une expression régulière qui définit une liste de blocage des noms de nœuds à exclure.

    include_path

    String

    No

    Une expression régulière qui définit une liste d'autorisation des chemins de nœuds à inclure.

    exclude_path

    String

    No

    Une expression régulière qui définit une liste de blocage des chemins de nœuds à exclure.

    jmes

    String

    No

    Une expression JMESPath pour extraire des données de l'objet JSON.

    output

    String

    No

    Le nom du champ de sortie pour la valeur extraite à l'aide de l'expression JMESPath.

    jmes_ignore_none

    Boolean

    No

    Spécifie le comportement lorsque l'expression JMESPath ne trouve aucune valeur. Si la valeur est True (par défaut), l'extraction est ignorée. Si la valeur est False, une chaîne vide est renvoyée.

    mode

    String

    No

    Le mode d'écrasement des champs. La valeur par défaut est fill-auto. Pour plus d'informations, consultez la rubrique Field extraction check and overwrite modes.

    • Filtrage du développement JSON

      • Si une liste d'autorisation de nœuds est définie, seuls les nœuds figurant dans cette liste sont inclus dans le résultat. Exemple d'expression régulière pour une liste d'autorisation de nœuds : e_json("json_data_filed", ...., include_node=r'key\d+').

      • Si une liste de blocage de nœuds est définie, les nœuds figurant dans cette liste sont exclus du résultat. Exemple d'expression régulière pour une liste de blocage de nœuds : e_json("json_data_filed", ...., exclude_node=r'key\d+').

      • Pour le développement des chemins de nœuds, les expressions régulières include_path et exclude_path correspondent au début du chemin. Les chemins de nœuds utilisent . comme délimiteur.

    • Filtrage JMESPath

      Utilisez JMESPath pour sélectionner et calculer des données.

      • Sélectionnez une liste d'attributs d'éléments à partir d'un chemin JSON spécifique : e_json(..., jmes="cve.vendors[*].product",output="product")

      • Concaténez les attributs d'éléments à partir d'un chemin JSON spécifique avec une virgule (,) : e_json(..., jmes="join(',', cve.vendors[*].name)",output="vendors")

      • Calculez la valeur maximale d'attribut pour les éléments d'un chemin JSON spécifique : e_json(..., jmes="max(words[*].score)",output="hot_word")

      • Renvoyez une chaîne vide si un chemin spécifique n'existe pas ou est vide : e_json(..., jmes="max(words[*].score)",output="hot_word", jmes_ignore_none=False)

    • parent_list et parent_rlist

      Les exemples suivants illustrent leur utilisation.

      Journal brut :

      data: { "k1": 100,"k2": {"k3": 200,"k4": {"k5": 300}}}
      • parent_list organise les nœuds parents de gauche à droite.

        e_json("data", fmt='{parent_list[0]}-{parent_list[1]}#{current}')

        Résultat de la transformation :

        data:{ "k1": 100,"k2": {"k3": 200,"k4": {"k5": 300}}}
        data-k2#k3:200
        data-k2#k5:300
      • parent_rlist organise les nœuds parents de droite à gauche.

        e_json("data", fmt='{parent_rlist[0]}-{parent_rlist[1]}#{current}')

        Résultat de la transformation :

        data:{ "k1": 100,"k2": {"k3": 200,"k4": {"k5": 300}}}
        k2-data#k3:200
        k4-k2#k5:300
  • Réponse

    Renvoie le journal avec les nouveaux champs ajoutés.

  • Exemples

    • Exemple 1 : Développement d'un champ.

      • Journal brut

        data: {"k1": 100, "k2": 200}
      • Règle de transformation

        e_json("data",depth=1)
      • Résultat de la transformation

        data: {"k1": 100, "k2": 200}
        k1: 100
        k2: 200
    • Exemple 2 : Ajout d'un préfixe et d'un suffixe aux noms de champs.

      • Journal brut

        data: {"k1": 100, "k2": 200}
      • Règle de transformation

        e_json("data", prefix="data_", suffix="_end")
      • Résultat de la transformation

        data: {"k1": 100, "k2": 200}
        data_k1_end: 100
        data_k2_end: 200
    • Exemple 3 : Développement d'un champ à l'aide de différents formats.

      • Journal brut

        data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } }
      • fmt=full

        e_json("data", fmt='full')
        data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } }
        data.k1: 100
        data.k2.k3: 200
        data.k2.k4.k5: 300
      • fmt=parent

        e_json("data", fmt='parent')
        data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } }
        data.k1: 100
        k2.k3: 200
        k4.k5: 300
      • fmt=root

        e_json("data", fmt='root')
        data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } }
        data.k1: 100
        data.k3: 200
        data.k5: 300
    • Exemple 4 : Extraction de données JSON avec un délimiteur, un préfixe et un suffixe spécifiés.

      • Journal brut

        data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } }
      • Règle de transformation

        e_json("data", fmt='parent', sep="@", prefix="__", suffix="__")
      • Résultat de la transformation

        data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } }
        data@__k1__:100
        k2@__k3__:200
        k4@__k5__:300
    • Exemple 5 : Utilisation du paramètre fmt_array pour extraire des données JSON sous forme de tableau.

      • Journal brut

        people: [{"name": "xm", "sex": "boy"}, {"name": "xz", "sex": "boy"}, {"name": "xt", "sex": "girl"}]
      • Règle de transformation

        e_json("people", fmt='parent', fmt_array="{parent_rlist[0]}-{index}")
      • Résultat de la transformation

        people: [{"name": "xm", "sex": "boy"}, {"name": "xz", "sex": "boy"}, {"name": "xt", "sex": "girl"}]
        people-0.name: xm
        people-0.sex: boy
        people-1.name: xz
        people-1.sex: boy
        people-2.name: xt
        people-2.sex: girl
    • Exemple 6 : Utilisation d'une expression JMESPath pour extraire un objet JSON.

      • Journal brut

        data: { "people": [{"first": "James", "last": "d"},{"first": "Jacob", "last": "e"}],"foo": {"bar": "baz"}}
      • Règle de transformation

        e_json("data", jmes='foo', output='jmes_output0')
        e_json("data", jmes='foo.bar', output='jmes_output1')
        e_json("data", jmes='people[0].last', output='jmes_output2')
        e_json("data", jmes='people[*].first', output='jmes_output3')
      • Résultat de la transformation

        data: { "people": [{"first": "James", "last": "d"},{"first": "Jacob", "last": "e"}],"foo": {"bar": "baz"}}
        jmes_output0: {"bar": "baz"}
        jmes_output1: baz
        jmes_output2: d
        jmes_output3: ["James", "Jacob"]
  • Pour aller plus loin

    Pour un exemple combinant cette fonction avec d'autres, consultez la rubrique Complex JSON data transformation.

e_csv, e_psv et e_tsv

Ces fonctions extraient plusieurs champs d'un champ spécifié à l'aide d'un délimiteur personnalisé et de noms de champs prédéfinis.

  • e_csv : le délimiteur par défaut est la virgule (,).

  • e_psv : le délimiteur par défaut est la barre verticale (|).

  • e_tsv : le délimiteur par défaut est le caractère de tabulation (\t).

  • Syntaxe

    e_csv(input field name, output field list, sep=",", quote='"', restrict=True, mode="fill-auto")
    e_psv(input field name, output field list, sep="|", quote='"', restrict=True, mode="fill-auto")
    e_tsv(input field name, output field list, sep="\t", quote='"', restrict=True, mode="fill-auto")
  • Paramètres

    Parameter

    Type

    Required

    Description

    input field name

    Any

    Yes

    Nom du champ d'entrée. Si le champ spécifié n'existe pas, la fonction n'effectue aucune action. Pour savoir comment spécifier des noms de champs particuliers, consultez la rubrique Event types.

    output field list

    Any

    Yes

    Noms des champs de sortie qui stockent les valeurs analysées.

    Vous pouvez fournir les noms sous forme de liste de chaînes, par exemple ["error", "message", "result"].

    Si les noms de champs ne contiennent pas de virgules, vous pouvez également fournir une seule chaîne avec des noms séparés par des virgules, par exemple "error, message, result".

    Pour savoir comment spécifier des noms de champs particuliers, consultez la rubrique Event types.

    sep

    String

    No

    Délimiteur. Il doit s'agir d'un seul caractère.

    quote

    String

    No

    Caractère utilisé pour encadrer les valeurs. Utilisez ce paramètre lorsqu'une valeur contient le délimiteur.

    restrict

    Boolean

    No

    Indique si le mode restreint est activé. La valeur par défaut est True, ce qui active le mode restreint. Ce paramètre détermine le comportement lorsque le nombre de valeurs analysées ne correspond pas au nombre de champs de sortie :

    • En mode restreint (True), la fonction n'effectue aucune action.

    • En mode non restreint (False), la fonction attribue les valeurs aux champs correspondants.

    mode

    String

    No

    Mode d'écrasement des champs. La valeur par défaut est fill-auto. Pour plus d'informations sur les valeurs et leur signification, consultez la rubrique Field extraction check and overwrite modes.

  • Réponse

    Renvoie le journal avec les nouveaux champs ajoutés.

  • Exemples

    L'exemple suivant utilise e_csv. Les fonctions e_psv et e_tsv fonctionnent de manière similaire.

    • Journal brut

      content: 192.168.0.100,10/Jun/2019:11:32:16 +0800,example.aliyundoc.com,GET /zf/11874.html HTTP/1.1,200,0.077,6404,192.168.0.100:8001,200,0.060,https://image.developer.aliyundoc.com/s?q=how-to-make-noodles&from=wy878378&uc_param_str=dnntnwvepffrgibijbprsvdsei,-,Mozilla/5.0 (Linux; Android 9; HWI-AL00 Build/HUAWEIHWI-AL00) AppleWebKit/537.36,-,-
    • Règle de transformation

      e_csv("content", "remote_addr, time_local,host,request,status,request_time,body_bytes_sent,upstream_addr,upstream_status, upstream_response_time,http_referer,http_x_forwarded_for,http_user_agent,session_id,guid")
    • Résultat

      content:  192.168.0.100,10/Jun/2019:11:32:16 +0800,example.aliyundoc.com,GET /zf/11874.html HTTP/1.1,200,0.077,6404,192.168.0.100:8001,200,0.060,https://image.developer.aliyundoc.com/s?q=how-to-make-noodles&from=wy878378&uc_param_str=dnntnwvepffrgibijbprsvdsei,-,Mozilla/5.0 (Linux; Android 9; HWI-AL00 Build/HUAWEIHWI-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36,-,-
        body_bytes_sent:  6404
      guid:  -
      host:  example.aliyundoc.com
      http_referer:  https://image.developer.aliyundoc.com/s?q=how-to-make-noodles&from=wy878378&uc_param_str=dnntnwvepffrgibijbprsvdsei
      http_user_agent:  Mozilla/5.0 (Linux; Android 9; HWI-AL00 Build/HUAWEIHWI-AL00) AppleWebKit/537.36
      http_x_forwarded_for:  -
      remote_addr:  192.168.0.100
      request:  GET /zf/11874.html HTTP/1.1
      request_time:  0.077
      session_id:  -
      status:  200
      time_local:  10/Jun/2019:11:32:16 +0800
      topic:  syslog-forwarder
      upstream_addr:  192.168.0.100:8001
      upstream_response_time:  0.060
      upstream_status:  200
  • Informations complémentaires

    Ces fonctions peuvent être combinées avec d'autres fonctions. Pour un exemple connexe, consultez la rubrique Parse CSV-formatted logs.

e_kv

Extrait les paires clé-valeur d'un ou de plusieurs champs d'entrée.

  • Syntaxe

    e_kv(field_or_list, sep="=", quote='"', escape=False, prefix="", suffix="", mode="fill-auto")
  • Paramètres

    Parameter

    Type

    Required

    Description

    field_or_list

    String or list of strings

    Yes

    Nom d'un ou de plusieurs champs d'entrée. Pour savoir comment spécifier des noms de champs particuliers, consultez la rubrique Event types.

    sep

    String

    No

    Séparateur clé-valeur, qui peut être une expression régulière. La valeur par défaut est =.

    Remarque

    Vous pouvez utiliser des groupes non capturants, mais pas des groupes capturants. Pour plus d'informations, consultez la rubrique Grouping.

    quote

    String

    No

    Caractère utilisé pour encadrer les valeurs. La valeur par défaut est ".

    Remarque

    La valeur d'une paire clé-valeur dynamique extraite est généralement entourée de guillemets, par exemple a="abc" et b="xyz". Si une valeur n'est pas entourée de guillemets, le système extrait uniquement une valeur composée des caractères suivants : Chinese characters, letters, numbers, and the symbols _-.%~. Par exemple, à partir de a=ab12_-.%~|abc b=123, le système extrait a: ab12_-.%~ et b: 123.

    escape

    Boolean

    No

    Contrôle l'interprétation des caractères d'échappement dans les valeurs. La valeur par défaut est False. Par exemple, à partir de l'entrée key="abc\"xyz", la fonction extrait par défaut la valeur abc\ pour le champ key. Si vous définissez escape=True, la valeur extraite est abc"xyz.

    prefix

    String

    No

    Préfixe à ajouter aux noms des champs extraits.

    suffix

    String

    No

    Suffixe à ajouter aux noms des champs extraits.

    mode

    String

    No

    Mode d'écrasement des champs. La valeur par défaut est fill-auto. Pour plus d'informations sur les modes disponibles, consultez la rubrique Field extraction check and overwrite modes.

  • Réponse

    Ajoute les paires clé-valeur extraites au journal en tant que nouveaux champs.

  • Exemples

    • Exemple 1 : Extraire des paires clé-valeur à l'aide du délimiteur par défaut =.

      • Journal brut

        http_refer: https://video.developer.aliyundoc.com/s?q=asd&a=1&b=2
        Remarque

        Si le journal brut est request_uri: a1=1&a2=&a3=3 et que la valeur de a2 est vide, la fonction e_kv() ne peut pas extraire a2. Vous pouvez utiliser la fonction e_regex() pour l'extraire, par exemple e_regex("request_uri",r'(\w+)=([^=&]*)',{r"\1":r"\2"},mode="overwrite").

      • Règle de transformation

        e_kv("http_refer")
      • Résultat

        http_refer: https://video.developer.aliyundoc.com/s?q=asd&a=1&b=2
        q: asd
        a: 1
        b: 2
    • Exemple 2 : Ajouter un préfixe et un suffixe aux noms de champs.

      • Journal brut

        http_refer: https://video.developer.aliyundoc.com/s?q=asd&a=1&b=2
      • Règle de transformation

        e_kv(
            "http_refer",
            sep="=",
            quote='"',
            escape=False,
            prefix="data_",
            suffix="_end",
            mode="fill-auto",
        )
      • Résultat

        http_refer: https://video.developer.aliyundoc.com/s?q=asd&a=1&b=2
        data_q_end: asd
        data_a_end: 1
        data_b_end: 2
    • Exemple 3 : Extraire des paires clé-valeur du champ content2 et interpréter les caractères d'échappement à l'aide du paramètre escape.

      • Journal brut

        content2: k1:"v1\"abc", k2:"v2", k3: "v3"
      • Règle de transformation

        e_kv("content2", sep=":", escape=True)
      • Résultat

        content2:  k1:"v1\"abc", k2:"v2", k3: "v3"
        k1: v1"abc
        k2: v2
        k3: v3
  • Pour aller plus loin

    Pour un exemple de combinaison de cette fonction avec d'autres, consultez la rubrique Extract dynamic key-value pairs from a string.

e_kv_delimit

Extrait les paires clé-valeur d'un champ d'entrée à l'aide de délimiteurs.

  • Syntaxe

    e_kv_delimit(field_or_list, pair_sep=r"\s", kv_sep="=", prefix="", suffix="", mode="fill-auto")
  • Paramètres

    Parameter

    Type

    Required

    Description

    field_or_list

    string or list of strings

    Yes

    Nom d'un ou de plusieurs champs d'entrée. Pour savoir comment spécifier des noms de champs particuliers, consultez la rubrique event type.

    pair_sep

    string

    No

    Expression régulière qui sépare les paires clé-valeur. La valeur par défaut est \s. D'autres exemples incluent \s\w et abc\s.

    Remarque

    Pour utiliser une chaîne littérale comme séparateur, nous vous recommandons de la remplacer d'abord par un délimiteur à un seul caractère à l'aide de la fonction str_replace ou regex_replace. Vous pouvez ensuite utiliser cette fonction pour analyser le champ.

    kv_sep

    string

    No

    Expression régulière qui sépare une clé de sa valeur. La valeur par défaut est =. L'expression n'est pas limitée à un seul caractère.

    Remarque

    Vous pouvez utiliser des groupes non capturants, mais pas des groupes capturants. Pour plus d'informations, consultez la rubrique Grouping.

    prefix

    string

    No

    Préfixe à ajouter aux noms des champs extraits.

    suffix

    string

    No

    Suffixe à ajouter aux noms des champs extraits.

    mode

    string

    No

    Mode d'écrasement des champs. La valeur par défaut est fill-auto. Pour plus de détails sur les valeurs, consultez la rubrique Field extraction check and overwrite modes.

  • Réponse

    Renvoie le journal avec les paires clé-valeur extraites ajoutées en tant que nouveaux champs.

  • Exemples

    • Exemple 1 : Extraire des paires clé-valeur à l'aide du délimiteur par défaut =.

      • Journal brut

        data: i=c1 k1=v1 k2=v2 k3=v3
        Remarque

        Si le journal brut est request_uri: a1=1&a2=&a3=3, la fonction e_kv_delimit() ne peut pas extraire a2 car sa valeur est vide. Pour extraire des paires avec des valeurs vides, utilisez la fonction e_regex(). Par exemple : e_regex("request_uri",r'(\w+)=([^=&]*)',{r"\1":r"\2"}, mode="overwrite").

      • Règle de transformation

        e_kv_delimit("data")
      • Résultat

        data: i=c1 k1=v1 k2=v2 k3=v3
        i: c1
        k2: v2
        k1: v1
        k3: v3
    • Exemple 2 : Extraire des paires clé-valeur à l'aide du délimiteur &?.

      • Journal brut

        data: k1=v1&k2=v2?k3=v3
      • Règle de transformation

        e_kv_delimit("data",pair_sep=r"&?")
      • Résultat

        data: k1=v1&k2=v2?k3=v3
        k2: v2
        k1: v1
        k3: v3
    • Exemple 3 : Extraire des paires clé-valeur en utilisant une expression régulière comme séparateur clé-valeur.

      • Journal brut

        data: k1=v1 k2:v2 k3=v3
      • Règle de transformation

        e_kv_delimit("data", kv_sep=r"(?:=|:)")
      • Résultat

        data: k1=v1 k2:v2 k3=v3
        k2: v2
        k1: v1
        k3: v3

e_syslogrfc

Calcule la catégorie (facility) et le niveau de gravité (severity) à partir d'une valeur de priorité, conformément au protocole Syslog, puis ajoute les libellés correspondants.

  • Syntaxe

    e_syslogrfc(key, rfc, fields_info=None, mode='overwrite')
  • Paramètres

    Parameter

    Type

    Required

    Description

    key

    Any

    Yes

    Nom du champ contenant la valeur priority.

    rfc

    String

    Yes

    Protocole Syslog à utiliser. Valeurs valides : SYSLOGRFC3164 et SYSLOGRFC5424.

    fields_info

    Dict

    No

    Dictionnaire associant les noms par défaut des champs de sortie (clés) à des noms personnalisés (valeurs). Les champs suivants peuvent être renommés : {"_severity_":"sev","_facility_":"fac","_severitylabel_":"sevlabel","_facilitylabel_":"faclabel"}

    mode

    String

    No

    Mode d'écrasement pour les champs de sortie. La valeur par défaut est overwrite. Pour plus d'informations, consultez la section Field extraction check and overwrite modes.

  • Réponse

    Renvoie le journal avec les nouveaux champs de catégorie, de gravité et leurs libellés.

  • Exemples

    • Exemple 1 : extraire les informations de catégorie, de gravité et de libellé à l'aide du protocole SYSLOGRFC5424.

      • Journal brut

        receive_time: 1558663265
        _priority_: 13
        _version_: 1
        _log_time_: 2019-05-06 11:50:16.015554+08:00
        _hostname_: iZbp1a65********i2qZ
        _program_: root
        _procid_: -
        _msgid_: -
        _extradata_: -
        _content_: twish
      • Règle de transformation

        e_syslogrfc("_priority_","SYSLOGRFC5424")
      • Résultat

        receive_time: 1558663265
        _priority_: 13
        _version_: 1
        _log_time_: 2019-05-06 11:50:16.015554+08:00
        _hostname_: iZbp1a65********i2qZ
        _program_: root
        _procid_: -
        _msgid_: -
        _extradata_: -
        _content_: twish
        _facility_: 1
        _severity_: 5
        _severitylabel_: Notice: normal but significant condition
        _facilitylabel_: user-level messages
    • Exemple 2 : extraire les informations de catégorie, de gravité et de libellé à l'aide du protocole SYSLOGRFC5424, puis renommer les champs de sortie.

      • Journal brut

        receive_time: 1558663265
        _priority_: 13
        _version_: 1
        _log_time_: 2019-05-06 11:50:16.015554+08:00
        _hostname_: iZbp1a65********i2qZ
        _program_: root
        _procid_: -
        _msgid_: -
        _extradata_: -
        _content_: twish
      • Règle de transformation

        e_syslogrfc(
            "_priority_",
            "SYSLOGRFC5424",
            {
                "_facility_": "fac",
                "_severity_": "sev",
                "_facilitylabel_": "_facility_label_",
                "_severitylabel_": "_severity_label_",
            },
        )
      • Résultat

        receive_time: 1558663265
        _priority_: 13
        _version_: 1
        _log_time_: 2019-05-06 11:50:16.015554+08:00
        _hostname_: iZbp1a65********i2qZ
        _program_: root
        _procid_: -
        _msgid_: -
        _extradata_: -
        _content_: twish
        fac: 1
        sev: 5
        _severity_label_: Notice: normal but significant condition
        _facility_label_: user-level messages
  • Références

    Cette fonction peut être combinée avec d'autres fonctions. Pour un exemple connexe, consultez la rubrique Parse standard Syslog format data.

e_anchor

Extrait des chaînes de caractères d'un champ d'entrée en appliquant les règles définies dans le paramètre anchor_rules.

  • Syntaxe

    e_anchor(key,anchor_rules,fields,restrict=False,mode="overwrite")
  • Paramètres

    Parameter

    Type

    Required

    Description

    key

    Any

    Yes

    Nom du champ d'entrée.

    anchor_rules

    String

    Yes

    Définit le modèle d'extraction des chaînes, où un astérisque () représente le contenu à extraire. Exemple : User = ; Severity = *;.

    Les journaux affichés dans la console suivent un format Clé : Valeur, avec un espace par défaut entre les deux-points et la valeur. Lorsque vous spécifiez anchor_rules, n'incluez pas cet espace. Dans l'exemple de journal ci-dessous, le champ content est la cible de l'extraction.

    _source_:  bin-hangzhou-oss
        _tag_:_object_:  test001/test001-or20190906155735.perf
        _tag_:_receive_time_:  1582768681
        _topic_:
        content:  "Download": 4001792
    Remarque

    Un astérisque (*) ne peut pas servir de préfixe ou de suffixe dans la valeur du champ d'entrée.

    fields

    Any

    Yes

    Noms des champs de sortie pour les valeurs extraites. Vous pouvez les spécifier sous forme de liste de chaînes, par exemple ["user", "job", "result"]. Si les noms ne contiennent pas de virgules (,), vous pouvez aussi utiliser une seule chaîne séparée par des virgules, telle que "user, job, result". Pour les détails sur la spécification de noms de champs spéciaux (qui peuvent contenir des caractères spéciaux mais pas d'astérisques *), consultez la section event type.

    Vous pouvez ignorer un nom de champ en utilisant un astérisque (). Par exemple, si vous spécifiez "user,,result", seuls les champs user et result sont créés. Pour plus d'informations, voir l'exemple 10.

    restrict

    Boolean

    No

    Indique s'il faut utiliser le mode restreint. La valeur par défaut est False (mode non restreint). Ce paramètre détermine le comportement lorsque le nombre de valeurs extraites ne correspond pas au nombre de champs de sortie :

    • En mode restreint (True), la fonction n'effectue aucune action.

    • En mode non restreint (False), la fonction attribue les valeurs aux champs correspondants dans l'ordre.

    mode

    String

    No

    La valeur par défaut est overwrite. Consultez la section field extraction check and overwrite mode pour plus d'informations.

  • Réponse

    Renvoie le journal d'origine avec les champs extraits et leurs valeurs ajoutés.

  • Exemples

    • Exemple 1 : extraire plusieurs valeurs

      • Journal brut

        content : "Aug 2 04:06:08: host=192.168.0.10: local/ssl2 notice mcpd[3772]: User=jsmith@example.com: severity=warning: 01070638:5: Pool member 172.31.51.22:0 monitor status down."
      • Règle de transformation

        e_anchor("content","User=*: severity=*:",["user_field","severity_field"])
      • Résultat

        content : "Aug 2 04:06:08: host=192.168.0.10: local/ssl2 notice mcpd[3772]: User=jsmith@example.com: severity=warning: 01070638:5: Pool member 172.31.51.22:0 monitor status down."
        user_field : jsmith@example.com
        severity_field : warning
    • Exemple 2 : extraire plusieurs valeurs d'un tableau JSON

      • Journal brut

        content : '"information":{"name_list":["Twiss","Evan","Wind","like"],"university":["UCL","Stanford University","CMU"]},"other":"graduate"'
      • Règle de transformation

        e_anchor("content",'name_list":*,"university":*},', ["name_list","universities"])
      • Résultat

        content : '"information":{"name_list":["Twiss","Evan","Wind","like"],"university":["UCL","Stanford University","CMU"]},"other":"graduate"'
        name_list : ["Twiss","Evan","Wind","like"]
        universities : ["UCL","Stanford University","CMU"]
    • Exemple 3 : extraire à partir d'un journal contenant des caractères spéciaux

      • Journal brut

        content : (+2019) June 24 "I am iron man"
      • Règle de transformation

        e_anchor("content", "(+*) * \"*\"",["Year","Date","Msg"])
      • Résultat

        content : (+2019) June 24 "I am iron man"
        Year : 2019
        Date : June 24
        Msg : I am iron man
    • Exemple 4 : extraire à partir d'un journal contenant un caractère de contrôle invisible (\x09)

      • Journal brut

        content : \x09\x09\x09Chrome/55.0 Safari/537.36
      • Règle de transformation

        e_anchor("content", "\x09\x09\x09*/55.0 */537.36",["Google", "Apple"])
      • Résultat

        content : \x09\x09\x09Chrome/55.0 Safari/537.36
        Google : Chrome
        Apple : Safari
    • Exemple 5 : extraire le champ content qui contient une valeur avec des caractères spéciaux. La valeur du champ est To...Subject, qui suit MESSAGE:.

      • Journal brut

        content : 12:08:10,651 INFO sample_server ReportEmailer:178 - DEBUG SENDING MESSAGE: 
        To: example@aliyun.com
        Subject: New line Breaks in Message
      • Règle de transformation

        e_anchor("content","* INFO *: \n    To: *\n    Subject: *",["time","message","email","subject"])
      • Résultat

        content : 12:08:10,651 INFO sample_server ReportEmailer:178 - DEBUG SENDING MESSAGE: 
        To: example@aliyun.com
        Subject: New line Breaks in Message
        time : 12:08:10,651
        message : sample_server ReportEmailer:178 - DEBUG SENDING MESSAGE
        email : example@aliyun.com
        subject : New line Breaks in Message
    • Exemple 6 : extraire le champ content qui contient une valeur avec le caractère spécial invisible \t.

      • Journal brut

        content :   I'm tabbed in
      • Règle de transformation

        e_anchor("content","\tI'm * in","word")
        # You can also copy the exact value from the content field to create the pattern.
        # Do not copy the default space after the colon in the field name.
        e_anchor("content","    I'm * in","word")
      • Résultat

        content :   I'm tabbed in
        word : tabbed
    • Exemple 7 : extraire le champ content qui contient une valeur spéciale, affichée sous la forme \t.

      • Journal brut

        content : \tI'm tabbed in
      • Règle de transformation

        e_anchor("content","\tI'm * in","word")
        # You can also use the following rule:
        e_anchor("content","    I'm * in","word")
      • Résultat

        content : \tI'm tabbed in
        word : tabbed
    • Exemple 8 : extraire un journal en mode restreint

      • Journal brut

        content :  I used to love having snowball fight with my friends and building snowmen on the streets around our neighborhood
      • Règle de transformation

        e_anchor("content","I * to * having",["v_word", "n_word","asd"],restrict=True)
      • Résultat

        content : I used to love having snowball fight with my friends and building snowmen on the streets around our neighborhood
    • Exemple 9 : extraire un journal en mode non restreint

      • Journal brut

        content :  I used to love having snowball fight with my friends and building snowmen on the streets around our neighborhood
      • Règle de transformation

        e_anchor("content","love * fight with my * and",["test1","test2","test13"],restrict=False)
      • Résultat

        content : I used to love having snowball fight with my friends and building snowmen on the streets around our neighborhood
        test1 : having snowball
        test2 : friends
    • Exemple 10 : extraire une valeur et en ignorer une autre

      • Journal brut

        content: Could you compare the severity of natural disasters to man-made disasters
      • Règle de transformation

        e_anchor('content', 'compare the * of natural disasters to man-made *', 'n-word,*')
      • Résultat

        content : Could you compare the severity of natural disasters to man-made disasters
        n-word : severity