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 | 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 | 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 | Extrait les valeurs de plusieurs champs à partir d'un champ source en utilisant un délimiteur et des noms de champ prédéfinis.
Ces fonctions peuvent être combinées avec d'autres fonctions. Pour un exemple connexe, consultez Analyser les journaux au format CSV. | |
Extraction clé-valeur | 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. | |
Extrait des paires clé-valeur d'un champ source en utilisant un délimiteur. | ||
Extraction standard Syslog | 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 | 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.
RemarqueUn 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 estNone, 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' )RemarqueSi la chaîne cible n'est pas un objet JSON valide, la fonction
e_jsonrenvoie 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ètresep. 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ètresep. 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ètresep. 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
fmtest 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,prefixetsuffix.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_pathetexclude_pathcorrespondent 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_listorganise 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_rlistorganise 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 fonctionse_psvete_tsvfonctionnent 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
=.RemarqueVous 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
".RemarqueLa valeur d'une paire clé-valeur dynamique extraite est généralement entourée de guillemets, par exemple
a="abc"etb="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 dea=ab12_-.%~|abc b=123, le système extraita: ab12_-.%~etb: 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éekey="abc\"xyz", la fonction extrait par défaut la valeurabc\pour le champkey. Si vous définissezescape=True, la valeur extraite estabc"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=2RemarqueSi le journal brut est
request_uri: a1=1&a2=&a3=3et 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
content2et interpréter les caractères d'échappement à l'aide du paramètreescape.-
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\wetabc\s.RemarquePour 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.RemarqueVous 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=v3RemarqueSi le journal brut est
request_uri: a1=1&a2=&a3=3, la fonction e_kv_delimit() ne peut pas extrairea2car 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
contentest la cible de l'extraction._source_: bin-hangzhou-oss _tag_:_object_: test001/test001-or20190906155735.perf _tag_:_receive_time_: 1582768681 _topic_: content: "Download": 4001792RemarqueUn 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 champsuseretresultsont 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 suitMESSAGE:.-
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
-
-