Administra las políticas de agentes

Las políticas de agentes permiten la instalación y el mantenimiento automáticos de los agentes de Google Cloud Observability en una flota de VMs de Compute Engine que coinciden con los criterios especificados por el usuario. Con un solo comando, puedes crear una política para un proyecto de Google Cloud que regula las VMs existentes y las nuevas asociadas al proyecto de Google Cloud, lo que garantiza una instalación adecuada y actualización automática opcional de todos los agentes de Google Cloud Observability en esas VMs.

Para crear y administrar políticas de agente, debes usar el comando gcloud beta compute instances ops-agents policies en Google Cloud CLI. Los comandos de este grupo usan el paquete de herramientas del VM Manager en Compute Engine para administrar laspolíticas del SO que puede automatizar la implementación y el mantenimiento de la configuración del software como los agentes de Google Cloud Observability: el agente de operaciones, el agente de Monitoring heredado y el agente de Logging heredado.

Sistemas operativos compatibles

Puedes aplicar una política de agentes a las Instancias de VM de Compute Engine que ejecutan los sistemas operativos que se muestran en la siguiente tabla. En la tabla, las columnas de agente se asignan a agent type especificado a la Invocación de gcloud beta compute instances ops-agents policies create:

  • El agente de Logging se asigna a políticas con el tipo de agente logging.
  • El agente de Monitoring se asigna a políticas con el tipo de agente metrics.
  • El agente de operaciones se asigna a las políticas con el tipo de agente ops-agent.

Sistema operativo Agente de Logging Agente de Monitoring Agente de operaciones
CentOS 7
CentOS 8
Rocky Linux 8
RHEL 6
RHEL 7:
rhel-7, rhel-7-6-sap-ha, rhel-7-7-sap-ha, rhel-7-9-sap-ha
1
RHEL 8:
rhel-8, rhel-8-4-sap-ha, rhel-8-6-sap-ha, rhel-8-8-sap-ha
1
Debian 9 (Stretch)
Debian 10 (Buster)
Debian 11 (Bullseye)
Deep Learning VM Images basadas en Debian 11 (Bullseye)
Ubuntu 18.04 LTS (Bionic Beaver):
ubuntu-1804-lts, ubuntu-minimal-1804-lts
Ubuntu 20.04 LTS (Focal Fossa):
ubuntu-2004-lts, ubuntu-minimal-2004-lts
Ubuntu LTS 22.04 (Jammy Jellyfish):
ubuntu-2204-lts, ubuntu-minimal-2204-lts
SLES 12:
sles-12, sles-12-sp5-sap
SLES 15:
sles-15, sles-15-sp2-sap, sles-15-sp3-sap, sles-15-sp4-sap, sles-15-sp5-sap
OpenSUSE Leap 15:
opensuse-leap (opensuse-leap-15-3-*,
opensuse-leap-15-4-*)
Windows Server:
2016, 2019, 2022, Core 2016, Core 2019, Core 2022
1 El agente de Monitoring no es compatible con rhel-7-9-sap-ha, rhel-8-2-sap-ha o rhel-8-4-sap-ha.

Crear una política de agente

Para crear una política de agentes mediante Google Cloud CLI, completa los siguientes pasos:

  1. Si aún no lo hiciste, instala la Google Cloud CLI.

    En este documento, se describe el grupo de comandos beta para administrar las políticas de agentes.

  2. Si aún no lo hiciste, instala el componente beta de gcloud CLI:

    gcloud components install beta
    

    A fin de verificar si tienes el componente beta para la instalación, ejecuta este comando:

    gcloud components list
    

    Si ya instalaste el componente beta, asegúrate de tener la última versión:

    gcloud components update
    
  3. Usa la siguiente secuencia de comandos para de habilitar las API y establecer los permisos adecuados a fin de usar Google Cloud CLI: set-permissions.sh.

    Para obtener información sobre la secuencia de comandos, consulta ¿Qué hace la secuencia de comandos set-permissions.sh?.

  4. Usa el comando gcloud beta compute instances ops-agents policies create para crear una política. Para conocer la sintaxis del comando, consulta la documentación create gcloud beta compute instances ops-agents policies.

    Para ver ejemplos que muestren cómo dar formato al comando, consulta la sección de Ejemplos en la documentación de Google Cloud CLI.

    Para obtener más información sobre los demás comandos del grupo de comandos y las opciones disponibles, consulta la documentación gcloud beta compute instances ops-agents policies.

Prácticas recomendadas para el uso de políticas de agentes

Para controlar el impacto en los sistemas de producción durante el lanzamiento, te recomendamos que uses las etiquetas y zonas de instancia para filtrar las instancias a las que se aplica la política.

Si creas una política para el Agente de operaciones, asegúrate de que tus VMs no tengan el agente de Logging heredado ni el agente de Monitoring instalados. Ejecutar el Agente de operaciones y los agentes heredados en la misma VM puede causar la transferencia de registros duplicados o un conflicto en la transferencia de métricas. Si es necesario, desinstala el agente de Monitoring y desinstala el agente de Logging antes de crear una política para instalar el Agente de operaciones.

Este es un ejemplo de un plan de lanzamiento por fases para VMs CentOS 7 en un proyecto llamado my_project:

Fase 1: Crea una política llamada ops-agents-policy-safe-rollout para instalar el agente de operaciones en todas las VMs con las etiquetas env=test y app=myproduct.

gcloud beta compute instances \
    ops-agents policies create ops-agents-policy-safe-rollout \
    --agent-rules="type=ops-agent,version=current-major,package-state=installed,enable-autoupgrade=true" \
    --os-types=short-name=centos,version=7 \
    --group-labels=env=test,app=myproduct \
    --project=my_project

Para obtener más información sobre cómo especificar el sistema operativo, consulta gcloud beta compute instances ops-agents policiescreate.

Fase 2: Actualiza esa política para orientarla a las VMs ubicadas en una sola zona que tengan las etiquetas env=prod y app=myproduct.

gcloud beta compute instances \
    ops-agents policies update ops-agents-policy-safe-rollout \
    --group-labels=env=prod,app=myproduct \
    --zones=us-central1-c \

Fase 3: Actualiza esa política para borrar el filtro de zonas a fin de que se lance de forma global.

gcloud beta compute instances \
    ops-agents policies update ops-agents-policy-safe-rollout \
    --clear-zones

Limitaciones

Para que una política se implemente en las VMs que anterioren la configuración del SO, se necesita una configuración adicional a fin de garantizar que el agente de configuración del SO en el que se basa la política esté instalado en las VMs. Para instalar el agente de configuración del SO en una flota de VMs, completa los siguientes pasos:

  1. Asegúrate de ejecutar la secuencia de comandos set-permissions.sh en la sección Crea una política de agentes.

  2. Identifica las VMs en las que deseas instalar el agente de configuración del SO y enlistarlos en un archivo CSV. Por ejemplo, para obtener una lista de las VMs que no están administradas por Google Kubernetes Engine, App Engine u otros servicios de Google Cloud y, luego, guardarlos en un archivo llamado instances.csv, ejecuta el siguiente comando:

      gcloud compute instances list \
          --filter="-labels.list(show="keys"):goog-" \
          --format="csv(name,zone)" \
          | grep -v -x -F -f  <(gcloud compute instances os-inventory list-instances \
              --format="csv(name,zone)") \
          | sed 's/$/,update/' > instances.csv
    

    En la sección grep, se filtran las VMs que ya tienen instalado y habilitado el agente de configuración del SO. La exclusión de etiqueta de VM basada goog- filtra las VMs de Compute Engine que administra GKE, App Engine y otros servicios.

    Para filtrar aún más las instancias por zonas o etiquetas, cambia el valor de la marca --filter de manera similar a lo siguiente:

      "-labels.list(show="keys"):goog- AND zone:(ZONE_1,ZONE_2) AND labels.KEY_1:VALUE_1 AND labels.KEY_2=VALUE_2"
    
  3. Para instalar el agente de configuración del SO en las VMs de Linux, descarga y ejecuta la secuencia de comandos mass-install-osconfig-agent.sh.

    El siguiente comando instala el agente de configuración del SO en las VMs especificadas en el archivo instances.csv del proyecto especificado:

       bash mass-install-osconfig-agent.sh --project PROJECT_ID --input-file instances.csv
    

    Para obtener más información sobre el uso de la secuencia de comandos, consulta los comentarios en la secuencia de comandos.

Soluciona problemas

Los comandos ops-agents policy fallan

Cuando un comando gcloud beta compute instances ops-agents policies falla, la respuesta muestra un error de validación. Resuelve esos errores mediante la corrección de las marcas y los argumentos del comando como lo sugiere el mensaje de error.

Además de los errores de validación, es posible que veas los siguientes errores:

  • Permiso de IAM insuficiente

    Un error de muestra se parece al siguiente ejemplo:

    ERROR: (gcloud.beta.compute.instances.ops-agents.policies.command) PERMISSION_DENIED: Caller does not have required permission to command
    

    Asegúrate de ejecutar la secuencia de comandos set-permissions.sh en la sección Crea una política de agentes a fin de configurar el rol de IAM específico de osconfig.guestPolicy.

    A fin de verificar si tienes habilitada la función suficiente de política de invitados de configuración del SO para el proyecto, puedes ejecutar el siguiente comando. En este ejemplo, el comando verifica si el usuario tiene la función roles/osconfig.guestPolicyAdmin. El valor GCLOUD_MEMBER debe tener el formato de user:USER_EMAIL o serviceaccount:SERVICE_ACCOUNT_EMAIL.

    gcloud projects get-iam-policy PROJECT_ID \
        --filter=--member=GCLOUD_MEMBER \
        | grep "roles/osconfig.guestPolicyAdmin" -B 2
    

    El resultado esperado es el siguiente:

    - members:
      - GCLOUD_MEMBER
      role: roles/osconfig.guestPolicyAdmin
    
  • La API de configuración del SO no está habilitada

    Un error de muestra se parece al siguiente ejemplo:

    API [osconfig.googleapis.com] not enabled on project PROJECT_ID.
    Would you like to enable and retry (this will take a few minutes)?
    (y/N)?
    

    Asegúrate de ejecutar la secuencia de comandos set-permissions.sh en la sección Crea una política de agentes para otorgar todos los permisos necesarios.

    A fin de verificar si se habilitó la API de configuración del SO para el proyecto, puedes ejecutar los siguientes comandos:

    gcloud services list --project PROJECT_ID \
        | grep osconfig.googleapis.com
    

    El resultado esperado es el siguiente:

    osconfig.googleapis.com    Cloud OS Config API
    
  • La política no existe

    Un error de muestra se parece al siguiente ejemplo:

    NOT_FOUND: Requested entity was not found
    

    Esto sugiere que la política ya se borró. Asegúrate de que el ID de la política en el comando de describe, update o delete se asigne a una política existente.

Se crea la política, pero parece no tener efecto

Los agentes de configuración del SO se implementan en cada instancia de Compute Engine a fin de administrar los paquetes de los agentes de Logging y Monitoring. Es posible que la política no tenga efecto si el agente de configuración del SO subyacente no está instalado.

LINUX

Para verificar que el agente de configuración del SO esté instalado, ejecuta el siguiente comando:

gcloud compute ssh instance-id \
    --project project-id \
    -- sudo systemctl status google-osconfig-agent

El siguiente es un resultado de muestra:

    google-osconfig-agent.service - Google OSConfig Agent
    Loaded: loaded (/lib/systemd/system/google-osconfig-agent.service; enabled; vendor preset:
    Active: active (running) since Wed 2020-01-15 00:14:22 UTC; 6min ago
    Main PID: 369 (google_osconfig)
     Tasks: 8 (limit: 4374)
    Memory: 102.7M
    CGroup: /system.slice/google-osconfig-agent.service
            └─369 /usr/bin/google_osconfig_agent

WINDOWS

Para verificar que el agente de configuración del SO esté instalado, ejecuta el siguiente comando:

  1. Conéctate a tu instancia mediante RDP o una herramienta similar y accede a Windows.

  2. Abre una terminal de PowerShell y ejecuta los siguientes comandos de PowerShell. No necesitas privilegios de administrador.

    Get-Service google_osconfig_agent
    

El siguiente es un resultado de muestra:

    Status   Name               DisplayName
    ------   ----               -----------
    Running  google_osconfig_a… Google OSConfig Agent

Las instancias de Compute Engine para SUSE y Ubuntu no tienen preinstalado el agente de configuración del SO, por lo que debes seguir las instrucciones de instalación del agente de configuración del SO a fin de instalarlo en esas instancias de Compute Engine.

El agente de configuración del SO está instalado, pero no instala los agentes de operaciones

Para verificar si hay algún error cuando el agente de configuración del SO aplica las políticas, puedes verificar el registro del agente de configuración del SO. Esto se puede hacer mediante el Explorador de registros o SSH o RDP para verificar instancias individuales de Compute Engine.

Para ver los registros del agente de configuración del SO en el explorador de registros, usa el siguiente filtro:

resource.type="gce_instance"
logName="projects/PROJECT_ID/logs/OSConfigAgent"

A fin de ver los registros del agente de configuración del SO con SSH para Linux instancias individuales de Compute Engine, ejecuta el siguiente comando:

  • CentOS / RHEL / SLES / SUSE

    gcloud compute ssh INSTANCE_ID \
        --project PROJECT_ID \
        -- sudo cat /var/log/messages \
           | grep "OSConfigAgent\|google-fluentd\|stackdriver-agent"
    
  • Debian / Ubuntu

    gcloud compute ssh INSTANCE_ID \
        --project PROJECT_ID \
        -- sudo cat /var/log/syslog \
           | grep "OSConfigAgent\|google-fluentd\|stackdriver-agent"
    

Sigue estos pasos para ver los registros del agente de configuración del SO con el RDP para las instancias individuales de Compute Engine Windows, ejecuta los siguientes pasos:

  1. Conéctate a tu instancia a través de RDP o una herramienta similar y accede a Windows.

  2. Abre la app Event Viewer, en Windows Logs => Application, busca registros con Source igual a OSConfigAgent.

Si se produce un error cuando se establece la conexión al servicio de configuración del SO, asegúrate de ejecutar la secuencia de comandos set-permissions.sh en la sección Crea una política de agentes para configurar los metadatos.

Para verificar que los metadatos de configuración del SO estén habilitados, puedes ejecutar el siguiente comando:

gcloud compute project-info describe \
    --project PROJECT_ID \
    | grep "enable-osconfig\|enable-guest-attributes" -A 1

El resultado esperado es el siguiente:

- key: enable-guest-attributes
  value: 'TRUE'
- key: enable-osconfig
  value: 'TRUE'

Se instalaron los agentes de observabilidad, pero no funcionan de forma correcta

Para obtener información sobre cómo depurar agentes específicos, consulta los siguientes documentos:

Habilita los registros de nivel de depuración para el agente de configuración del SO

Puede ser útil habilitar el registro de nivel de depuración en el agente de configuración del SO cuando se informa un problema.

Puedes configurar los metadatos osconfig-log-level: debug a fin de habilitar el registro de nivel de depuración del agente de configuración del SO. Los registros recopilados tienen más información que ayuda a la investigación.

Ejecuta el siguiente comando para habilitar el registro de nivel de depuración en todo el proyecto:

gcloud compute project-info add-metadata \
    --project PROJECT_ID \
    --metadata osconfig-log-level=debug

Si deseas habilitar el registro de nivel de depuración de una VM, ejecuta el siguiente comando:

gcloud compute instances add-metadata INSTANCE_ID \
    --project PROJECT_ID \
    --metadata osconfig-log-level=debug

¿Qué hace la secuencia de comandos set-permissions.sh?

Con un ID de proyecto, un rol de Identity and Access Management (IAM) y un correo electrónico o una cuenta de servicio, la secuencia de comandos set-permissions.sh realiza las siguientes acciones:

  • Habilita la API de Cloud Logging, la API de Cloud Monitoring y la API de configuración del SO del proyecto.

  • Otorga las funciones roles/logging.logWriter y roles/monitoring.metricWriter a la cuenta de servicio predeterminada de Compute Engine para que los agentes puedan escribir registros y métricas en las API de Logging y Cloud Monitoring.

  • Habilita los metadatos de configuración del SO del proyecto de modo que los agentes de configuración del SO se activen en las VM.

  • Otorga la función de IAM especificada al usuario gcloud o a la cuenta de servicio. Los propietarios del proyecto tienen acceso completo para crear y administrar una política. Los propietarios del proyecto deben otorgar una de las siguientes funciones a todos los demás usuarios o cuentas de servicio:

    • roles/osconfig.guestPolicyAdmin: Proporciona acceso completo a una política.

    • roles/osconfig.guestPolicyEditor: Permite que los usuarios obtengan, actualicen y enumeren una política.

    • roles/osconfig.guestPolicyViewer: Proporciona acceso de solo lectura para obtener y enumerar una política.

    Cuando ejecutas la secuencia de comandos, solo necesitas especificar la parte guestPolicy* del nombre del rol. La secuencia de comandos proporciona la parte roles/osconfig. del nombre.

La siguiente invocación de la secuencia de comandos habilita las API, otorga los roles necesarios a la cuenta de servicio predeterminada y habilita los metadatos de configuración del SO:

bash set-permissions.sh --project=PROJECT_ID

Para usar la secuencia de comandos a fin de otorgar también uno de los roles de configuración del SO a un usuario que no tiene el rol roles/owner (Propietario) en el proyecto, ejecuta la secuencia de comandos de la siguiente manera:

bash set-permissions.sh --project=PROJECT_ID \
  --iam-user=USER_EMAIL \
  --iam-permission-role=guestPolicy[Admin|Editor|Viewer]

Para usar la secuencia de comandos a fin de otorgar también uno de los roles de configuración del SO a una cuenta de servicio no predeterminada, ejecuta la secuencia de comandos de la siguiente manera:

bash set-permissions.sh --project=PROJECT_ID \
  --iam-service-account=SERVICE_ACCT_EMAIL \
  --iam-permission-role=guestPolicy[Admin|Editor|Viewer]

Para obtener más información, consulta el contenido de la secuencia de comandos.

¿Qué hace la secuencia de comandos diagnose.sh?

Con un proyecto, un ID de instancia de Compute Engine y un ID de política de agentes de operaciones, la secuencia de comandos diagnose.sh recopila de forma automática la información necesaria para diagnosticar los problemas de la política:

  • La versión del agente de configuración del SO

  • La política de invitado de la configuración del SO subyacente

  • Las políticas que se aplican a esta instancia de Compute Engine

  • Los repositorios de paquetes de agentes que se extraen a una instancia de Compute Engine

Integración en Terraform

La compatibilidad con Terraform se basa en los comandos de Google Cloud CLI. Para crear una política de agente con Terraform, sigue las instrucciones del módulo de Terraform.