Receptores agregados

Puedes crear un receptor agregado que pueda exportar entradas de registro de todos los proyectos, las carpetas y las cuentas de facturación de una organización de Google Cloud. Por ejemplo, puedes agregar y exportar las entradas de registros de auditoría de los proyectos de una organización a una ubicación central.

Concepto

Sin la función de receptor agregado, los receptores se limitan a exportar entradas de registro desde el recurso exacto en el que se creó el receptor, como un proyecto, una organización, una carpeta o una cuenta de facturación de Google Cloud.

Para usar la función de receptor agregado, crea un receptor en una organización o una carpeta de Google Cloud y establece el parámetro includeChildren del receptor en True. Ese receptor puede exportar entradas de registro de la organización o carpeta, así como desde cualquier carpeta, cuenta de facturación o proyecto (de forma recurrente). Puedes usar el filtro del receptor para especificar entradas de registro de proyectos, tipos de recursos o registros con nombre.

Para obtener información sobre los receptores y cómo crearlos, ve a Exporta registros en la API y Usa la herramienta de línea de comandos para crear receptores.

Crea el destino de exportación

El destino de los receptores de registros debe crearse antes que el receptor mediante la herramienta de línea de comandos de gcloud, Cloud Console o las API de Google Cloud.

Estos son los destinos admitidos para los receptores:

El destino se puede crear en cualquier proyecto de Google Cloud, en cualquier organización, si la cuenta de servicio del receptor de registros tiene permisos para escribir en el destino.

Crea un receptor agregado

Para crear un receptor agregado en organizaciones, carpetas o cuentas de facturación de Google Cloud, puedes usar la API de Cloud Logging o la herramienta de línea de comandos de gcloud.

API de Logging

Para crear un receptor de registros, usa organizations.sinks.create, folders.sinks.create o billingAccounts.sinks.create en la API de Logging. Prepara los argumentos del método de la siguiente manera:

  1. Establece el parámetro parent para que sea la organización, la carpeta o la cuenta de facturación de Google Cloud en la que deseas crear el receptor. El superior debe ser uno de los siguientes:

    • organizations/[ORGANIZATION_ID]
    • folders/[FOLDER_ID]
    • billingAccounts/[BILLING_ACCOUNT_ID]
  2. Haz lo siguiente en el objeto LogSink en el cuerpo de la solicitud del método:

    • Configura includeChildren en True.

    • Establece la propiedad query y ten en cuenta que las entradas de registros de todos tus proyectos se compararán con la consulta.

      Para ver algunos ejemplos de consultas útiles, ve a Usa consultas con receptores agregados.

    • Establece los campos LogSink restantes como lo harías para cualquier otro receptor. A fin de obtener más información, consulta Crea receptores.

  3. Llama a organizations.sinks.create o folders.sinks.create para crear el receptor.

  4. Recupera el nombre de la cuenta de servicio usado para crear el receptor de la respuesta de la API.

  5. Otorga permiso a esa cuenta de servicio para escribir en el destino del receptor.

    Si no tienes permiso para realizar ese cambio en el destino del receptor, envía el nombre de la cuenta de servicio a alguien que pueda realizarlo por ti.

    A fin de obtener más información sobre cómo otorgar permisos de cuentas de servicio para recursos, consulta Otorga funciones a cuentas de servicio.

gcloud

Para crear un receptor de registros, usa el comando logging sinks create.

  1. Proporcione el nombre del receptor, el destino del receptor, la consulta de registros y el ID de la carpeta, la cuenta de facturación o la organización.

    Por ejemplo, configura un receptor agregado a nivel de la carpeta de la siguiente manera:

    gcloud logging sinks create [SINK_NAME] \
    storage.googleapis.com/[BUCKET_NAME] --include-children \
    --folder=[FOLDER_ID] --log-filter="logName:activity"

    Notas:

    • Para crear un receptor a nivel de la organización, reemplaza --folder=[FOLDER_ID] por --organization=[ORGANIZATION_ID]. Para una cuenta de facturación, reemplázalo por --billing-account=[BILLING_ACCOUNT_ID].

    • Para que el receptor incluya todos los proyectos dentro de la organización, se debe establecer la marca --include-children, incluso cuando la marca --organizationse pasa a create. Cuando se establece como false (la opción predeterminada), un receptor solo exporta los registros del recurso de host.

    • Para que el superior cree el receptor, necesitas la función de IAM de escritor de configuración de registros. Para obtener más información sobre las funciones de IAM de Logging, consulta la Guía de control de acceso.

    • Para ver algunos ejemplos de consultas útiles, ve a Usa consultas con receptores agregados.

  2. Recupera el nombre de la cuenta de servicio usado para crear el receptor del resultado del comando.

  3. Otorga permiso a esa cuenta de servicio para escribir en el destino del receptor.

    Si no tienes permiso para realizar ese cambio en el destino del receptor, envía el nombre de la cuenta de servicio a alguien que pueda realizarlo por ti.

    A fin de obtener más información sobre cómo otorgar permisos de cuentas de servicio para recursos, consulta Otorga funciones a cuentas de servicio.

Usa filtros con receptores agregados

Como cualquier receptor, el receptor agregado contiene un filtro que selecciona entradas de registro individuales. Para obtener más detalles sobre los filtros, ve al lenguaje de consultas de Logging.

A continuación, presentamos algunos ejemplos de comparaciones de filtros que son útiles cuando se usa la función de receptores agregados. Algunos ejemplos usan la siguiente notación:

  • : es el operador de la substring. No sustituyas el operador =.
  • ... representa las comparaciones de consultas adicionales.
  • Las variables se indican con corchetes ([]). Reemplázalas por valores válidos.

Elige la fuente de exportación

Para exportar registros de organizaciones, proyectos o carpetas específicas, usa una de las siguientes comparaciones de ejemplo:

logName:"projects/[PROJECT_ID]/logs/" AND ... 
logName:("projects/[PROJECT_A_ID]/logs/" OR "projects/[PROJECT_B_ID]/logs/") AND ... 
logName:"folders/[FOLDER_ID]/logs/" AND ... 
logName:"organizations/[ORGANIZATION_ID]/logs/" AND ... 

Elige recursos

Para exportar registros de organizaciones, proyectos o carpetas específicas, usa múltiples comparaciones con el fin de especificar el recurso de manera exacta:

logName:"projects/[PROJECT_ID]/logs" AND
resource.type=[RESOURCE_TYPE] AND
resource.labels.instance_id=[INSTANCE_ID]

Para obtener una lista de los tipos de recursos, ve a la página sobre tipos de recursos supervisados.

Muestreo de entradas de registro

Para exportar una muestra aleatoria de entradas de registro, agrega la función integrada sample. Por ejemplo, para exportar solo el 10% de las entradas de registro que coinciden con tu consulta actual, usa esta adición:

sample(insertId, 0.10) AND ...

Para obtener más información, revisa la función sample.

Para obtener más información sobre las consultas de Cloud Logging, ve a Lenguaje de consultas de Logging.

Precios

Los registros exportados no generan gastos de Cloud Logging, pero es posible que se apliquen cargos de destino. Para obtener más información, revisa la página de precios del producto correspondiente: