Agent-Richtlinien werden mithilfe der
gcloud beta compute instances ops-agents policies
-Befehl
in der Google Cloud CLI oder der
agent-policy
Terraform-Modul.
Agent-Richtlinien verwenden die VM Manager-Tools in Compute Engine zur Verwaltung von OS-Richtlinien, die die Bereitstellung und Wartung von Softwarekonfigurationen wie den Google Cloud Observability-Agents automatisieren können: dem Ops-Agent, dem bisherigen Monitoring-Agent und dem bisherigen Logging-Agent.
Agent-Richtlinie erstellen
In diesem Abschnitt wird beschrieben, wie Sie das Google Cloud SDK zum Verwalten von Richtlinien für Kundenservicemitarbeiter verwenden. Informationen zur Verwendung von Terraform finden Sie unter Terraform-Integration.
Gehen Sie so vor, um mithilfe des Google Cloud CLI eine Agent-Richtlinie zu erstellen:
Installieren Sie das Google Cloud CLI, falls noch nicht geschehen.
Die in diesem Dokument beschriebenen Richtlinien für Kundenservicemitarbeiter verwenden die Befehlsgruppe
beta
.Falls noch nicht geschehen, installieren Sie die Komponente
beta
der gcloud CLI.gcloud components install beta
Prüfen Sie mit dem folgenden Befehl, ob die Komponente
beta
für die installierte Komponente vorhanden ist:gcloud components list
Wenn Sie die Komponente
beta
bereits installiert haben, prüfen Sie, ob Sie die neueste Version haben:gcloud components update
Laden Sie das folgende Skript herunter und verwenden Sie es, um die APIs zu aktivieren und den erforderliche Berechtigungen zur Verwendung der Google Cloud CLI:
set-permissions.sh
Informationen zum Skript finden Sie unter
set-permissions.sh
Skript.Verwenden Sie den Befehl
gcloud beta compute instances ops-agents policies
create
, um eine Richtlinie zu erstellen. Informationen zur Syntax des Befehls finden Sie in der Dokumentation zugcloud beta compute instances ops-agents policies
create
.Beispiele zum Formatieren des Befehls finden Sie in der Beispiele in der Dokumentation zur Google Cloud CLI.
Weitere Informationen zu den anderen Befehlen in der Befehlsgruppe und den verfügbaren Optionen finden Sie in der Dokumentation zu
gcloud beta compute instances ops-agents policies
.
Best Practices für die Verwendung von Agent-Richtlinien
Um die Auswirkungen auf Produktionssysteme während des Roll-outs zu kontrollieren, empfehlen wir Ihnen, Instanzlabels und Zonen zu verwenden, um die Instanzen zu filtern, für die die Richtlinie gilt.
Achten Sie beim Erstellen einer Richtlinie für den Ops-Agent darauf, dass auf Ihren VMs nicht der Legacy-Logging-Agent oder der Legacy-Monitoring-Agent installiert ist. Das Ausführen des Ops-Agents und der Legacy-Agents auf derselben VM kann dazu führen, dass doppelte Logs oder ein Konflikt bei der Messwertaufnahme entstehen. Deinstallieren Sie bei Bedarf den Monitoring-Agent und deinstallieren Sie den Logging-Agent, bevor Sie eine Richtlinie zur Installation des Ops-Agents erstellen.Hier ist ein Beispiel für einen gestaffelten Roll-out-Plan für Debian 11-VMs in einem Projekt:
mit dem Namen my_project
:
Phase 1: Erstellen Sie eine Richtlinie mit dem Namen ops-agents-policy-safe-rollout
, um den Ops-Agent auf allen VMs mit den Labels env=test
und app=myproduct
zu installieren.
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=debian,version=11 \
--group-labels=env=test,app=myproduct \
--project=my_project
Weitere Informationen zur Angabe des Betriebssystems finden Sie unter
gcloud beta compute instances ops-agents policies
create
.
Phase 2: Aktualisieren Sie diese Richtlinie, damit sie für VMs in einer einzelnen Zone mit den Labels env=prod
und app=myproduct
gilt.
gcloud beta compute instances \
ops-agents policies update ops-agents-policy-safe-rollout \
--group-labels=env=prod,app=myproduct \
--zones=us-central1-c \
Phase 3: Aktualisieren Sie die Richtlinie, um den Zonenfilter zu bereinigen, sodass ein globaler Rollout erfolgen kann.
gcloud beta compute instances \
ops-agents policies update ops-agents-policy-safe-rollout \
--clear-zones
Richtlinien für VMs, die vor OS Config erstellt wurden
Möglicherweise müssen Sie den OS Config-Agent manuell auf VMs installieren und konfigurieren, die vor OS Config liegen. Informationen zum manuellen Installieren und Prüfen des OS Config-Agents finden Sie in der Checkliste zur Bestätigung für VM Manager.
Fehlerbehebung für Beta-Agent-Richtlinien
Dieser Abschnitt enthält Informationen zur Behebung von Problemen mit dem Beta-Agent Richtlinien für den Ops-Agent, den Legacy-Monitoring-Agent und den Legacy-Logging-Agent.
Die ops-agents policy
-Befehle schlagen fehl
Wenn ein gcloud beta compute instances ops-agents policies
-Befehl fehlschlägt, wird in der Antwort ein Validierungsfehler angezeigt. Korrigieren Sie diesen Fehler. Ändern Sie dafür die Befehlsargumente sowie die Flags wie in der Fehlermeldung vorgeschlagen.
Zusätzlich zu den Validierungsfehlern können Fehler angezeigt werden, die auf die folgenden Bedingungen hinweisen:
- Unzureichende IAM-Berechtigung
- Die OS Config API ist nicht aktiviert
- Die angegebene Richtlinie existiert nicht
Diese Schritte werden in den folgenden Abschnitten näher erläutert.
Unzureichende IAM-Berechtigung
Wenn ein gcloud beta compute instances ops-agents policies
-Befehl mit einem Berechtigungsfehler fehlschlägt, führen Sie das Skript set-permissions.sh
wie unter Agent-Richtlinie erstellen beschrieben aus, um die OS Config-Richtlinienrollen einzurichten:
-
GuestPolicy-Administrator (
roles/osconfig.guestPolicyAdmin
): Gewährt vollständigen Zugriff auf Gastrichtlinien. -
GuestPolicy-Bearbeiter (
roles/osconfig.guestPolicyEditor
): Damit können Nutzer Gastrichtlinien abrufen, aktualisieren und auflisten. -
GuestPolicy-Betrachter (
roles/osconfig.guestPolicyViewer
): Bietet Lesezugriff für das Abrufen und Auflisten von Gastrichtlinien.
Weitere Informationen zum Skript set-permissions.sh
finden Sie unter Skript set-permissions.sh
.
OS Config API ist nicht aktiviert
Ein Beispiel für einen solchen Fehler sieht so aus:
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)?
Sie können y
eingeben, um die API zu aktivieren, oder set-permissions.sh
ausführen
beschrieben, die in
Agent-Richtlinie erstellen
um alle erforderlichen Berechtigungen zu erteilen. Wenn Sie bei der Eingabeaufforderung in der Fehlermeldung y
eingeben, müssen Sie dennoch das Skript set-permissions.sh
ausführen, um die erforderlichen Berechtigungen festzulegen.
Mit den folgenden Befehlen können Sie prüfen, ob die OS Config API für das Projekt aktiviert ist:
gcloud services list --project PROJECT_ID | grep osconfig.googleapis.com
Die erwartete Ausgabe sieht so aus:
osconfig.googleapis.com Cloud OS Config API
Die Richtlinie existiert nicht.
Ein Beispiel für einen solchen Fehler sieht so aus:
NOT_FOUND: Requested entity was not found
Dieser Fehler kann bedeuten, dass die Richtlinie nie erstellt oder gelöscht wurde oder dass die angegebene Richtlinien-ID falsch ist. Achten Sie darauf, dass die in einem gcloud beta compute instances ops-agents policies
describe
-, update
- oder delete
-Befehl verwendete POLICY_ID einer vorhandenen Richtlinie entspricht. Eine Liste der Agent-Richtlinien rufen Sie mit dem Befehl gcloud beta compute instances ops-agents policies
list
ab.
Die Richtlinie wurde erstellt, hat aber scheinbar keine Auswirkungen
OS Config-Agents werden auf jeder Compute Engine-Instanz bereitgestellt, um die Pakete für die Logging- und Monitoring-Agents zu verwalten. Die Richtlinie hat möglicherweise keine Auswirkungen, weil der zugrunde liegende OS Config-Agent nicht installiert ist.
Linux
Mit dem folgenden Befehl können Sie prüfen, ob der OS Config-Agent installiert ist.
gcloud compute ssh instance-id \
--project project-id \
-- sudo systemctl status google-osconfig-agent
Die Ausgabe sieht beispielsweise so aus:
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
Mit den folgenden Schritten können Sie prüfen, ob der OS Config-Agent installiert ist.
Stellen Sie mithilfe von RDP oder einem ähnlichen Tool eine Verbindung zu Ihrer Instanz her und melden Sie sich bei Windows an.
Öffnen Sie ein PowerShell-Terminal und führen Sie den folgenden PowerShell-Befehl aus. Sie benötigen keine Administratorberechtigungen.
Get-Service google_osconfig_agent
Die Ausgabe sieht beispielsweise so aus:
Status Name DisplayName
------ ---- -----------
Running google_osconfig_a… Google OSConfig Agent
Wenn der OS Config-Agent nicht installiert ist, verwenden Sie möglicherweise ein Betriebssystem, das VM Manager nicht unterstützt. Im Dokument Details zu Betriebssystemen von Compute Engine wird angegeben, welche VM Manager-Features für die einzelnen Compute Engine-Betriebssysteme unterstützt werden.
Wenn das Betriebssystem VM Manager unterstützt, können Sie den OS Config-Agent manuell installieren.
Der OS Config-Agent ist installiert, aber nicht der Ops-Agent
Um festzustellen, ob Fehler auftreten, wenn der OS Config-Agent Richtlinien anwendet, können Sie das Log des OS Config-Agents prüfen. Verwenden Sie dazu entweder den Log-Explorer oder verwenden Sie SSH bzw. RDP, um einzelne Compute Engine-Instanzen zu überprüfen.
Verwenden Sie zum Aufrufen der OS Config-Agent-Logs im Log-Explorer den folgenden Filter:
resource.type="gce_instance"
logId(OSConfigAgent)
So rufen Sie die Logs des OS Config-Agents auf:
CentOS, RHEL,
SLES, SUSE
Führen Sie dazu diesen Befehl aus:
gcloud compute ssh INSTANCE_ID \
--project PROJECT_ID \
-- sudo cat /var/log/messages \
| grep "OSConfigAgent\|google-fluentd\|stackdriver-agent"
Debian, Ubuntu
Führen Sie dazu diesen Befehl aus:
gcloud compute ssh INSTANCE_ID \
--project PROJECT_ID \
-- sudo cat /var/log/syslog \
| grep "OSConfigAgent\|google-fluentd\|stackdriver-agent"
Windows
Stellen Sie mithilfe von RDP oder einem ähnlichen Tool eine Verbindung zu Ihrer Instanz her und melden Sie sich bei Windows an.
Öffnen Sie die Anwendung „Ereignisanzeige“, wählen Sie Windows-Logs > Anwendung aus und suchen Sie nach Logs, bei denen
Source
gleichOSConfigAgent
ist.
Wenn beim Herstellen der Verbindung zum OS Config-Dienst ein Fehler auftritt, führen Sie das Skript set-permissions.sh
aus, wie unter Agent-Richtlinie erstellen beschrieben, um die Metadaten von OS Config einzurichten.
Mit dem folgenden Befehl können Sie prüfen, ob die OS Config-Metadaten aktiviert sind.
gcloud compute project-info describe \
--project PROJECT_ID \
| grep "enable-osconfig\|enable-guest-attributes" -A 1
Die erwartete Ausgabe sieht so aus:
- key: enable-guest-attributes
value: 'TRUE'
- key: enable-osconfig
value: 'TRUE'
Beobachtbarkeits-Agents wurden installiert, funktionieren aber nicht richtig
Informationen zum Debuggen bestimmter Kundenservicemitarbeiter finden Sie in den folgenden Dokumenten:
- Fehler beim Ops-Agent beheben
- Fehler beim Legacy-Logging-Agent beheben
- Fehler beim Legacy-Monitoring-Agent beheben
Logs auf Debug-Ebene für den OS Config-Agent aktivieren
Beim Melden eines Problems kann es nützlich sein, das Logging auf Debug-Ebene im OS Config-Agent zu aktivieren.
Sie können die osconfig-log-level: debug
-Metadaten festlegen, um das Logging auf Debug-Ebene für den OS Config-Agent zu aktivieren Die dabei erfassten Logs bieten Ihnen weitere Informationen für die Untersuchung.
Führen Sie den folgenden Befehl aus, um das Logging auf Debug-Ebene für das gesamte Projekt zu aktivieren:
gcloud compute project-info add-metadata \
--project PROJECT_ID \
--metadata osconfig-log-level=debug
Führen Sie den folgenden Befehl aus, um das Logging auf Debug-Ebene für eine VM zu aktivieren:
gcloud compute instances add-metadata INSTANCE_ID \
--project PROJECT_ID \
--metadata osconfig-log-level=debug
Hilfsskripts
In diesem Abschnitt finden Sie zusätzliche Informationen zu den in diesem Dokument beschriebenen Hilfsskripts:
Das Skript set-permissions.sh
Nachdem Sie das Skript set-permissions.sh
heruntergeladen haben, können Sie mithilfe des Skripts die folgenden Aktionen auf der Grundlage der von Ihnen angegebenen Argumente ausführen:
Für das Projekt werden die Cloud Logging API, die Cloud Monitoring API und die OS Config API aktiviert.
Gewähren Sie dem Compute Engine-Standarddienstkonto die Identitäts- und Zugriffsverwaltungsrollen Logs Writer (
roles/logging.logWriter
) und Monitoring Metric Writer (roles/monitoring.metricWriter
) zu, damit die Agenten Protokolle und Metriken an die Protokollierungs- und Cloud-Überwachungs-APIs schreiben können.Aktivieren Sie die OS Config-Metadaten für das Projekt, damit der OS Config-Agent auf jeder VM aktiv ist.
Weisen Sie dem Nicht-Inhaber-Nutzer oder Dienstkonto, das zum Erstellen und Verwalten von Richtlinien erforderlich ist, eine der folgenden IAM-Rollen zu. Projektinhaber haben vollständigen Zugriff zum Erstellen und Verwalten von Richtlinien. Allen anderen Nutzern oder Dienstkonten muss eine der folgenden Rollen zugewiesen sein:
-
GuestPolicy-Administrator (
roles/osconfig.guestPolicyAdmin
): Bietet vollständigen Zugriff auf Gastrichtlinien. -
GuestPolicy-Bearbeiter (
roles/osconfig.guestPolicyEditor
): Nutzer können Gastrichtlinien abrufen, aktualisieren und auflisten. -
GuestPolicy-Betrachter (
roles/osconfig.guestPolicyViewer
): Gewährt Lesezugriff zum Abrufen und Auflisten von Gastrichtlinien.
Wenn Sie das Skript ausführen, müssen Sie nur den Teil
guestPolicy*
des Rollennamens angeben. Das Skript stellt den Teilroles/osconfig.
des Namens bereit.-
GuestPolicy-Administrator (
Die folgenden Beispiele zeigen einige gängige Aufrufe für das Skript. Weitere Informationen finden Sie in den Kommentaren im Skript selbst.
Zum Aktivieren der APIs weisen Sie dem Standarddienstkonto die erforderlichen Rollen zu und aktivieren die OS Config-Metadaten für ein Projekt. Gehen Sie dazu so vor:
bash set-permissions.sh --project=PROJECT_ID
So führen Sie das Skript aus, um einem Nutzer, der nicht die Rolle "Inhaber" (roles/owner
) für das Projekt hat, eine der OS Config-Rollen zuzuweisen:
bash set-permissions.sh --project=PROJECT_ID \ --iam-user=USER_EMAIL \ --iam-permission-role=guestPolicy[Admin|Editor|Viewer]
So führen Sie das Skript aus, um einem nicht standardmäßigen Dienstkonto zusätzlich eine der OS Config-Rollen zuzuweisen:
bash set-permissions.sh --project=PROJECT_ID \ --iam-service-account=SERVICE_ACCT_EMAIL \ --iam-permission-role=guestPolicy[Admin|Editor|Viewer]
Das Skript diagnose.sh
Wenn Sie eine Projekt-ID, eine Compute Engine-Instanz-ID,
und die Agent-Richtlinien-ID, den
diagnose.sh
-Script wird automatisch erfasst
die erforderlichen Informationen, um Probleme mit der Richtlinie zu diagnostizieren:
- Die Version des OS Config-Agents
- Die zugrunde liegende OS Config-Gastrichtlinie
- Die für diese Compute Engine-Instanz geltenden Richtlinien
- Die Repositories des Agent-Pakets, die in diese Compute Engine-Instanz geladen werden
Führen Sie den folgenden Befehl aus, um das Skript aufzurufen:
bash diagnose.sh --project-id=PROJECT_ID \ --gce-instance-id=INSTANCE_ID \ --policy-id=POLICY_ID
Einbindung von Terraform
Informationen zum Anwenden oder Entfernen einer Terraform-Datei Informationen zur Konfiguration finden Sie unter Grundlegendes Terraform Informationen zur Funktionsweise von Terraform finden Sie unter Terraform verwenden
Die Terraform-Unterstützung für Agent-Richtlinien basiert auf der Google Cloud CLI.
. Wenn Sie eine Agent-Richtlinie mit Terraform erstellen möchten, folgen Sie der Terraform-Anleitung
Anleitung für agent-policy
.
Beispielrichtlinien findest du auch in der
examples
-Verzeichnis.