Overview
Puede configurar un reenvío de registros para almacenar automáticamente los registros del servidor de su aplicación en una colección de MongoDB o enviarlos a un servicio externo. Atlas App Services puede reenviar los registros individualmente a medida que se crean o agruparlos por lotes para reducir la sobrecarga.
Un reenviador de registros consiste en los siguientes componentes:
Una acción que controla cómo y dónde aplicación Services reenvía registros.
Un filtro que controla qué registros reenvía App Services.
Una política que controla si App Services agrupa los registros o los reenvía individualmente.
¿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:
Almacene registros durante un período más largo que el de retención de 10 días de App Services.
Integre registros en un servicio de registros externo
Registros de acceso en Atlas Search, Online Archive y Charts
¿Cómo se factura el reenvío de registros?
Cada invocación de acción de reenvío de registro (ya sea en un registro individual o en un lote) se factura como una solicitud de App Services.
Configurar un reenviador de registros
1. Crear un reenvío de registros
Para crear un nuevo reenvío de registros, navegue hasta la Logs y seleccione la pestaña Forwarding. Luego, haga clic en el botón Create a Log Forwarder.
En la siguiente pantalla, especifique un nombre único para el 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>" }
2. Choose Which Logs to Forward
Los Servicios de Aplicaciones pueden reenviar todos los registros de tu aplicación o enviar solo un subconjunto a la colección o servicio de destino. Puedes controlar este subconjunto para cada reenviador de registros definiendo filtros para el tipo de registro (p. ej., funciones, sincronización, etc.) y el estado (p. ej., éxito o error) que invocan la acción del reenviador.
Elija uno o más tipos de registro para reenviar en el menú desplegable Log Type:

Elija uno o más estados para reenviar en el menú desplegable Log Status:

Especifica uno o más tipos y uno o más estados para que el reexpedidor coincida y reenvíe:
{ "name": "<name>", "log_types": [ "<type>", ... ], "log_statuses": [ "<status>", ... ] }
App Services admite el reenvío de los siguientes tipos de registros:
authendpointfunctiongraphqlpushschemaservicesynctriggertrigger_error_handler
App Services supports forwarding the following log statuses:
errorsuccess
Importante
Los servicios de aplicación solo reenvían un registro determinado si tanto su tipo como su estado están especificados en el filtro.
Por ejemplo, considere una aplicación de reenvío que filtra los registros sync con un estado error.
El filtro enviaría el siguiente registro:
{ "type": "sync", "status": "error", ... }
El filtro no reenviaría los siguientes registros:
{ "type": "sync", "status": "success", ... } { "type": "schema", "status": "error", ... }
3. Configure Log Batching
App Services puede combinar varios registros en una sola solicitud por lotes para reducir la sobrecarga. La forma en que App Services agrupa los registros en lotes se controla mediante una política de procesamiento por lotes.
App Services supports the following batching policies:
Sin procesamiento por lotes: App Services reenvía los registros individualmente a medida que se producen las solicitudes correspondientes.
Procesamiento por lotes: El reenvío 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, App Services lo reenvía en una sola solicitud. App Services reenvía los registros al menos una vez por minuto, independientemente de la cantidad 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, se debe especificar el tipo de política, ya sea single o batch, en el campo policy:
{ "name": "<name>", "log_types": [ "<type>", ... ], "log_statuses": [ "<status>", ... ], "policy": { "type": "<single|batch>" } }
5. Definir una acción
Un despachador de logs puede almacenar automáticamente los logs en una colección vinculada de MongoDB o llamar a una función personalizada que envíe los logs a un servicio externo.
Almacenar registros en una colección de MongoDB
Para almacenar registros en una colección, selecciona la acción To Collection e introduce los nombres del clúster vinculado, base de datos y colección que deben guardar los registros reenviados.

Para almacenar registros en una colección, se debe especificar un action de tipo collection que incluya los nombres del clúster vinculado, base de datos y colección 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, un SDK o una biblioteca.
Nota
Dependiendo de tu política de procesamiento por lotes y la frecuencia de los registros, App Services puede llamar a una función de reenvío de registros con un arreglo de hasta 100 objetos de registros.
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 }); }
Una vez que haya escrito la función de reenvío de registros, puede asignarla a un reenviador de registros por nombre.
Para asignar una función a un reenviador de registros, selecciona la acción To Function y luego la función del menú desplegable.
Para asignar una función a un reexpedidor de registros, especifique un action de tipo function que incluya el nombre de la función de reexpedición de registros.
{ "name": "<name>", "log_types": [ "<type>", ... ], "log_statuses": [ "<status>", ... ], "policy": { "type": "<single|batch>" }, "action": { "type": "function", "name": "<function name>" } }
6. Save and Deploy your Changes
Una vez configurado el reenvío de registros, haga clic en Save. Si tiene habilitados los borradores de implementación, asegúrese de implementar los cambios.
Una vez que hayas configurado el redireccionador de registros, guarda el archivo de configuración y luego envía la configuración actualizada de tu aplicación:
appservices push
Reinicie un remitente de registros suspendido
Un reenvío de registros puede 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.
Puede reiniciar un reenviador de registros suspendido desde la pantalla Logs > Forwarding en la Interfaz de usuario Realm.
Nota
If a log forwarder is suspended, App Services sends the project owner an email alerting them of the issue.