Les fonctions de traitement des événements vous permettent de supprimer, de conserver, de fractionner et d'exporter des journaux lors de la transformation des données. Cette rubrique présente la syntaxe, les paramètres et des exemples pour chaque fonction.
Fonctions
|
Catégorie |
Fonction |
Description |
|
Opérations sur les événements |
Supprime un journal en fonction d'une condition. Peut être utilisée conjointement avec d'autres fonctions. Pour plus d'informations, consultez la rubrique Répliquer et distribuer des données. |
|
|
Conserve un journal en fonction d'une condition. Les fonctions e_keep et e_drop permettent toutes deux de supprimer des journaux. La fonction e_keep supprime un journal lorsque la condition n'est pas remplie, tandis que e_drop le supprime lorsque la condition est remplie.
Peut être utilisée conjointement avec d'autres fonctions. Pour plus d'informations, consultez la rubrique Transformer des données JSON complexes. |
||
|
Fractionnement des événements |
Fractionne un journal en plusieurs journaux en fonction de la valeur d'un champ. Prend également en charge l'extraction de champs avec JMESPath avant le fractionnement. Peut être utilisée conjointement avec d'autres fonctions. Pour plus d'informations, consultez la rubrique Transformer des données JSON complexes. |
|
|
Exportation d'événements |
Exporte un journal vers un Logstore spécifié. Vous pouvez configurer le sujet, la source, les tags et le hachage de shard pour le journal exporté.
Peut être utilisée conjointement avec d'autres fonctions. Pour plus d'informations, consultez la rubrique Agréger les données de journaux de différents Logstores dans un seul Logstore. |
|
|
Conversion d'événements en données de séries temporelles |
Convertit un journal au format de série temporelle (Metricstore). Remarque
Après avoir traité les données au format de série temporelle, sélectionnez un Metricstore comme destination lors de l'enregistrement des résultats de la transformation. Voici un exemple de données de série temporelle typiques :
Pour plus d'informations, consultez la rubrique Données de séries temporelles (Métrique). Peut être utilisée conjointement avec d'autres fonctions. Pour plus d'informations, consultez la rubrique Convertir les champs de journal d'un Logstore en mesures de métriques dans un Metricstore. |
e_drop
Supprime un journal en fonction d'une condition.
-
Syntaxe
e_drop(condition=True)L'identificateur fixe DROP est pris en charge ; il équivaut à e_drop().
-
Paramètres
Nom du paramètre
Type
Obligatoire
Description
condition
Bool
Non
Valeur par défaut : True. Le résultat d'une fonction conditionnelle est généralement transmis à ce paramètre.
-
Réponse
Si la condition est remplie, le journal est supprimé et la fonction renvoie None. Sinon, elle renvoie le journal d'origine.
-
Exemples
-
Exemple 1 : Supprimez le journal si la valeur du champ __programe__ est access. Sinon, conservez le journal.
-
Journaux bruts
__programe__: access age: 18 content: 123 name: maki __programe__: error age: 18 content: 123 name: maki -
Règle de transformation
e_if(e_search("__programe__==access"), DROP) -
Résultat
Le journal dont le champ __programe__ est défini sur access est supprimé. Le journal dont le champ __programe__ est défini sur error est conservé.
__programe__: error age: 18 content: 123 name: maki
-
-
Exemple 2 : La condition est évaluée à True. Le journal est supprimé.
-
Journal brut
k1: v1 k2: v2 k3: k1 -
Règle de transformation
e_drop(e_search("k1==v1")) -
Résultat
Le journal est supprimé car la condition k1==v1 est vraie.
-
-
Exemple 3 : La condition est évaluée à False. Le journal est conservé.
-
Journal brut
k1: v1 k2: v2 k3: k1 -
Règle de transformation
e_drop(e_search("not k1==v1")) -
Résultat
k1: v1 k2: v2 k3: k1
-
-
Exemple 4 : Aucune condition n'est définie. La valeur par défaut True est utilisée et le journal est supprimé.
-
Journal brut
k1: v1 k2: v2 k3: k1 -
Règle de transformation
e_drop() -
Résultat
Le journal est supprimé.
-
-
-
Références
Peut être utilisée conjointement avec d'autres fonctions. Pour plus d'informations, consultez la rubrique Répliquer et distribuer des données.
e_keep
Conserve un journal en fonction d'une condition.
-
Syntaxe
e_keep(condition=True)L'identificateur fixe KEEP est pris en charge ; il équivaut à e_keep().
-
Paramètres
Nom du paramètre
Type
Obligatoire
Description
condition
Bool
Non
Valeur par défaut : True. Le résultat d'une fonction conditionnelle est généralement transmis à ce paramètre.
-
Réponse
Si la condition est remplie, la fonction renvoie le journal d'origine. Sinon, le journal est supprimé.
-
Exemples
-
Exemple 1 : Conservez le journal si la valeur du champ
__programe__est access. Sinon, supprimez le journal.-
Journaux bruts
__programe__: access age: 18 content: 123 name: maki __programe__: error age: 18 content: 123 name: maki -
Règle de transformation
e_keep(e_search("__programe__==access")) # Equivalent to e_if(e_search("not __programe__==access"), DROP) # Equivalent to e_if_else(e_search("__programe__==access"), KEEP, DROP) -
Résultat
Le journal dont le champ __programe__ est défini sur access est conservé.
__programe__: access age: 18 content: 123 name: maki
-
-
Exemple 2 : La condition est évaluée à True. Le journal est conservé.
-
Journal brut
k1: v1 k2: v2 k3: k1 -
Règle de transformation
e_keep(e_search("k1==v1")) -
Résultat
k1: v1 k2: v2 k3: k1
-
-
Exemple 3 : La condition est évaluée à False. Le journal est supprimé.
-
Journal brut
k1: v1 k2: v2 k3: k1 -
Règle de transformation
e_keep(e_search("not k1==v1")) -
Résultat
Le journal est supprimé.
-
-
Exemple 4 : La condition est fausse. Le journal est supprimé.
-
Journal brut
k1: v1 k2: v2 k3: k1 -
Règle de transformation
e_keep(False) -
Résultat
Le journal est supprimé.
-
-
-
Références
Peut être utilisée conjointement avec d'autres fonctions. Pour plus d'informations, consultez la rubrique Transformer des données JSON complexes.
e_split
Fractionne un journal en plusieurs journaux en fonction de la valeur d'un champ. Prend également en charge l'extraction de champs avec JMESPath avant le fractionnement.
-
Syntaxe
e_split(field_name, sep=',', quote='"', lstrip=True, jmes=None, output=None)Règles de fractionnement :
Si vous spécifiez le paramètre jmes, la valeur du champ du journal est convertie en une liste JSON et JMES est utilisé pour extraire les valeurs pour l'étape suivante. Si vous ne spécifiez pas le paramètre jmes, la valeur du champ est utilisée directement à l'étape suivante.
Si la valeur de l'étape précédente est une liste ou une chaîne au format de liste JSON, le journal est fractionné en fonction de cette liste. Sinon, la valeur est analysée comme un fichier CSV à l'aide des paramètres sep, quote et lstrip. Le journal est ensuite fractionné en fonction des valeurs analysées.
-
Paramètres
Nom du paramètre
Type
Obligatoire
Description
field_name
String
Oui
Nom du champ à fractionner. Pour savoir comment définir des noms de champs spéciaux, consultez la rubrique Types d'événements.
sep
String
Non
Séparateur utilisé pour fractionner plusieurs valeurs.
quote
String
Non
Caractère de guillemet utilisé pour entourer les valeurs.
lstrip
String
Non
Indique s'il faut supprimer les espaces de début de chaque valeur. Valeur par défaut : True.
jmes
String
Non
Convertit la valeur du champ en objet JSON, extrait une valeur à l'aide d'une expression JMES, puis fractionne le résultat.
output
String
Non
Nom du champ pour les résultats du fractionnement. Par défaut, le nom du champ d'origine est écrasé.
-
Réponse
Renvoie une liste de journaux dont les valeurs de champ sont remplacées par les valeurs fractionnées issues de la liste source.
-
Exemples
-
Journaux bruts
__topic__: age: 18 content: 123 name: maki __topic__: age: 18 content: 123 name: maki -
Règle de transformation
e_set("__topic__", "V_SENT,V_RECV,A_SENT,A_RECV") e_split("__topic__") -
Résultat
__topic__: A_SENT age: 18 content: 123 name: maki __topic__: V_RECV age: 18 content: 123 name: maki ...
-
-
Références
Peut être utilisée conjointement avec d'autres fonctions. Pour plus d'informations, consultez la rubrique Transformer des données JSON complexes.
Logstore de sortie
Exporte un journal vers un Logstore spécifié. Vous pouvez configurer le sujet, la source et les tags pour le journal exporté.
-
Syntaxe
e_output(name=None, project=None, logstore=None, topic=None, source=None, tags=None, hash_key_field=None, hash_key=None) e_coutput(name=None, project=None, logstore=None, topic=None, source=None, tags=None, hash_key_field=None, hash_key=None)En mode aperçu, les journaux ne sont pas envoyés vers le Logstore de destination. Ils sont plutôt envoyés vers le Logstore internal-etl-log, un Logstore dédié créé automatiquement dans le projet actuel lors de la première prévisualisation d'une tâche de transformation de données. Vous ne pouvez ni modifier la configuration de ce Logstore, ni y écrire d'autres données. Ce Logstore est gratuit.
-
Paramètres
RemarqueSi vous configurez les paramètres name, project et logstore dans la fonction e_output ou e_coutput, et que vous configurez également un Project de destination et un Logstore de destination dans le panneau Create Data Transformation Job, les paramètres de la fonction ont la priorité. Voici les détails :
Si vous configurez uniquement le paramètre name dans la fonction e_output ou e_coutput, les résultats de la transformation sont distribués et stockés dans le Logstore de destination correspondant au nom spécifié.
-
Si vous configurez uniquement les paramètres project et Logstore dans la fonction e_output, les résultats de la transformation sont distribués et stockés dans le Logstore de destination que vous avez spécifié dans la fonction e_output.
Si vous utilisez une paire AccessKey pour l'autorisation, la paire AccessKey du compte actuellement connecté est utilisée pendant le processus de transformation.
-
Si vous configurez les paramètres name, project et Logstore dans la fonction e_output, les résultats de la transformation sont distribués et stockés dans le Logstore de destination que vous avez spécifié dans la fonction e_output.
Si vous utilisez une paire AccessKey pour l'autorisation, la paire AccessKey spécifiée pour le nom de destination est utilisée pendant le processus de transformation.
Nom du paramètre
Type
Obligatoire
Description
name
String
Non
Nom de la destination de stockage. Valeur par défaut : None.
project
String
Non
Projet de destination. Doit déjà exister.
Logstore
String
Non
Logstore de destination. Doit déjà exister.
topic
String
Non
Définit un nouveau sujet pour le journal.
source
String
Non
Définit une nouvelle source pour le journal.
tags
Dict
Non
Définit de nouveaux tags pour le journal. Transmettez les tags au format dictionnaire.
RemarqueVous n'avez pas besoin d'ajouter le préfixe
__tag__:aux mots-clés.hash_key_field
String
Non
Nom d'un champ dans le journal. La tâche de transformation achemine le journal vers un shard spécifique en fonction de la valeur de hachage de ce champ.
RemarqueSi le champ spécifié n'existe pas dans le journal, le système revient au mode d'équilibrage de charge et écrit le journal de manière aléatoire dans un shard.
hash_key
String
Non
Valeur de hachage. La tâche de transformation achemine le journal vers un shard spécifique en fonction de cette valeur.
RemarqueLe paramètre hash_key_field a une priorité plus élevée que ce paramètre. Si le paramètre hash_key_field est déjà configuré dans la syntaxe de transformation, ce paramètre ne prend pas effet.
-
Définir la destination de stockage par défaut
Lorsque vous utilisez la fonction
e_outputoue_coutput, vous devez configurer une destination de stockage par défaut dans le panneau Create Data Transformation Job. Simple Log Service utilise comme destination par défaut celle portant l'étiquette 1. Par exemple, la tâche de transformation des données envoie les données répondant aux critères d'une fonctione_outputvers les Logstores de destination respectifs detarget_01,target_02ettarget_03. La tâche envoie toutes les autres données non supprimées lors de la transformation vers le Logstore de destination de la destination de stockage par défaut (target0). Dans la zone Storage destination, configurez deux destinations de stockage. Destination de stockage 1 : définissez Target name surtarget0, Target region sur China (Hangzhou), Target Project surProject0, Destination Logstore surLogstore0et Authorization method sur default role. Destination de stockage 2 : définissez Target name surtarget1, Target region sur China (Hangzhou), Target Project surProject1, Destination Logstore surLogstore1et Authorization method sur default role. -
Paramètres avancés
Si vous utilisez la fonction
e_outputoue_coutputet que le projet ou le Logstore de destination n'existe pas, accédez au panneau Create Data Transformation Job. Dans la section Advanced Parameter Settings, définissez la key sur config.sls_output.failure_strategy et la value sur {"drop_when_not_exists":"true"} pour ignorer le journal. Le journal ignoré est supprimé et signalé comme un journal de niveau avertissement. Si vous ne configurez pas les Advanced Parameter Settings, la tâche de transformation des données attend la création du projet et du Logstore de destination avant de s'exécuter.AvertissementLorsque vous utilisez les Advanced Parameter Settings, les journaux sont supprimés si le projet ou le Logstore de destination n'existe pas. Utilisez cette fonctionnalité avec prudence.
-
Résultats
e_output: sort le journal vers le Logstore spécifié. Les règles de transformation suivantes ne sont pas exécutées sur ce journal.e_coutput: sort le journal vers le Logstore spécifié. Les règles de transformation suivantes continuent d'être exécutées sur ce journal.
-
Exemples
-
Exemple 1 : si la valeur du champ k2 correspond à une expression régulière, envoyez le journal vers
target2et définissez le topic surtopic1.-
Journal brut
__topic__: k1: v1 k2: v2 x1: v3 x5: v4 -
Règle de transformation
La fonction
e_drop()est utilisée ici pour supprimer les données filtrées par la fonctione_if(). Si vous n'ajoutez pas cette fonction, les données filtrées sont envoyées vers la destination de stockage par défaut.e_if(e_match("k2", r"\w+"), e_output(name="target2", source="source1", topic="topic1")) e_drop() -
Résultat
__topic__: topic1 k1: v1 k2: v2 x1: v3 x5: v4
-
-
Exemple 2 : calculez un hachage basé sur la valeur du champ db_version dans le journal. Envoyez le journal vers un shard spécifique de la destination de stockage en fonction de cette valeur de hachage.
-
Journaux bruts
__topic__: db_name: db-01 db_version:5.6 __topic__: db_name: db-02 db_version:5.7 -
Règle de transformation
e_output(name="target1", hash_key_field="db_version") -
Résultat
# Assume the storage destination target1 has two shards. # The range of shard 0 is [00000000000000000000000000000000,80000000000000000000000000000000). # The range of shard 1 is [80000000000000000000000000000000,ffffffffffffffffffffffffffffffff). # The hash values for db_version values 5.6 and 5.7 are 0ebe1a34e990772a2bad83ce076e0766 and f1867131d82f2256b4521fe34aec2405, respectively. # shard 0: __topic__: db_name: db-01 db_version:5.6 # shard 1: __topic__: db_name: db-02 db_version:5.7
-
-
Exemple 3 : spécifiez directement une valeur de hachage pour envoyer le journal vers un shard spécifique de la destination de stockage.
-
Journaux bruts
__topic__: db_name: db-01 db_version:5.6 __topic__: db_name: db-02 db_version:5.7 -
Règle de transformation
e_output(name="target1", hash_key="00000000000000000000000000000000") -
Résultat
# Assume the storage destination has two shards. # The range of shard 0 is [00000000000000000000000000000000,80000000000000000000000000000000). # The range of shard 1 is [80000000000000000000000000000000,ffffffffffffffffffffffffffffffff). # shard 0: __topic__: db_name: db-01 db_version:5.6 __topic__: db_name: db-02 db_version:5.7 # shard 1: None
-
-
-
Références
Peut être utilisé avec d'autres fonctions. Pour plus d'informations, consultez Agrégation des données de journaux de différents Logstores dans un seul Logstore.
e_to_metric
Convertit un journal au format série temporelle (Metricstore).
-
Syntaxe
e_to_metric(names=None, labels=None, time_field='__time__', time_precision='s', ignore_none_names=True, ignore_none_labels=True) -
Paramètres
Nom du paramètre
Type
Obligatoire
Description
names
String, StringList ou Tuple List
Oui
Le nom de métrique pour les données de série temporelle. Il peut s'agir d'une chaîne unique, d'une liste de chaînes ou d'une liste de tuples. Sa valeur correspond au nom du champ de journal correspondant.
-
String : convertit un champ de journal en nom de métrique pour les données de série temporelle. Contient une seule chaîne, telle que
rt. Un enregistrement de données de série temporelle contenant__name__:rtest renvoyé. -
StringList : convertit les champs de journal en noms de métriques pour les données de série temporelle. Contient plusieurs chaînes, telles que
["rt", "qps"]. Deux enregistrements de données de série temporelle sont renvoyés, contenant respectivement__name__:rtet__name__:qps. -
Tuple List : convertit plusieurs champs de journal en noms de métriques pour les données de série temporelle et les renomme. Contient plusieurs tuples, tels que
[("rt","max_rt"),("qps", "total_qps")]. Le premier élément du tuple est le champ de journal d'origine et le second est le champ de nom de métrique pour les données de série temporelle transformées. Deux enregistrements de données de série temporelle sont renvoyés, contenant respectivement__name__:max_rtet__name__:total_qps.
labels
String, StringList ou Tuple List
Non
Le champ d'étiquettes pour les données de série temporelle. Il peut s'agir d'une chaîne unique, d'une liste de chaînes ou d'une liste de tuples. Sa valeur correspond au nom du champ de journal correspondant.
RemarqueDans les descriptions suivantes,
hostetappsont des noms de champs de journal, ethostvalueetappvaluesont des valeurs de champs de journal.-
String : convertit un champ de journal en étiquettes pour les données de série temporelle. Contient une seule chaîne, telle que
host. Un enregistrement de données de série temporelle contenant__label__:host#$#hostvalueest renvoyé. -
StringList : convertit les champs de journal en étiquettes pour les données de série temporelle. Contient plusieurs chaînes, telles que
["host", "app"]. Deux enregistrements de données de série temporelle sont renvoyés, contenant respectivement__label__:host#$#hostvalueet__label__:app#$#appvalue. -
Tuple List : convertit plusieurs champs de journal en étiquettes pour les données de série temporelle et les renomme. Contient plusieurs tuples, tels que
[("host","hostname"),("app", "appname")]. Le premier élément du tuple est le champ de journal d'origine et le second est le champ d'étiquettes pour les données de série temporelle transformées. Deux enregistrements de données de série temporelle sont renvoyés, contenant respectivement__label__:hostname#$#hostvalueet__label__:appname#$#appvalue.
time_field
String
Non
Le champ temporel pour les données de série temporelle. Par défaut, le champ
__time__du journal est utilisé.time_precision
Int
Non
L'unité de temps du champ d'horodatage dans les journaux bruts. Valeurs valides : secondes, millisecondes, microsecondes et nanosecondes. Par défaut : secondes. Par exemple,
time_field="ms"spécifie les millisecondes comme unité de temps.ignore_none_names
Boolean
Non
Indique s'il faut ignorer la conversion lorsque le champ de journal spécifié n'existe pas.
-
True (par défaut) : ignore la conversion. Les données ne sont pas converties en données de série temporelle.
-
False : signale une erreur si le champ n'existe pas.
ignore_none_labels
Boolean
Non
Indique s'il faut ignorer la conversion des étiquettes lorsque le champ de journal spécifié n'existe pas.
-
True (par défaut) : ignore la conversion. Les données ne sont pas converties en données de série temporelle.
-
False : signale une erreur si le champ n'existe pas.
-
-
Réponse
Renvoie les données de série temporelle.
-
Exemples
-
Exemple 1 : convertissez un journal contenant le champ rt au format de données de série temporelle.
-
Journal brut
__time__: 1614739608 rt: 123 -
Règle de transformation
e_to_metric(names="rt") -
Résultat
__labels__: __name__:rt __time_nano__:1614739608000000000 __value__:123.0
-
-
Exemple 2 : convertissez un journal contenant le champ rt au format de données de série temporelle et utilisez le champ host comme nouvelle étiquette.
-
Journal brut
__time__: 1614739608 rt: 123 host: myhost -
Règle de transformation
e_to_metric(names="rt", labels="host") -
Résultat
__labels__:host#$#myhost __name__:rt __time_nano__:1614739608000000000 __value__:123.0
-
-
Exemple 3 : convertissez un journal contenant les champs rt et qps au format de données de série temporelle et utilisez le champ host comme nouvelle étiquette.
-
Journal brut
__time__: 1614739608 rt: 123 qps: 10 host: myhost -
Règle de transformation
e_to_metric(names=["rt","qps"], labels="host") -
Résultat
__labels__:host#$#myhost __name__:rt __time_nano__:1614739608000000000 __value__:123.0 __labels__:host#$#myhost __name__:qps __time_nano__:1614739608000000000 __value__:10.0
-
-
Exemple 4 : convertissez un journal contenant les champs rt et qps au format de données de série temporelle, remplacez les noms de champs par max_rt et total_qps et utilisez le champ host comme nouvelle étiquette.
-
Journal brut
__time__: 1614739608 rt: 123 qps: 10 host: myhost -
Règle de transformation
e_to_metric(names=[("rt","max_rt"),("qps","total_qps")], labels="host") -
Résultat
__labels__:host#$#myhost __name__:max_rt __time_nano__:1614739608000000000 __value__:123.0 __labels__:host#$#myhost __name__:total_qps __time_nano__:1614739608000000000 __value__:10.0
-
-
Exemple 5 : convertissez un journal contenant les champs rt et qps au format de données de série temporelle, remplacez les noms de champs par max_rt et total_qps et renommez le champ host en hostname pour l'utiliser comme nouvelle étiquette.
-
Journal brut
__time__: 1614739608 rt: 123 qps: 10 host: myhost -
Règle de transformation
e_to_metric(names=[("rt","max_rt"),("qps","total_qps")], labels=[("host","hostname")]) -
Résultat
__labels__:hostname#$#myhost __name__:max_rt __time_nano__:1614739608000000000 __value__:123.0 __labels__:hostname#$#myhost __name__:total_qps __time_nano__:1614739608000000000 __value__:10.0
-
-
Exemple 6 : convertissez un journal contenant les champs remote_user1 et request_length au format de données de série temporelle, remplacez les noms de champs par remote_user2 et request_length1 et utilisez le champ status1 comme nouvelle étiquette.
-
Journal brut
__time__:1652943594 remote_user:89 request_length:4264 request_method:GET status:200 -
Règle de transformation
# The remote_user1 and status1 fields do not exist, so they are ignored and not converted. e_to_metric( names=[("remote_user1", "remote_user2"), ("request_length", "request_length1")], labels="status1", ignore_none_names=True, ignore_none_labels=True, ) -
Résultat
__labels__: __name__:request_length1 __time_nano__:1652943594000000000 __value__:4264.0
-
-
Exemple 7 : convertissez un journal contenant le champ remote_user au format de données de série temporelle, utilisez le champ status comme nouvelle étiquette et spécifiez l'unité de temps des données du journal source en millisecondes.
-
Journal brut
__time__:1652943594 remote_user:89 request_length:4264 request_method:GET status:200 -
Règle de transformation
e_to_metric( names="remote_user", labels="status", time_precision="ms", ignore_none_names=True, ignore_none_labels=True, ) -
Résultat
__labels__:status#$#200 __name__:remote_user __time_nano__:1652943594000000 __value__:89.0
-
-
Exemple 8 : convertissez un journal contenant le champ remote_user au format de données de série temporelle, utilisez le champ status comme nouvelle étiquette, utilisez le champ time comme champ temporel pour les données de série temporelle et spécifiez l'unité de temps des données du journal source en nanosecondes.
-
Journal brut
time:1652943594 remote_user:89 request_length:4264 request_method:GET status:200 -
Règle de transformation
e_to_metric( names="remote_user", labels="status", time_field="time", time_precision="ns", ignore_none_names=True, ignore_none_labels=True, ) -
Résultat
__labels__:status#$#200 __name__:remote_user __time_nano__:1652943594 __value__:89.0
-
-
-
Références
Peut être utilisé avec d'autres fonctions. Pour plus d'informations, consultez Conversion des champs de journal d'un Logstore en mesures de métriques dans un Metricstore.