En este documento, se explica cómo Cloud Logging enruta las entradas de registro que recibe Google Cloud. Existen varios tipos diferentes de destinos de rutas. Por ejemplo, puedes enrutar entradas de registro a un destino, como un bucket de registros, que almacena entradas de registro. Si deseas exportar tus datos de registro a un destino de terceros, puedes enrutar las entradas de registro a Pub/Sub. Además, una entrada de registro se puede enrutar a varios destinos.
A un alto nivel, así es como Cloud Logging enruta y almacena las entradas de registro:
Acerca de los enrutadores de registros
Cada Google Cloud proyecto, cuenta de facturación, carpeta y organización tiene un enrutador de registros, que administra el flujo de entradas de registro a través de los receptores a nivel del recurso. Un enrutador de registros también administra el flujo de una entrada de registro a través de los receptores que se encuentran en la jerarquía de recursos de la entrada. Los receptores controlan cómo se enrutan las entradas de registro a los destinos.
El enrutador de registros almacena una entrada de registro de forma temporal. Este comportamiento protege contra las interrupciones temporales y las fallas que pueden ocurrir cuando una entrada de registro fluye a través de los receptores. El almacenamiento temporal no protege contra los errores de configuración.
El almacenamiento temporal de un enrutador de registros es distinto del almacenamiento a mayor plazo que proporcionan los buckets de Logging.
Se descartan las entradas de registro entrantes con marcas de tiempo que sean anteriores al período de retención de registros o que sean posteriores a 24 horas.
Acerca de los receptores de registros
Cuando un receptor de registros recibe una entrada de registro, determina si debe ignorarla o enrutarla. Esta decisión se toma comparando la entrada de registro con los filtros del receptor de registros. Cuando se enruta la entrada de registro, el receptor de registros la envía al destino especificado por el receptor de registros. Ese destino puede ser un proyecto, una ubicación de almacenamiento o un servicio.
Los receptores de registros pertenecen a un Google Cloud recurso Google Cloud determinado:proyectos, cuentas de facturación, carpetas y organizaciones. Estos recursos también contienen varios receptores de registros. Cuando un recurso recibe una entrada de registro, cada receptor de registro de ese recurso evalúa la entrada de registro de forma independiente. Como resultado, varios receptores de registros pueden enrutar la misma entrada de registro.
De forma predeterminada, los datos de registro se almacenan en el proyecto del que provienen. Sin embargo, existen varios motivos por los que tal vez quieras cambiar esta configuración:
- Centralizar el almacenamiento de tus datos de registro
- Unir tus datos de registro con otros datos de la empresa
- Para organizar tus datos de registro de una manera que te resulte útil.
- Para transmitir tus registros a otras aplicaciones, otros repositorios o a terceros Por ejemplo, es posible que desees exportar tus registros de Google Cloud para poder verlos en una plataforma de terceros. Para exportar tus entradas de registro, crea un receptor de registros que las enrute a Pub/Sub.
Un receptor de registros mal configurado no enruta las entradas de registro. Cuando un receptor está mal configurado, se escriben entradas de registro que informan los detalles del error. Además, se envía un correo electrónico a los contactos esenciales del recurso. Para obtener más información, consulta Solución de problemas: Visualiza errores.
Los receptores de registros no pueden enrutar entradas de registro de forma retroactiva. Es decir, un receptor de registros no puede enrutar una entrada de registro que se recibió antes de que se creara el receptor. Del mismo modo, si un receptor está mal configurado, solo enrutará las entradas de registro que lleguen después de que se resuelva el error de configuración. Sin embargo, puedes copiar de forma retroactiva los datos de registro de un bucket de registros a Cloud Storage. Para obtener más información, consulta Cómo copiar registros.
Compatibilidad con organizaciones y carpetas
Para ayudarte a administrar los datos de registro en una organización o carpeta, puedes hacer lo siguiente:
Puedes crear receptores agregados, que enrutan las entradas de registro de una organización o carpeta y sus elementos secundarios al destino especificado por el receptor. Existen dos tipos de receptores agregados:
- Receptores agregados que no interceptan
- Intercepta receptores agregados
La diferencia entre estos dos tipos de receptores es que los receptores de interceptación en un nivel de la jerarquía de recursos pueden afectar el enrutamiento de los recursos que se encuentran en niveles inferiores de la jerarquía. Los receptores que no interceptan no afectan el enrutamiento de otros recursos. Cuando un receptor de interceptación en un recurso coincide con una entrada de registro, esta no se envía a los receptores de los recursos secundarios, con la excepción de que siempre se envía al receptor de registros de
_Required
en el recurso en el que se originó.Puedes configurar los parámetros de configuración predeterminados de los recursos para especificar la configuración del receptor
_Default
creado por el sistema para los recursos nuevos en una organización o carpeta. Por ejemplo, puedes usar estos parámetros de configuración para inhabilitar el receptor de_Default
o especificar los filtros en ese receptor.
Ejemplos de enrutamiento
En esta sección, se ilustra cómo una entrada de registro que se origina en un proyecto puede fluir a través de los receptores en su jerarquía de recursos.
Ejemplo: No existen receptores agregados
Cuando no existen receptores agregados en la jerarquía de recursos de la entrada de registro, esta se envía a los receptores de registros del proyecto en el que se originó. Un receptor a nivel del proyecto enruta la entrada de registro al destino del receptor cuando la entrada de registro coincide con el filtro de inclusión del receptor, pero no coincide con ninguno de los filtros de exclusión del receptor.
Ejemplo: Existe un receptor agregado que no intercepta
Supón que existe un receptor agregado que no intercepta en la jerarquía de recursos para una entrada de registro. Después de que el enrutador de registros envía la entrada de registro al receptor agregado que no intercepta, sucede lo siguiente:
El receptor agregado que no intercepta enruta la entrada de registro al destino del receptor cuando la entrada de registro coincide con el filtro de inclusión, pero no coincide con ningún filtro de exclusión.
El enrutador de registros envía la entrada de registro a los receptores de registros del proyecto en el que se originó la entrada de registro.
Un receptor a nivel del proyecto enruta la entrada de registro al destino del receptor cuando la entrada de registro coincide con el filtro de inclusión del receptor, pero no coincide con ninguno de los filtros de exclusión del receptor.
Ejemplo: Existe un receptor agregado de interceptación
Supón que existe un receptor agregado de interceptación en la jerarquía de recursos para una entrada de registro. Después de que el enrutador de registros envía la entrada de registro al receptor agregado de interceptación, sucede una de las siguientes situaciones:
La entrada de registro coincide con el filtro de inclusión, pero no con ningún filtro de exclusión:
- La entrada de registro se enruta al destino del receptor agregado interceptor.
- La entrada de registro se envía al receptor
_Required
en el proyecto en el que se originó la entrada de registro.
La entrada de registro no coincide con el filtro de inclusión o coincide con al menos un filtro de exclusión:
- La entrada de registro no se enruta a través del receptor agregado interceptor.
El enrutador de registros envía la entrada de registro a los receptores de registros del proyecto en el que se originó la entrada de registro.
Un receptor a nivel del proyecto enruta la entrada de registro al destino del receptor cuando la entrada de registro coincide con el filtro de inclusión del receptor, pero no coincide con ninguno de los filtros de exclusión del receptor.
Filtros de receptores de registros
Cada receptor de registros contiene un filtro de inclusión y puede contener varios filtros de exclusión. Estos filtros determinan si el receptor de registros enruta una entrada de registro al destino del receptor. Si no especificas ningún filtro, todas las entrada de registro se enrutan al destino del receptor.
Un receptor de registros enruta una entrada de registro según estas reglas:
Si la entrada de registro no coincide con el filtro de inclusión, no se enruta. Cuando un receptor no especifica un filtro de inclusión, todas las entrada de registro coinciden con ese filtro.
Si la entrada de registro coincide con el filtro de inclusión y al menos un filtro de exclusión, no se enruta.
Si la entrada de registro coincide con el filtro de inclusión y no coincide con ningún filtro de exclusión, se enruta al destino del receptor.
Los filtros de un receptor de registros se especifican con el lenguaje de consulta de Logging.
No puedes usar filtros de exclusión para reducir el consumo de tu cuota de la API de entries.write
ni la cantidad de llamadas a la API de entries.write
. Los filtros de exclusión se aplican después de que la API de Logging recibe las entradas de registro.
Receptores de registros creados por el sistema
Para cada proyecto, cuenta de facturación, carpeta y organización de Google Cloud , Cloud Logging crea dos receptores de registros, uno llamado _Required
y el otro llamado _Default
. Los filtros de inclusión y exclusión de estos receptores verifican que cada entrada de registro que llega al recurso se enrute a través de uno de estos receptores.
Ambos receptores enrutan los datos de registros a un bucket de registros que se encuentra en el mismo recurso que el receptor de registros.
En el resto de esta sección, se proporciona información sobre los filtros y los destinos de los registros creados por el sistema.
Receptor de registros _Required
El receptor de registros _Required
en un recurso enruta un subconjunto de registros de auditoría al bucket de registros _Required
del recurso.
Este receptor no especifica ningún filtro de exclusión, y el filtro de inclusión es el siguiente:
LOG_ID("cloudaudit.googleapis.com/activity") OR
LOG_ID("externalaudit.googleapis.com/activity") OR
LOG_ID("cloudaudit.googleapis.com/system_event") OR
LOG_ID("externalaudit.googleapis.com/system_event") OR
LOG_ID("cloudaudit.googleapis.com/access_transparency") OR
LOG_ID("externalaudit.googleapis.com/access_transparency")
El receptor de registros _Required
solo coincide con las entradas de registro que se originan en el recurso en el que se define el receptor de registros _Required
. Por ejemplo, supongamos que un receptor de registros enruta una entrada de registro de actividad del proyecto A
al proyecto B
.
Dado que la entrada de registro no se originó en el proyecto B
, el receptor de registros _Required
del proyecto B
no enruta esta entrada de registro al bucket de registros _Required
.
No puedes modificar ni borrar el receptor de registros _Required
.
Receptor de registros _Default
El receptor de registros _Default
en un recurso enruta todas las entradas de registro, excepto las que coinciden con el filtro del receptor de registros _Required
, al bucket de registros _Default
del recurso.
Como el filtro de inclusión de este receptor está vacío, coincide con todas las entradas de registro. Sin embargo, el filtro de exclusión se configura de la siguiente manera:
NOT LOG_ID("cloudaudit.googleapis.com/activity") AND
NOT LOG_ID("externalaudit.googleapis.com/activity") AND
NOT LOG_ID("cloudaudit.googleapis.com/system_event") AND
NOT LOG_ID("externalaudit.googleapis.com/system_event") AND
NOT LOG_ID("cloudaudit.googleapis.com/access_transparency") AND
NOT LOG_ID("externalaudit.googleapis.com/access_transparency")
Puedes modificar y habilitar el receptor de registros _Default
. Por ejemplo, puedes editar el receptor de registro _Default
y cambiar el destino. También puedes modificar cualquier filtro existente y agregar filtros de exclusión.
Destinos del receptor
El destino de un receptor puede estar en un recurso diferente al del receptor. Por ejemplo, puedes usar un receptor de registros para enrutar entradas de registro de un proyecto a un bucket de registros almacenado en otro proyecto.
Se admiten los siguientes destinos:
- Google Cloud proyecto
Selecciona este destino cuando desees que los receptores de registros del proyecto de destino redireccionen tus entradas de registro o cuando hayas creado un receptor agregado interceptor. Los receptores de registros del proyecto que es el destino del receptor pueden redireccionar las entradas de registro a cualquier destino compatible, excepto a un proyecto.
- Bucket de registros
Selecciona este destino cuando quieras almacenar tus datos de registro en recursos administrados por Cloud Logging. Los datos de registro almacenados en buckets de registros se pueden ver y analizar con servicios como el Explorador de registros y el Análisis de registros.
Si deseas unir tus datos de registro con otros datos de la empresa, puedes almacenarlos en un bucket de registros y crear un conjunto de datos de BigQuery vinculado. Un conjunto de datos vinculado es un conjunto de datos de solo lectura que se puede consultar como cualquier otro conjunto de datos de BigQuery.
- Conjunto de datos de BigQuery
- Selecciona este destino cuando desees unir tus datos de registro con otros datos de la empresa. El conjunto de datos que especifiques debe tener habilitada la escritura. No establezcas el destino de un receptor como un conjunto de datos de BigQuery vinculado. Los conjuntos de datos vinculados son de solo lectura.
- Bucket de Cloud Storage
- Selecciona este destino cuando desees almacenar tus datos de registros a largo plazo. El bucket de Cloud Storage puede estar en el mismo proyecto en el que se originan las entradas de registro o en un proyecto diferente. Las entradas de registro se almacenan como archivos JSON.
- Tema de Pub/Sub
- Selecciona este destino cuando quieras exportar tus datos de registro desdeGoogle Cloud y, luego, usar integraciones de terceros, como Splunk o Datadog. Las entradas de registro se formatean en JSON y, luego, se enrutan a un tema de Pub/Sub.
Limitaciones de destino
En esta sección, se describen las limitaciones específicas de cada destino:
- Si enrutas entradas de registro a un bucket de registros en un Google Cloud proyecto diferente, Error Reporting no analizará esas entradas de registro. Para obtener más información, consulta la descripción general de Error Reporting.
- Si enrutas entradas de registro a un conjunto de datos de BigQuery, este debe tener habilitada la escritura. No puedes enrutar entradas de registro a conjuntos de datos vinculados, que son de solo lectura.
- Es posible que los nuevos receptores que enrutan datos de registros a buckets de Cloud Storage tarden varias horas en comenzar a enrutar entradas de registro. Estos receptores se procesan cada hora.
Se aplican las siguientes limitaciones cuando el destino de un receptor de registros es un proyecto Google Cloud :
- Hay un límite de un salto.
- Las entradas de registro que coinciden con el filtro del receptor de registros
_Required
solo se enrutan al bucket de registros_Required
del proyecto de destino cuando se originan en ese proyecto. - Solo los receptores agregados que se encuentran en la jerarquía de recursos de una entrada de registro procesan la entrada de registro.
Por ejemplo, supongamos que el destino de un receptor de registros en el proyecto
A
es el proyectoB
. Entonces, se cumplen las siguientes condiciones:- Debido al límite de un salto, los receptores de registros del proyecto
B
no pueden redireccionar las entradas de registro a un proyecto Google Cloud . - El bucket de registros
_Required
del proyectoB
solo almacena entradas de registro que se originan en el proyectoB
. Este bucket de registros no almacena ninguna entrada de registro que se origine en ningún otro recurso, incluidas las que se originan en el proyectoA
. - Si la jerarquía de recursos del proyecto
A
y el proyectoB
difieren, no se envía a los receptores agregados en la jerarquía de recursos del proyectoB
una entrada de registro que un receptor de registros en el proyectoA
enruta al proyectoB
. - Si el proyecto
A
y el proyectoB
tienen la misma jerarquía de recursos, las entradas de registro se envían a los receptores agregados de esa jerarquía. Si un receptor agregado no intercepta una entrada de registro, el Router de registros la envía a los receptores del proyectoA
.
Cómo afectan las entradas de registro de enrutamiento a las métricas basadas en registros
Las métricas basadas en registros son métricas de Cloud Monitoring que se derivan del contenido de las entradas de registro. Por ejemplo, puedes usar una métrica basada en registros para contar la cantidad de entradas de registro que contienen un mensaje específico o para extraer información sobre la latencia registrada en las entradas de registro. Puedes mostrar métricas basadas en registros en los gráficos de Cloud Monitoring, y las políticas de alertas pueden supervisar estas métricas.
Las métricas basadas en registros definidas por el sistema se aplican a nivel del proyecto. Las métricas basadas en registros definidas por el usuario se pueden aplicar a nivel de proyecto o de bucket de registros. Las métricas basadas en registros con alcance de bucket son útiles cuando usas receptores agregados para enrutar entradas de registro a un bucket de registros y cuando enrutas entradas de registro de un proyecto a un bucket de registros en otro proyecto.
- Métricas basadas en registros definidas por el sistema
-
El enrutador de registros cuenta una entrada de registro cuando se cumplen todas las siguientes condiciones:
- La entrada de registro pasa por los receptores de registros del proyecto en el que se define la métrica basada en registros.
La entrada de registro se almacena en un bucket de registros. El bucket de registros puede estar en cualquier proyecto.
Por ejemplo, supongamos que el proyecto
A
tiene un receptor de registros cuyo destino es el proyectoB
. También supongamos que los receptores de registros del proyectoB
enrutan las entradas de registro a un bucket de registros. En esta situación, las entradas de registro enrutadas desde el proyectoA
al proyectoB
contribuyen a las métricas basadas en registros definidas por el sistema del proyectoA
. Estas entradas de registro también contribuyen a las métricas basadas en registros definidas por el sistema del proyectoB
.
- Métricas basadas en registros definidas por el usuario
-
El enrutador de registros cuenta una entrada de registro cuando se cumplen todas las siguientes condiciones:
- La facturación está habilitada en el proyecto en el que se define la métrica basada en registros.
- En el caso de las métricas de permisos de bucket, la entrada de registro se almacena en el bucket de registros en el que se define la métrica basada en registros.
- En el caso de las métricas con alcance de proyecto, la entrada de registro pasa por los receptores de registros del proyecto en el que se define la métrica basada en registros.
Para obtener más información, consulta Descripción general de las métricas basadas en registros.
Prácticas recomendadas
Para conocer las prácticas recomendadas sobre el uso del enrutamiento para la administración de datos o para casos de uso comunes, consulta los siguientes documentos:
Datos de registros: una guía paso a paso para superar desafíos comunes de cumplimiento
Administración de datos: principios para proteger y administrar los registros
Ejemplos: Centraliza tu almacenamiento de registros
En esta sección, se describe cómo puedes configurar el almacenamiento centralizado. El almacenamiento centralizado proporciona un solo lugar para consultar los datos de registro, lo que simplifica tus consultas cuando buscas tendencias o investigas problemas. Desde el punto de vista de la seguridad, también tienes una ubicación de almacenamiento, lo que puede simplificar las tareas de tus analistas de seguridad.
Si centralizas el almacenamiento de registros, considera si debes colocar una restricción en el proyecto que almacena tus datos de registro. Una retención puede evitar la eliminación accidental de un proyecto. Para obtener más información, consulta Cómo proteger proyectos con retenciones.
Centraliza el almacenamiento de registros para los proyectos de una carpeta
Supongamos que administras una carpeta y deseas centralizar el almacenamiento de tus entradas de registro. Para este caso de uso, puedes hacer lo siguiente:
- En tu carpeta, crea un proyecto llamado
CentralStorage
. - Crea un receptor agregado de interceptación para tu carpeta y configúralo para que enrute todas las entradas de registro. Configuras el destino del receptor para que sea el proyecto llamado
CentralStorage
.
Cuando llega una entrada de registro que se origina en la carpeta o en uno de sus recursos secundarios, esa entrada de registro se envía al receptor agregado de interceptación que creaste. Ese receptor enruta las entradas de registro al proyecto llamado CentralStorage
. Los receptores de registros de este proyecto procesan las entradas de registro de la siguiente manera:
El receptor de registros de
_Default
enruta al bucket de registros de_Default
todas las entradas de registro que coinciden con el filtro del receptor. Este bucket de registros es tu ubicación de almacenamiento centralizada.El receptor de registros
_Required
enruta al bucket de registros_Required
las entradas de registro que coinciden con los filtros del receptor y que se originan en el proyectoCentralStorage
. Este bucket de registros no es una ubicación de almacenamiento centralizada. Sin embargo, puedes almacenar de forma centralizada todos tus datos de registro. Para ver un ejemplo, consulta Almacena registros de auditoría en una ubicación central.
Una vez que se completa el procesamiento del receptor agregado, la entrada de registro se envía al receptor de registros de _Required
en el recurso en el que se originó la entrada de registro. Cuando la entrada de registro coincide con el filtro del receptor de registros _Required
, se enruta al bucket de registros _Required
del recurso. En consecuencia, cada proyecto Google Cloud de tu carpeta almacena entradas de registro en su bucket de registros_Required
.
Centraliza el almacenamiento de registros para un conjunto de proyectos
También puedes almacenar entradas de registro en una sola ubicación cuando no tienes una organización o una carpeta. Por ejemplo, puedes hacer lo siguiente:
- Crea un proyecto llamado
CentralStorage
. - Para cada proyecto, excepto
CentralStorage
, edita el receptor de registros_Default
y configura el destino para que sea el proyecto llamadoCentralStorage
.
Es posible que te preguntes por qué el ejemplo anterior establece que el destino de los receptores de registros de _Default
sea un proyecto, en lugar del bucket de registros de _Default
en ese proyecto. Las razones principales son la simplicidad y la coherencia.
Cuando enrutas entradas de registro a un proyecto, los receptores de registros del proyecto de destino controlan qué entradas de registro se almacenan y dónde se almacenan.
Es decir, centralizas la funcionalidad de filtro y destino. Si quieres cambiar qué entradas de registro se almacenan o dónde se almacenan, solo debes modificar los receptores de registros en un proyecto.
Centraliza el almacenamiento de registros de auditoría
Puedes almacenar de forma centralizada las entradas de registro que coinciden con el receptor de registros _Required
. Si deseas almacenar estas entradas de registro de forma centralizada, haz una de las siguientes acciones:
Crea receptores de registros que enruten las entradas de registro que coincidan con el receptor de registros
_Required
a un bucket de registros centralizado.Configura los receptores de registros como en los dos ejemplos anteriores y, luego, agrega un receptor de registros en el proyecto de destino que enrute las entradas de registro que coincidan con el receptor de registros
_Required
a un bucket de registros. También puedes editar los filtros en el receptor de registros_Default
.
Antes de implementar una estrategia de este tipo, revisa los lineamientos de precios.
Precios
Para obtener información sobre los precios de Cloud Logging, consulta los precios de Google Cloud Observability.
¿Qué sigue?
Para ayudarte a enrutar y almacenar datos de Cloud Logging, consulta los siguientes documentos:
Para crear receptores que enruten entradas de registro a destinos compatibles, consulta Enruta registros a destinos compatibles.
Para obtener información sobre cómo crear receptores agregados que puedan enrutar entradas de registro desde los recursos de carpetas u organizaciones, consulta la Descripción general de los receptores agregados.
Para obtener más información sobre el formato de las entradas de registros redireccionados y sobre cómo se organizan los registros en los destinos, consulta los siguientes documentos: