La función de transformación de datos de Simple Log Service utiliza grupos de consumidores para consumir y procesar datos de registros. Usted puede orquestar más de 200 funciones integradas para crear reglas de transformación. Este documento explica cómo se programan los datos durante la transformación y cómo funciona el motor de reglas.
Conceptos básicos de programación
La función de transformación de datos de Simple Log Service usa un grupo de consumidores para leer los datos de registros del logstore de origen como una secuencia. Procesa cada registro mediante una regla de transformación y después emite el resultado.

-
Scheduling mechanism
Para cada regla de transformación, el programador inicia una o más instancias en ejecución. Cada instancia actúa como consumidor de uno o varios shards del logstore de origen. El programador determina la cantidad de instancias paralelas según el uso de memoria y CPU. El número máximo de instancias es igual a la cantidad de shards del logstore de origen.
-
Running instance
Una instancia en ejecución lee los registros de origen de los shards asignados de acuerdo con su configuración. Procesa los datos con la regla de transformación y envía el resultado al logstore de destino. Las reglas de transformación pueden usar recursos externos para enriquecer los datos de registros. La instancia utiliza el mecanismo de grupos de consumidores para guardar su posición de consumo dentro de un shard. De este modo, si la instancia se detiene de forma inesperada, reanudará el consumo desde el último punto de control guardado.
-
Task stop
Si no configura una hora de finalización para la tarea, las instancias en ejecución continuarán funcionando de manera predeterminada y el trabajo de transformación de datos no se detendrá.
Si establece una hora de finalización para la tarea, las instancias en ejecución procesarán todos los registros recibidos hasta ese momento. Después, las instancias saldrán automáticamente y el trabajo de transformación de datos se detendrá.
Cuando un trabajo se detiene por cualquier motivo y se reinicia, reanuda el consumo desde la última posición guardada de forma predeterminada.
Conceptos básicos del motor de reglas: operaciones básicas
Utilice las funciones integradas que proporciona SLS DSL para escribir reglas de transformación. Cada función representa un paso de transformación, y el motor de reglas ejecuta las funciones de forma secuencial.
e_set("log_type", "access_log")
e_drop_fields("__action")
e_if(e_search("ret: pass"), e_set("result", "pass"))
e_if(e_search("ret: unknown"), DROP)
A continuación se muestra la lógica correspondiente.
-
Lógica básica
Cada función de evento de una regla se ejecuta en orden. Cada función procesa y modifica un evento antes de pasarlo a la siguiente.
Por ejemplo,
e_set("log_type", "access_log")agrega un campo llamadolog_typecon el valor access_log a cada evento. La siguiente función recibe entonces el evento actualizado, que ya incluye el campolog_type. -
Lógica condicional
Los pasos pueden tener condiciones. Si un evento no cumple una condición, omite la operación de ese paso.
Por ejemplo, la función
e_if(e_search("ret: pass"), e_set("result", "pass"))comprueba primero si el camporetcontiene pass. Si no se cumple la condición, no se realiza ninguna acción. Cuando sí se cumple, la función establece el valor del camporesulten pass. -
Detención del procesamiento
Si un paso devuelve cero eventos, se considera que el evento se eliminó.
Por ejemplo,
e_if(e_search("ret: unknown"), DROP)descarta los eventos cuyo camporettiene el valor unknown. Una vez descartado un evento, no se le aplican más operaciones y el procesamiento continúa con el siguiente.
Conceptos básicos del motor de reglas: salida, copia y división
El motor de reglas también admite la copia, emisión y división de eventos.
e_coutput("archive_Logstore") )
e_split("log_type")
e_if(e_search("log_type: alert"), e_output("alert_Logstore") )
e_set("result", "pass")
Suponga que el registro de origen que se va a procesar es el siguiente:
log_type: access,alert
content: admin login to database.
A continuación se muestra la lógica correspondiente.
-
Emisión de eventos
Una operación de salida se considera un tipo especial de detención del procesamiento. Por ejemplo, en el paso 3, si un evento tiene un campo
log_typecon el valor alert, se llama a la funcióne_output("alert_Logstore"). Esta función envía el evento al destino especificado y luego lo elimina. No se realizan operaciones posteriores sobre dicho evento. -
Copia y emisión de eventos
La función
e_coutputcopia el evento actual y emite la copia. El evento original continúa hacia el siguiente paso de procesamiento. Por ejemplo, en el paso 1, todos los eventos recibidos se copian y luego se envían al destinoarchive_Logstore. -
División y procesamiento paralelo
En el paso 2, si el campo
log_typecontiene los valores access y alert,e_split("log_type")divide el evento en dos eventos independientes según los valores del campolog_type. Los dos eventos nuevos son idénticos, excepto por el campo log_type, que tendrá el valor access en uno y alert en el otro. Después, cada evento nuevo avanza por los pasos siguientes de manera independiente.Tras la división, cada evento resultante continúa por los pasos siguientes de forma independiente.