Administra políticas de agentes

Envíanos un mensaje a ops-agent-policy-feedback@google.com si tienes alguna pregunta, necesitas asistencia o deseas enviar comentarios.

Las políticas de agentes permiten la instalación y el mantenimiento automáticos de los agentes de Google Cloud's operations suite en una flota de VM que coinciden con los criterios especificados por el usuario. Con un comando, puedes crear una política que controle las VM existentes y las nuevas, lo que garantiza una instalación correcta y una actualización automática opcional de todos los agentes.

Sistemas operativos compatibles

Puedes aplicar una política de agentes a instancias de Compute Engine con los siguientes sistemas operativos.

Logging agent se mapea a políticas con tipo de agente logging. Monitoring agent se mapea a políticas con tipo de agente metrics. Ops Agent se mapea a políticas con tipo de agente ops-agent.

Sistema operativo Agente de Logging Versión del agente de Monitoring anterior a 6.0.0 Versión 6.0.0 y versiones posteriores del agente de Monitoring Agente de operaciones
CentOS 6
CentOS 7
CentOS 8
RHEL 6
RHEL 7:
rhel-7, rhel-7-7-sap-ha, rhel-7-6-sap-ha, rhel-7-4-sap
RHEL 8:
rhel-8, rhel-8-1-sap-ha
Debian 9 (Stretch)
Debian 10 (Buster)
SLES 12:
sles-12, sles-12-sp2-sap, sles-12-sp3-sap, sles-12-sp4-sap, sles-12-sp5-sap
SLES 15:
sles-15, sles-15-sap, sles-15-sp1-sap, sles-15-sp2-sap
Ubuntu 16.04 LTS (Xenial Xerus):
ubuntu-1604-lts, ubuntu-minimal-1604-lts
Ubuntu 18.04 LTS (Bionic Beaver):
ubuntu-1804-lts, ubuntu-minimal-1804-lts
Ubuntu 19.10 (Eoan Ermine):
ubuntu-1910, ubuntu-minimal-1910
Ubuntu 20.04 LTS (Focal Fossa):
ubuntu-2004-lts, ubuntu-minimal-2004-lts

Crea una política de agentes

Para crear una política de agentes mediante la herramienta de línea de comandos de gcloud, completa los siguientes pasos:

  1. Si aún no lo hiciste, instala el SDK de Cloud.

    En el SDK de Cloud, el grupo de comandos para administrar las políticas de agentes se encuentra en versión Alfa.

    1. A fin de verificar si tienes instalado el componente alpha para la herramienta de gcloud, ejecuta este comando:

      gcloud components list
      
    2. Si no tienes instalado el componente alpha, ejecuta este comando para instalarlo:

      gcloud components install alpha
      
  2. Usa la siguiente secuencia de comandos para de habilitar las API y establecer los permisos adecuados a fin de usar la herramienta de línea de comandos de gcloud: set-permissions.sh.

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

  3. Usa el comando gcloud alpha compute instances ops-agents policies create para crear una política. Para ver la sintaxis del comando, consulta la documentación de gcloud alpha compute instances ops-agents policies create.

    Para obtener ejemplos de cómo dar formato al comando, consulta la sección Ejemplos en la documentación.

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

Prácticas recomendadas para usar políticas de agentes

A fin de controlar el impacto en los sistemas de producción durante el lanzamiento, se recomienda usar etiquetas y zonas de instancia para filtrar las instancias a las que se aplica la política.

Este es un ejemplo de un plan de lanzamiento por fases para VM de CentOS 7:

Fase 1: Crea una política para orientar todas las VM con la etiqueta env=test y app=myproduct.

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

Fase 2: Actualiza esa política para orientar a env=prod y app=myproduct y una zona única.

gcloud alpha 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 alpha compute instances \
    ops-agents policies update ops-agents-policy-safe-rollout \
    --clear-zones

Limitaciones

Para que una política se implemente en distribuciones del SO de Ubuntu y SLES anteriores a 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 VM. Para instalar el agente de configuración del SO en una flota de VM, 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. Decide en qué VM deseas instalar el agente de configuración del SO y enuméralas en un archivo CSV.

    Para obtener una lista de todas las instancias no administradas por Google (p. ej., por Google Kubernetes Engine o Google App Engine), 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)")
    

    En la sección grep, se filtran las VM que ya tienen instalado y habilitado el agente de configuración del SO.

    Para filtrar aún más las instancias por zonas o etiquetas, cambia el --filter a uno similar al 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. Ejecuta la secuencia de comandos mass-install-osconfig-agent.sh según las instrucciones de la secuencia de comandos. Esta secuencia de comandos automatiza las instrucciones de la instalación del agente de configuración del SO.

Soluciona problemas

Los comandos de la política de los agentes de operaciones fallan

Si los comandos de la política de los agentes de operaciones fallan, mostrarán el error de validación correspondiente. Resuelve esos errores mediante la corrección de las marcas y los argumentos del comando como se sugiera en 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.alpha.compute.instances.ops-agents.policies.XXX) PERMISSION_DENIED: Caller does not have required permission to XXX
    

    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 la función de IAM específica 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. GCLOUD_MEMBER debe estar en formato 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 [XXX].
    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
    

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 parezca que la política no tiene efecto si no se instala el agente de configuración del SO subyacente. 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

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 visor de registros o a través de una conexión SSH a instancias individuales de Compute Engine.

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

resource.type="gce_instance"
logName="projects/project-id/logs/OSConfigAgent"

Si deseas ver los registros del agente de configuración del SO a través de una conexión SSH a 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"
    

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 operaciones, pero no funcionan de forma correcta

Consulta las páginas de solución de problemas del agente de Logging y el agente de Monitoring para depurar problemas específicos.

Proporciona comentarios

Envíanos un mensaje a ops-agent-policy-feedback@google.com si tienes alguna pregunta, necesitas asistencia o deseas enviar comentarios. También puedes usar el comando gcloud de comentarios a fin de informar errores y problemas con los que te encontraste cuando usaste los comandos.

Usa la siguiente secuencia de comandos para recopilar información que pueda ayudar a solucionar el problema: diagnose.sh.

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

Habilita registros de nivel de depuración

Es muy útil habilitar el registro de nivel de depuración del 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

Información adicional

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

Con un ID de proyecto, una función de la administración de identidades y accesos (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.

Consulta un ejemplo de uso en los comentarios 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