Overview
Puedes configurar un reenvío de registros para almacenar automáticamente los registros de disparadores y funciones del servidor en una colección de MongoDB o enviarlos a un servicio externo. También puedes reenviar los registros individualmente a medida que se crean o agruparlos por lotes para reducir la sobrecarga.
Un reenvío de registros consta de los siguientes componentes:
Una acción que controla cómo y dónde se reenvían los registros.
Un filtro que controla qué registros se reenvían.
Una política que controla si los registros se reenvían individualmente o en lotes.
¿Por qué debería configurar el reenvío de registros?
Considere configurar un reenvío de registros si necesita realizar alguna de las siguientes acciones:
Almacenar registros durante un período de retención superior al de 10 días.
Integra registros en un servicio externo de registro.
Registros de acceso en MongoDB Search, Online Archive y Charts.
Configurar un reenvío de registros
Crear un reenvío de registros
Para crear un reenvío de registros:
En Atlas, vaya a la Triggers página.
Si aún no aparece, se debe seleccionar la organización que contiene el proyecto en el menú Organizations de la barra de navegación.
Si aún no se muestra, seleccione su proyecto en el menú Projects de la barra de navegación.
En la barra lateral, haz clic en Triggers en la sección Streaming Data.
El Se muestra la páginade activadores.
Haga clic en el botón View All Apps.
Haga clic en la aplicación que contiene el disparador o la función cuyos registros desea reenviar.
Navega a la página Logs.
Seleccione la pestaña Forwarding.
Haga clic en el botón Create a Log Forwarder.
Especifique un nombre único para su reenvío de registros.
Para crear un nuevo reenvío de registros, agregue un nuevo archivo de configuración al
log_forwarders Directorio de tu aplicación. El nombre del archivo debe coincidir con el valor del campo name de la configuración.
{ "name": "<name>" }
Elija qué registros reenviar
Puedes reenviar todos tus registros de activador o función o enviar solo un subconjunto a la colección objetivo o servicio. Controlas este subconjunto para cada reenviador de registros definiendo filtros para el tipo de registro (por ejemplo, funciones, triggers, etc.) y estado (es decir. éxito o error) que invoque la acción del reenviador.
Seleccione uno o más tipos de registro para reenviar en el menú desplegable Log Type. Luego, seleccione uno o más estados para reenviar en el menú desplegable Log Status.
Especifique uno o más tipos y uno o más estados para que el reenvío coincida y reenvíe:
{ "name": "<name>", "log_types": [ "<type>", ... ], "log_statuses": [ "<status>", ... ] }
Puede reenviar los siguientes tipos de registros:
authendpointfunctiongraphqlpushschemaservicetriggertrigger_error_handler
Puede reenviar los siguientes estados de registro:
errorsuccess
Importante
Un reenvío de registros solo reenvía un registro determinado si tanto su tipo como su estado están especificados en el filtro.
Por ejemplo, considere un reenvío que filtra triggers registros con un estado error.
El filtro reenviaría el siguiente registro:
{ "type": "triggers", "status": "error", ... }
El filtro no reenviaría los siguientes registros:
{ "type": "triggers", "status": "success", ... } { "type": "functions", "status": "error", ... }
Configurar el procesamiento por lotes de registros
Puede combinar varios registros en una sola solicitud por lotes para reducir la sobrecarga. La política de procesamiento por lotes que seleccione determinará cómo un reenviador de registros agrupa los registros.
Puede elegir entre las siguientes políticas de procesamiento por lotes:
Sin procesamiento por lotes: el reenvío de registros reenvía los registros individualmente a medida que se producen las solicitudes correspondientes.
Procesamiento por lotes: El reenvío de registros agrupa los documentos en un lote a medida que se generan. Cada lote puede incluir hasta 100 entradas de registro. Cuando un lote está lleno, el reenvío lo reenvía en una sola solicitud. El reenvío reenvía los registros al menos una vez por minuto, independientemente del número de registros en el lote actual.
Para configurar el procesamiento por lotes, seleccione la política No batch o Batching.
Para configurar el procesamiento por lotes, especifique el tipo de política, single o batch, en el campo policy:
{ "name": "<name>", "log_types": [ "<type>", ... ], "log_statuses": [ "<status>", ... ], "policy": { "type": "<single|batch>" } }
Definir una acción
Un reenvío de registros puede almacenar automáticamente registros en una colección MongoDB vinculada o llamar a una función personalizada que envía los registros a un servicio externo.
Almacenar registros en una colección de MongoDB
Para almacenar registros en una colección, seleccione la acción To Collection e ingrese los nombres del clúster, la base de datos y la colección vinculados que deben contener los registros reenviados.
Para almacenar registros en una colección, especifique un action de tipo collection que incluya los nombres del clúster, la base de datos y la colección vinculados que deben contener los registros reenviados.
{ "name": "<name>", "log_types": [ "<type>", ... ], "log_statuses": [ "<status>", ... ], "policy": { "type": "<single|batch>" }, "action": { "type": "collection", "data_source": "<data source name>", "database": "<database name>", "collection": "<collection name>" } }
Reenviar registros con una función personalizada
Para reenviar registros a un servicio externo, Escriba una función que acepte una matriz de objetos de registro y llame al servicio a través de una API, SDK o biblioteca.
Nota
Dependiendo de su política de procesamiento por lotes y la frecuencia de registro, el reenvío de registros puede llamar a una función de reenvío de registros con una matriz de hasta 100 objetos de registro.
La función debe tener la misma firma que el siguiente ejemplo:
exports = async function(logs) { // `logs` is an array of 1-100 log objects // Use an API or library to send the logs to another service. await context.http.post({ url: "https://api.example.com/logs", body: logs, encodeBodyAsJSON: true }); }
Después de escribir la función de reenvío de registros, puede asignarla a un reenvío de registros por nombre.
Para asignar una función a un reenvío de registros, seleccione la acción To Function y luego seleccione la función en la entrada desplegable.
Para asignar una función a un reenvío de registros, especifique un action de tipo function que incluya el nombre de la función de reenvío de registros.
{ "name": "<name>", "log_types": [ "<type>", ... ], "log_statuses": [ "<status>", ... ], "policy": { "type": "<single|batch>" }, "action": { "type": "function", "name": "<function name>" } }
Guarde e implemente sus cambios
Después de configurar el reenvío de registros, haga clic en Save. Si tiene habilitados los borradores de implementación, asegúrese de implementar los cambios.
Después de configurar el reenvío de registros, guarde el archivo de configuración y luego envíe la configuración actualizada de su aplicación:
appservices push
Reiniciar un reenvío de registros suspendido
Un reenvío de registros podría suspenderse ante un evento que le impida continuar, como una interrupción de la red o un cambio en el clúster subyacente que almacena los registros. Una vez suspendido, no se puede invocar un reenvío y no reenvía ningún registro.
Puedes reiniciar un reenviador de registros suspendido desde la pantalla Logs > Forwarding de la Interfaz de Usuario de Atlas.
Nota
Si se suspende un reenvío de registros, se envía un correo electrónico al propietario del proyecto para notificarle sobre el problema.