Enrutar entradas de registro

En este documento se explica cómo enruta Cloud Logging las entradas de registro que recibe Google Cloud. Hay varios tipos de destinos de ruta. Por ejemplo, puedes enrutar entradas de registro a un destino como un segmento de registro, que almacena entradas de registro. Si quieres 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 grandes rasgos, así es como Cloud Logging enruta y almacena las entradas de registro:

Ilustración que muestra cómo enruta Cloud Logging las entradas de registro.

Acerca de los routers de registros

Cada Google Cloud proyecto, cuenta de facturación, carpeta y organización tiene un enrutador de registros, que gestiona el flujo de entradas de registro a través de los receptores a nivel de recurso. El router de registros también gestiona el flujo de una entrada de registro a través de los sumideros 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.

Log Router almacena una entrada de registro de forma temporal. Este comportamiento protege frente a las interrupciones y los cortes temporales que pueden producirse 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 diferente del almacenamiento a largo plazo que ofrecen los segmentos de Logging.

Las entradas de registro entrantes con marcas de tiempo que superen el periodo de conservación de los registros en el pasado o que sean posteriores a las próximas 24 horas se descartan.

Acerca de los sumideros de registros

Cuando un sumidero 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 sumidero de registros. Cuando se enruta la entrada de registro, el sumidero de registros la envía al destino especificado por el sumidero de registros. El 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 registro. Cuando un recurso recibe una entrada de registro, cada receptor de registro de ese recurso evalúa la entrada de registro de forma independiente. Por lo tanto, varios receptores de registro pueden enrutar la misma entrada de registro.

De forma predeterminada, los datos de registro se almacenan en el proyecto en el que se originan. Sin embargo, hay varios motivos por los que puede que quieras cambiar esta configuración:

  • Para centralizar el almacenamiento de los datos de registro.
  • Para combinar tus datos de registro con otros datos empresariales.
  • Para organizar los datos de registro de forma que te resulten útiles.
  • Para transmitir tus registros a otras aplicaciones, otros repositorios o terceros. Por ejemplo, puede que quiera exportar sus 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 dirija a Pub/Sub.

Un sumidero de registros mal configurado no enruta las entradas de registro. Cuando un receptor está mal configurado, se escriben entradas de registro que informan de los detalles del error. Además, se envía un correo a los contactos esenciales del recurso. Para obtener más información, consulta Solucionar problemas: ver errores.

Los receptores de registro no pueden enrutar entradas de registro de forma retroactiva. Es decir, un receptor de registro no puede enrutar una entrada de registro que se haya recibido antes de que se creara el receptor. Del mismo modo, si un sumidero está mal configurado, solo enrutará las entradas de registro que lleguen después de que se haya resuelto el error de configuración. Sin embargo, puedes copiar de forma retroactiva los datos de registro de un segmento de registro a Cloud Storage. Para obtener más información, consulta Copiar registros.

Compatibilidad con organizaciones y carpetas

Para ayudarte a gestionar los datos de registro de una organización o una carpeta, puedes hacer lo siguiente:

  • Puedes crear receptores agregados, que dirigen las entradas de registro de una organización o una carpeta y sus elementos secundarios al destino especificado por el receptor. Hay dos tipos de receptores agregados:

    • Sumideros agregados no interceptores
    • Interceptar sumideros agregados

    La diferencia entre estos dos tipos de receptor es que los receptores de intercepción de un nivel de la jerarquía de recursos pueden afectar al enrutamiento de los recursos de niveles inferiores de la jerarquía. Los receptores que no interceptan no afectan al enrutamiento de otros recursos. Cuando un receptor interceptor de un recurso coincide con una entrada de registro, la entrada de registro no se envía a los receptores de los recursos secundarios, con la excepción de que la entrada de registro siempre se envía al receptor de registro _Required del recurso en el que se origina la entrada de registro.

  • Puedes configurar los ajustes de recursos predeterminados para especificar la configuración del receptor _Default creado por el sistema para los recursos nuevos de una organización o una carpeta. Por ejemplo, puedes usar estos ajustes para inhabilitar el receptor _Default o especificar los filtros de ese receptor.

Ejemplos de enrutamiento

En esta sección se muestra cómo puede fluir una entrada de registro que se origina en un proyecto a través de los receptores de su jerarquía de recursos.

Ejemplo: No hay sumideros agregados

Si no hay receptores agregados en la jerarquía de recursos de la entrada de registro, esta se envía a los receptores de registro del proyecto en el que se origina. Un sumidero a nivel de proyecto enruta la entrada de registro al destino del sumidero cuando la entrada de registro coincide con el filtro de inclusión del sumidero, pero no coincide con ninguno de los filtros de exclusión del sumidero.

Ejemplo: Existe un receptor agregado que no intercepta

Supongamos que existe un sumidero agregado que no intercepta en la jerarquía de recursos de una entrada de registro. Después de que el enrutador de registros envíe la entrada de registro al receptor agregado que no intercepta, ocurre lo siguiente:

  1. El sumidero agregado no interceptor dirige la entrada de registro al destino del sumidero cuando la entrada de registro coincide con el filtro de inclusión, pero no con ningún filtro de exclusión.

  2. El enrutador de registros envía la entrada de registro a los sumideros de registros del proyecto en el que se ha originado la entrada de registro.

    Un sumidero a nivel de proyecto enruta la entrada de registro al destino del sumidero cuando la entrada de registro coincide con el filtro de inclusión del sumidero, pero no coincide con ninguno de los filtros de exclusión del sumidero.

Ejemplo: existe un receptor agregado interceptor

Supongamos que existe un sumidero agregado de intercepción en la jerarquía de recursos de una entrada de registro. Después de que el enrutador de registros envíe la entrada de registro al receptor agregado interceptor, ocurre 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:

    1. La entrada de registro se enruta al destino del sumidero agregado interceptor.
    2. La entrada de registro se envía al receptor _Required del proyecto en el que se ha originado.
  • La entrada de registro no coincide con el filtro de inclusión o coincide con al menos un filtro de exclusión:

    1. La entrada de registro no se enruta mediante el receptor agregado interceptor.
    2. El enrutador de registros envía la entrada de registro a los sumideros de registros del proyecto en el que se ha originado la entrada de registro.

      Un sumidero a nivel de proyecto enruta la entrada de registro al destino del sumidero cuando la entrada de registro coincide con el filtro de inclusión del sumidero, pero no coincide con ninguno de los filtros de exclusión del sumidero.

Filtros de sumideros de registro

Cada sumidero de registros contiene un filtro de inclusión y puede contener varios filtros de exclusión. Estos filtros determinan si el sumidero de registros enruta una entrada de registro al destino del sumidero. Si no especifica ningún filtro, todas las entradas de registro se dirigirán al destino del sumidero.

Una entrada de registro se enruta mediante un receptor de registros en función de estas reglas:

  • Si la entrada de registro no coincide con el filtro de inclusión, no se enruta. Si un sumidero no especifica un filtro de inclusión, todas las entradas de registro coinciden con ese filtro.

  • Si la entrada de registro coincide con el filtro de inclusión y con 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 dirige al destino del sumidero.

Los filtros de un receptor de registro se especifican mediante el lenguaje de consultas de registro.

No puedes usar filtros de exclusión para reducir el consumo de tu cuota de la API entries.write ni el número de llamadas a la API entries.write. Los filtros de exclusión se aplican después de que la API de Logging reciba las entradas de registro.

Sumideros de registro creados por el sistema

Por cada Google Cloud proyecto, cuenta de facturación, carpeta y organización, Cloud Logging crea dos receptores de registros: uno llamado _Required y otro llamado _Default. Los filtros de inclusión y exclusión de estos sumideros verifican que cada entrada de registro que llega al recurso se enruta a través de uno de estos sumideros. Ambos receptores enrutan los datos de registro a un segmento de registro que se encuentra en el mismo recurso que el receptor de registro.

En el resto de esta sección se proporciona información sobre los filtros y los destinos de los receptores de registro creados por el sistema.

Sumidero de registros de _Required

El _Requiredreceptor de registro de un recurso dirige un subconjunto de registros de auditoría al contenedor de registro del recurso _Required. 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 sumidero de registros _Required solo coincide con las entradas de registro que proceden del recurso en el que se define el sumidero de registros _Required. Por ejemplo, supongamos que un receptor de registro dirige una entrada de registro de actividad del proyecto A al proyecto B. Como la entrada de registro no se ha originado en el proyecto B, el receptor de registro _Required del proyecto B no enruta esta entrada de registro al segmento de registro _Required.

No puedes modificar ni eliminar el sumidero de registro _Required.

Sumidero de registros de _Default

El sumidero de registros _Default de un recurso dirige todas las entradas de registro, excepto las que coinciden con el filtro del sumidero de registros _Required, al cubo de registros _Default del recurso. Como el filtro de inclusión de este sumidero 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 e inhabilitar el sumidero de registro _Default. Por ejemplo, puedes editar el receptor de registro _Default y cambiar el destino. También puede modificar cualquier filtro y añadir filtros de exclusión.

Destinos del sumidero

El destino de un receptor puede estar en un recurso distinto al del receptor. Por ejemplo, puedes usar un sumidero de registros para enrutar entradas de registro de un proyecto a un segmento de registros almacenado en otro proyecto.

Se admiten los siguientes destinos:

Google Cloud proyecto

Selecciona este destino si quieres que los sumideros de registros del proyecto de destino redirijan tus entradas de registro o si has creado un sumidero agregado interceptor. Los sumideros de registro del proyecto que es el destino del sumidero pueden redirigir las entradas de registro a cualquier destino admitido, excepto a un proyecto.

Segmento de registros

Selecciona este destino si quieres almacenar los datos de registro en recursos gestionados por Cloud Logging. Los datos de registro almacenados en segmentos de registro se pueden ver y analizar mediante servicios como el Explorador de registros y Analíticas de registros.

Si quieres combinar tus datos de registro con otros datos empresariales, puedes almacenar tus datos de registro en un segmento de registro 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 si quieres combinar tus datos de registro con otros datos empresariales. El conjunto de datos que especifiques debe tener habilitada la escritura. No configure el destino de un sink como un conjunto de datos de BigQuery vinculado. Los conjuntos de datos vinculados son de solo lectura.
Segmento de Cloud Storage
Selecciona este destino si quieres almacenar tus datos de registro a largo plazo. El segmento de Cloud Storage puede estar en el mismo proyecto en el que se originan las entradas de registro o en otro proyecto. Las entradas de registro se almacenan como archivos JSON.
Tema Pub/Sub
Selecciona este destino si quieres exportar tus datos de registro desde Google Cloud y, a continuación, usar integraciones de terceros como Splunk o Datadog. Las entradas de registro se formatean en JSON y, a continuación, se dirigen a un tema de Pub/Sub.

Limitaciones de los destinos

En esta sección se describen las limitaciones específicas de cada destino:

  • Si enruta las entradas de registro a un contenedor de registro de otro Google Cloud proyecto, Error Reporting no analizará esas entradas de registro. Para obtener más información, consulta la descripción general de los informes de errores.
  • Si enruta 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.
  • Los nuevos receptores que dirigen los datos de registro a segmentos de Cloud Storage pueden tardar varias horas en empezar a enrutar las entradas de registro. Estos receptores se procesan cada hora.
  • Se aplican las siguientes limitaciones cuando el destino de un receptor de registro es un proyecto de Google Cloud :

    • Hay un límite de un salto.
    • Las entradas de registro que coinciden con el filtro del _Requiredsumidero de registros solo se enrutan al _Requiredsegmento de registros del proyecto de destino cuando proceden de él.
    • 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 registro del proyecto A es el proyecto B. Entonces, se cumplen las siguientes condiciones:

    • Debido al límite de un salto, los receptores de registro del proyecto B no pueden redirigir las entradas de registro a un proyecto Google Cloud .
    • El segmento de registros _Required del proyecto B solo almacena entradas de registro que proceden del proyecto B. Este segmento de registro no almacena ninguna entrada de registro que proceda de ningún otro recurso, incluidas las que proceden del proyecto A.
    • Si la jerarquía de recursos del proyecto A y del proyecto B son diferentes, una entrada de registro que un receptor de registro del proyecto A enruta al proyecto B no se envía a los receptores agregados de la jerarquía de recursos del proyecto B.
    • Si el proyecto A y el proyecto B tienen la misma jerarquía de recursos, las entradas de registro se envían a los receptores agregados de esa jerarquía. Si una entrada de registro no se intercepta mediante un receptor agregado, el enrutador de registros envía la entrada de registro a los receptores del proyecto A.

Cómo afecta el enrutamiento de entradas de registro 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, puede usar una métrica basada en registros para contar el número de entradas de registro que contienen un mensaje concreto o para extraer información sobre la latencia registrada en las entradas de registro. Puedes mostrar métricas basadas en registros en gráficos de Cloud Monitoring y las políticas de alertas pueden monitorizar estas métricas.

Las métricas basadas en registros definidas por el sistema se aplican a nivel de proyecto. Las métricas basadas en registros definidas por el usuario se pueden aplicar a nivel de proyecto o de segmento de registro. Las métricas basadas en registros con ámbito de segmento son útiles cuando usas sumideros agregados para enrutar entradas de registro a un segmento de registro y cuando enrutas entradas de registro de un proyecto a un segmento de registro de 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 condiciones siguientes:
  • La entrada de registro pasa por los sumideros de registro del proyecto en el que se define la métrica basada en registros.
  • La entrada de registro se almacena en un segmento de registros. El segmento de registros puede estar en cualquier proyecto.

    Por ejemplo, supongamos que el proyecto A tiene un receptor de registro cuyo destino es el proyecto B. Supongamos también que los sumideros de registros del proyecto B enrutan las entradas de registro a un segmento de registros. En este caso, las entradas de registro enrutadas del proyecto A al proyecto B contribuyen a las métricas basadas en registros definidas por el sistema del proyecto A. Estas entradas de registro también contribuyen a las métricas basadas en registros definidas por el sistema del proyecto B.

Métricas basadas en registros definidas por el usuario
El enrutador de registros cuenta una entrada de registro cuando se cumplen todas las condiciones siguientes:
  • 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 ámbito de segmento, la entrada de registro se almacena en el segmento de registros en el que se define la métrica basada en registros.
  • En el caso de las métricas de ámbito de proyecto, la entrada de registro pasa por los sumideros de registro del proyecto en el que se define la métrica basada en registros.

Para obtener más información, consulta el artículo Información general sobre las métricas basadas en registros.

Prácticas recomendadas

Para consultar las prácticas recomendadas sobre el uso del enrutamiento para el gobierno de datos o para casos prácticos habituales, consulta los siguientes documentos:

Ejemplos: centralizar el almacenamiento de registros

En esta sección se describe cómo puedes configurar el almacenamiento centralizado. El almacenamiento centralizado proporciona un único lugar para consultar datos de registro, lo que simplifica las 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 centraliza el almacenamiento de registros, plantéese si quiere poner un embargo en el proyecto que almacena sus datos de registro. Una retención puede evitar que se elimine un proyecto por error. Para obtener más información, consulte Proteger proyectos mediante retenciones.

Centralizar el almacenamiento de registros de proyectos en una carpeta

Supongamos que gestionas una carpeta y quieres centralizar el almacenamiento de tus entradas de registro. En este caso práctico, puedes hacer lo siguiente:

  1. En tu carpeta, crea un proyecto llamado CentralStorage.
  2. Crea un sumidero agregado interceptor para tu carpeta y configúralo para que enrute todas las entradas de registro. Has definido el destino del receptor como el proyecto CentralStorage.

Cuando llega una entrada de registro que procede de la carpeta o de uno de sus recursos secundarios, se envía al receptor agregado de intercepción que has creado. Este receptor dirige las entradas de registro al proyecto CentralStorage. Los sumideros de registros de este proyecto procesan las entradas de registro:

  • El _Defaultsumidero de registros envía al _Default contenedor de registros todas las entradas de registro que coincidan con el filtro del sumidero. Este segmento de registro es tu ubicación de almacenamiento centralizada.

  • El _Requiredsumidero de registros envía a un _Requiredcubo de registros las entradas de registro que coinciden con los filtros del sumidero y que proceden del proyecto CentralStorage. Este segmento de registro 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 Almacenar registros de auditoría en una ubicación centralizada.

Una vez completado el procesamiento del sumidero agregado, la entrada de registro se envía al _Required sumidero de registros del recurso en el que se originó la entrada de registro. Cuando la entrada de registro coincide con el filtro del sumidero de registros _Required, se dirige al segmento de registros _Required del recurso. Por lo tanto, cada proyecto de Google Cloud de tu carpeta almacena entradas de registro en su segmento de registros _Required.

Centralizar el almacenamiento de registros de un conjunto de proyectos

También puedes almacenar entradas de registro en una sola ubicación cuando no tengas una organización o una carpeta. Por ejemplo, puedes hacer lo siguiente:

  1. Crea un proyecto llamado CentralStorage.
  2. En todos los proyectos, excepto en CentralStorage, edita el sumidero de registro _Default y define como destino el proyecto llamado CentralStorage.

Puede que te preguntes por qué en el ejemplo anterior se define el destino de los _Defaultreceptores de registro_Default como un proyecto, en lugar de como el _Defaultcubo de registro_Default de ese proyecto. Los motivos principales son la sencillez y la coherencia. Cuando enrutas entradas de registro a un proyecto, los receptores de registro del proyecto de destino controlan qué entradas de registro se almacenan y dónde se almacenan. Es decir, centralizas las funciones de filtro y de destino. Si quiere cambiar las entradas de registro que se almacenan o dónde se almacenan, solo tiene que modificar los receptores de registro de un proyecto.

Centralizar el almacenamiento de registros de auditoría

Puedes almacenar de forma centralizada las entradas de registro que coincidan con el sumidero de registros _Required. Si quieres almacenar estas entradas de registro de forma centralizada, haz una de las siguientes acciones:

  • Crea sumideros de registros que enruten las entradas de registro que coincidan con el sumidero de registros _Required a un segmento de registros centralizado.

  • Configura los sumideros de registro como en los dos ejemplos anteriores y, a continuación, añade un sumidero de registro en el proyecto de destino que enrute las entradas de registro que coincidan con el sumidero de registro _Required a un segmento de registro. También puedes editar los filtros en el receptor de registro _Default.

Antes de implementar una estrategia de este tipo, consulta las directrices de precios.

Precios

Para obtener información sobre los precios de Cloud Logging, consulta la página Precios de Google Cloud Observability.

Siguientes pasos

Para obtener ayuda sobre cómo enrutar y almacenar datos de Cloud Logging, consulta los siguientes documentos: