I criteri degli agenti consentono l'installazione e la manutenzione automatiche degli agenti Google Cloud Observability in un parco risorse di VM che soddisfano i criteri specificati dall'utente. Con un solo comando puoi creare un criterio per il tuo progetto Google Cloud che regoli le VM nuove e esistenti associate al progetto Google Cloud, garantendo un'installazione corretta e l'upgrade automatico facoltativo di tutti gli agenti.
Sistemi operativi supportati
Puoi applicare un criterio degli agenti alle istanze di Compute Engine con i seguenti sistemi operativi.
Logging agent
corrisponde ai criteri con
tipo di agente
logging
. Monitoring agent
corrisponde ai criteri con
tipo di agente
metrics
. Ops Agent
corrisponde ai criteri con
tipo di agente
ops-agent
.
Sistema operativo | Agente Logging | Agente Monitoring | Ops Agent |
---|---|---|---|
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-2-sap-ha, 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) | |||
Ubuntu LTS 18.04 (Bionic Beaver): ubuntu-1804-lts, ubuntu-minimal-1804-lts |
|||
Ubuntu LTS 20.04 (Fossa focale): 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-*, visible-leap-15-4-*) |
|||
Windows Server: 2016, 2019, 2022, Core 2016, Core 2019, Core 2022 |
1 L'agente Monitoring non è
supportato su rhel-7-9-sap-ha
, rhel-8-2-sap-ha
o
rhel-8-4-sap-ha
.
Creazione di un criterio dell'agente
Per creare un criterio dell'agente utilizzando Google Cloud CLI, completa questi passaggi:
Se non lo hai già fatto, installa Google Cloud CLI.
Nell'interfaccia alla gcloud CLI, il gruppo di comandi per la gestione dei criteri degli agenti è in versione
beta
.Se non lo hai già fatto, installa il componente
beta
di gcloud CLI:gcloud components install beta
Per verificare se è installato il componente
beta
, esegui:gcloud components list
Se hai già installato il componente
beta
, assicurati di disporre della versione più recente:gcloud components update
Utilizza lo script seguente per abilitare le API e impostare le autorizzazioni corrette per l'utilizzo di Google Cloud CLI:
set-permissions.sh
.Per informazioni sullo script, consulta Che cosa sta facendo lo script
set-permissions.sh
?.Usa il comando
gcloud beta compute instances ops-agents policies create
per creare un criterio. Per la sintassi del comando, consulta la documentazione digcloud beta compute instances ops-agents policies create
.Per esempi su come formattare il comando, consulta la sezione Esempi nella documentazione di Google Cloud CLI.
Per ulteriori informazioni sui comandi gcloud CLI disponibili e sulle opzioni disponibili, consulta la documentazione di
gcloud beta compute instances ops-agents policies
.
Best practice per l'utilizzo dei criteri degli agenti
Per controllare l'impatto sui sistemi di produzione durante l'implementazione, ti consigliamo di utilizzare le etichette delle istanze e le zone per filtrare le istanze a cui si applica il criterio.
Se stai creando un criterio per Ops Agent, assicurati che sulle tue VM non sia installato l'agente Logging legacy o l'agente Monitoring. L'esecuzione di Ops Agent e degli agenti legacy sulla stessa VM può causare l'importazione di log duplicati o un conflitto nell'importazione delle metriche. Se necessario, disinstalla l'agente Monitoring e disinstalla l'agente Logging prima di creare un criterio per installare Ops Agent.Ecco un esempio di piano di implementazione graduale per le VM CentOS 7:
Fase 1: crea un criterio per installare Ops Agent su tutte le VM con le etichette env=test
e 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
Per maggiori informazioni sulla specifica del sistema operativo, consulta
gcloud beta compute instances ops-agents policies create
.
Fase 2: aggiorna il criterio in modo che abbia come target env=prod
e app=myproduct
e una sola zona.
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: aggiorna il criterio per cancellare il filtro delle zone in modo che venga implementato a livello globale
gcloud beta compute instances \
ops-agents policies update ops-agents-policy-safe-rollout \
--clear-zones
Limitazioni
Affinché un criterio abbia effetto sulle VM che precedono la configurazione del sistema operativo, è necessaria una configurazione aggiuntiva per garantire che l'agente di configurazione del sistema operativo su cui si basa il criterio sia installato sulle VM. Per installare l'agente di configurazione del sistema operativo su un parco risorse di VM, completa i seguenti passaggi:
Assicurati di aver eseguito lo script
set-permissions.sh
nella sezione Creazione di un criterio agente.Decidi quali VM vuoi installare l'agente OS Config ed elencale in un file CSV.
Per ottenere un elenco di tutte le istanze non gestite da Google (ad es. da Google Kubernetes Engine o Google App Engine) in un file CSV, esegui:
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
La sezione
grep
filtra le VM in cui è già installato e abilitato OS Config Agent. L'esclusione delle etichette delle VM basata sugoog-
filtra le VM di Compute Engine gestite da GKE, App Engine e così via.Per filtrare ulteriormente le istanze per zone o etichette, modifica
--filter
in modo simile a quanto segue:"-labels.list(show="keys"):goog- AND zone:(ZONE_1,ZONE_2) AND labels.KEY_1:VALUE_1 AND labels.KEY_2=VALUE_2"
Scarica ed esegui lo script
mass-install-osconfig-agent.sh
seguendo le istruzioni nello script per eseguire un comando come:bash mass-install-osconfig-agent.sh --project project-id --input-file instances.csv
Questo script automatizza le istruzioni Installazione dell'agente OS Config.
Risoluzione dei problemi
I comandi del criterio ops-agents hanno esito negativo
Se i comandi dei criteri ops-agents non riescono, mostrano un errore di convalida corrispondente. Correggi questi errori correggendo gli argomenti e i flag dei comandi come suggerito dal messaggio di errore.
Oltre agli errori di convalida, potresti visualizzare i seguenti errori:
Autorizzazione IAM insufficiente
Un errore di esempio ha il seguente aspetto:
ERROR: (gcloud.beta.compute.instances.ops-agents.policies.XXX) PERMISSION_DENIED: Caller does not have required permission to XXX
Assicurati di eseguire lo script
set-permissions.sh
nella sezione Creazione di un criterio agente per configurare il ruolo IAM specifico perosconfig.guestPolicy
.Per verificare se hai abilitato il ruolo del criterio guest OS Config sufficiente per il progetto, puoi eseguire questo comando. In questo esempio, il comando controlla se l'utente dispone del ruolo
roles/osconfig.guestPolicyAdmin
.GCLOUD_MEMBER
deve essere nel formatouser:USER_EMAIL
oserviceaccount:SERVICE_ACCOUNT_EMAIL
.gcloud projects get-iam-policy project-id \ --filter=--member=gcloud-member \ | grep "roles/osconfig.guestPolicyAdmin" -B 2
L'output previsto è:
- members: - gcloud-member role: roles/osconfig.guestPolicyAdmin
L'API Osconfig non è abilitata
Un errore di esempio ha il seguente aspetto:
API [osconfig.googleapis.com] not enabled on project [XXX]. Would you like to enable and retry (this will take a few minutes)? (y/N)?
Assicurati di eseguire lo script
set-permissions.sh
nella sezione Creazione di un criterio agente per concedere tutte le autorizzazioni necessarie.Per verificare se l'API OS Config è abilitata per il progetto, puoi eseguire i comandi seguenti:
gcloud services list --project project-id \ | grep osconfig.googleapis.com
L'output previsto è:
osconfig.googleapis.com Cloud OS Config API
Il criterio non esiste
Un errore di esempio ha il seguente aspetto:
NOT_FOUND: Requested entity was not found
Questo suggerisce che il criterio è già stato eliminato. Assicurati che l'ID del criterio nel comando
describe
,update
odelete
sia mappato a un criterio esistente.
Il criterio è stato creato, ma sembra non avere alcun effetto
Viene eseguito il deployment degli agenti OS Config in ciascuna istanza Compute Engine per gestire i pacchetti per gli agenti Logging e Monitoring. Il criterio potrebbe non avere effetto se l'agente OS Config sottostante non è installato.
LINUX
Per verificare che l'agente OS Config sia installato, esegui questo comando:
gcloud compute ssh instance-id \
--project project-id \
-- sudo systemctl status google-osconfig-agent
Un output di esempio è:
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
FINESTRA
Per verificare che l'agente OS Config sia installato, esegui questi passaggi:
Connettiti all'istanza utilizzando RDP o uno strumento simile e accedi a Windows.
Apri un terminale PowerShell, quindi esegui il seguente comando PowerShell. Non hai bisogno di privilegi amministrativi.
Get-Service google_osconfig_agent
Un output di esempio è:
Status Name DisplayName
------ ---- -----------
Running google_osconfig_a… Google OSConfig Agent
L'agente OS Config non è preinstallato nelle istanze di SUSE e Ubuntu Compute Engine, quindi devi seguire le instructions di installazione dell'agente OS Config per installare l'agente OS Config su queste istanze Compute Engine.
L'agente OS Config è installato, ma non installa gli Ops Agent
Per verificare se si verificano errori quando l'agente OS Config applica i criteri, puoi controllare il log dell'agente OS Config. L'operazione può essere eseguita tramite Esplora log o tramite SSH / RDP su singole istanze di Compute Engine.
Per visualizzare i log dell'agente OS Config in Esplora log, utilizza il filtro seguente:
resource.type="gce_instance"
logName="projects/project-id/logs/OSConfigAgent"
Per visualizzare i log dell'agente OS Config tramite SSH per singole istanze Linux di Compute Engine, esegui questo 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"
Per visualizzare i log dell'agente OS Config tramite RDP per le singole istanze Windows di Compute Engine, esegui questi passaggi:
Connettiti all'istanza utilizzando RDP o uno strumento simile e accedi a Windows.
Apri l'app
Event Viewer
, inWindows Logs
=>Application
, cerca i log conSource
uguale aOSConfigAgent
.
Se si verifica un errore durante la connessione al servizio di configurazione del sistema operativo, assicurati di eseguire lo script set-permissions.sh
nella sezione Creazione di un criterio agente per configurare i metadati.
Per verificare che i metadati di configurazione del sistema operativo siano abilitati, puoi eseguire questo comando:
gcloud compute project-info describe \
--project project-id \
| grep "enable-osconfig\|enable-guest-attributes" -A 1
L'output previsto è:
- key: enable-guest-attributes
value: 'TRUE'
- key: enable-osconfig
value: 'TRUE'
Gli Ops Agent sono installati, ma non funzionano correttamente
Consulta le pagine per la risoluzione dei problemi dell'agente Logging e dell'agente Monitoring per eseguire il debug di problemi specifici.
Attivazione dei log a livello di debug
È molto utile abilitare il logging a livello di debug dell'agente OS Config quando si segnala un problema.
Puoi impostare i metadati osconfig-log-level: debug
per attivare il logging a livello di debug per l'agente OS Config. I log raccolti contengono ulteriori informazioni
che possono essere utili per l'indagine.
Per attivare il logging a livello di debug per l'intero progetto, esegui questo comando:
gcloud compute project-info add-metadata \
--project project-id \
--metadata osconfig-log-level=debug
Per abilitare il logging a livello di debug per una VM, esegui questo comando:
gcloud compute instances add-metadata instance-id \
--project project-id \
--metadata osconfig-log-level=debug
Informazioni aggiuntive
Che cosa sta facendo lo script set-permissions.sh
?
Se disponi di un ID progetto, un ruolo IAM (Identity and Access Management) e un account email o di servizio, lo script set-permissions.sh
esegue le seguenti azioni:
Abilita l'API Cloud Logging, l'API Cloud Monitoring e l'API OS Config per il progetto.
Concede i ruoli
roles/logging.logWriter
eroles/monitoring.metricWriter
all'account di servizio predefinito di Compute Engine in modo che gli agenti possano scrivere log e metriche per le API Logging e Cloud Monitoring.Abilita i metadati di configurazione del sistema operativo per il progetto in modo che gli agenti OS Config vengano attivati sulle VM.
Concede il ruolo IAM specificato all'utente
gcloud
o all'account di servizio. I proprietari del progetto hanno accesso completo per creare e gestire un criterio. Per tutti gli altri utenti o account di servizio, i proprietari del progetto devono concedere uno dei seguenti ruoli:roles/osconfig.guestPolicyAdmin
: fornisce l'accesso completo a un criterio.roles/osconfig.guestPolicyEditor
: consente agli utenti di ricevere, aggiornare ed elencare un criterio.roles/osconfig.guestPolicyViewer
: fornisce l'accesso di sola lettura per recuperare ed elencare un criterio.
Quando esegui lo script, devi solo specificare la parte
guestPolicy*
del nome del ruolo. Lo script fornisce la parteroles/osconfig.
del nome.
La seguente chiamata dello script abilita le API, concede i ruoli necessari all'account di servizio predefinito e abilita i metadati di configurazione del sistema operativo:
bash set-permissions.sh --project=PROJECT_ID
Per utilizzare lo script per concedere anche uno dei ruoli di configurazione del sistema operativo a un utente che non dispone del ruolo roles/owner
(Proprietario) nel progetto, esegui lo script come segue:
bash set-permissions.sh --project=PROJECT_ID \ --iam-user=USER_EMAIL \ --iam-permission-role=guestPolicy[Admin|Editor|Viewer]
Per utilizzare lo script per concedere anche uno dei ruoli di configurazione del sistema operativo a un account di servizio non predefinito, esegui lo script come segue:
bash set-permissions.sh --project=PROJECT_ID \ --iam-service-account=SERVICE_ACCT_EMAIL \ --iam-permission-role=guestPolicy[Admin|Editor|Viewer]
Per ulteriori informazioni, consulta il contenuto dello script.
Che cosa sta facendo lo script diagnose.sh
?
Dati un progetto, un ID istanza di Compute Engine e un ID criterio dell'agente Ops, lo script diagnose.sh
raccoglie automaticamente le informazioni necessarie per aiutare a diagnosticare i problemi del criterio:
La versione dell'agente OS Config
Il criterio guest OS Config sottostante
I criteri applicabili a questa istanza Compute Engine
I repository del pacchetto dell'agente di cui viene eseguito il pull su un'istanza Compute Engine
Integrazione con Terraform
Il supporto di Terraform si basa sui comandi Google Cloud CLI. Per creare un criterio dell'agente utilizzando Terraform, segui l'istruzione del modulo Terraform.