Agent-Richtlinien verwalten

Wenn Sie Fragen haben, Unterstützung benötigen oder Feedback geben möchten, senden Sie uns eine E-Mail an ops-agent-policy-feedback@google.com.

Agent-Richtlinien ermöglichen die automatische Installation und Wartung der Agents der Operations-Suite von Google Cloud auf einer Reihe von VMs, die benutzerdefinierten Kriterien entsprechen. Sie können mit einem einzigen Befehl eine Richtlinie erstellen, die für vorhandene sowie neue VMs gilt und somit für eine ordnungsgemäße Installation und ein optionales automatisches Upgrade aller Agents sorgt.

Unterstützte Betriebssysteme

Sie können eine Agen-Richtlinie auf Compute Engine-Instanzen mit den folgenden Betriebssystemen anwenden.

Logging agent verweist auf Richtlinien mit dem Agent-Typ logging. Monitoring agent verweist auf Richtlinien mit dem Agent-Typ metrics. Ops Agent verweist auf Richtlinien mit dem Agent-Typ ops-agent.

Betriebssystem Logging-Agent Monitoring-Agent-Version unter 6.0.0 Monitoring-Agent-Version ab 6.0.0 Ops-Agent
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 LTS 16.04 (Xenial Xerus):
ubuntu-1604-lts, ubuntu-minimal-1604-lts
Ubuntu LTS 18.04 (Bionic Beaver):
ubuntu-1804-lts, ubuntu-minimal-1804-lts
Ubuntu 19.10 (Eoan Ermine):
ubuntu-1910, ubuntu-minimal-1910
Ubuntu LTS 20.04 (Focal Fossa):
ubuntu-2004-lts, ubuntu-minimal-2004-lts
Windows Server 2012 R2
Windows Server 2016
Windows Server 2019
Windows Server Core 2012 R2
Windows Server Core 2016
Windows Server Core 2019
Windows Server Core 1909

Agent-Richtlinie erstellen

Führen Sie die folgenden Schritte aus, um mit dem gcloud-Befehlszeilentool eine Agent-Richtlinie zu erstellen.

  1. Installieren Sie das Cloud SDK, falls noch nicht geschehen.

    Das Cloud SDK enthält in der beta-Version eine Befehlsgruppe zum Verwalten von Agent-Richtlinien.

  2. Falls noch nicht geschehen, installieren Sie die Komponente beta des gcloud-Tools:

    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
    
    1. Wenn Sie die Komponente beta bereits installiert haben, prüfen Sie, ob Sie die neueste Version haben:

       gcloud components update
       ```
      
  1. Verwenden Sie das folgende Skript, um die APIs zu aktivieren und die richtigen Berechtigungen für die Verwendung des gcloud-Befehlszeilentools festzulegen: set-permissions.sh.

    Weitere Informationen zum Skript finden Sie unter Was macht das Skript set-permissions.sh?.

  2. 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 zu gcloud beta compute instances ops-agents policies create.

    Beispiele zum Formatieren des Befehls finden Sie in der Dokumentation im Abschnitt Beispiele.

    Weitere Informationen zu den verfügbaren Befehlen des gcloud-Tools sowie zu 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

Zur Kontrolle der Auswirkungen auf Produktionssysteme beim Rollout wird empfohlen, Instanzlabels und Zonen zu verwenden, um die Instanzen zu filtern, für die die Richtlinie gelten soll.

Das folgende Beispiel zeigt einen stufenweisen Rolloutplan für VMs mit CentOS 7:

Phase 1: Erstellen Sie eine Richtlinie, die für alle VMs mit den Labels env=test und app=myproduct gelten soll.

Für Ops-Agent:

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

Für eigenständige Logging- und Monitoring-Agents:

gcloud beta 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

Phase 2: Aktualisieren Sie diese Richtlinie, damit sie für env=prod und app=myproduct gilt und auf eine einzelne Zone beschränkt ist.

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

Beschränkungen

Damit eine Richtlinie für Distributionen mit den Betriebssystemen Ubuntu und SLES oder für VMs mit einer OS Config aus der Zeit vor ihrer Erstellung gilt, ist eine zusätzliche Einrichtung erforderlich. Der OS Config-Agent, auf den sich die Richtlinie stützt, muss auf den VMs installiert sein. Führen Sie die folgenden Schritte aus, um den OS Config-Agent auf einer Reihe von VMs zu installieren:

  1. Vergewissern Sie sich, dass das Skript set-permissions.sh aus dem Abschnitt Agent-Richtlinie erstellen ausgeführt wird.

  2. Legen Sie fest, auf welchen VMs Sie den OS Config-Agent installieren möchten, und listen Sie diese in einer CSV-Datei auf.

    Führen Sie Folgendes aus, um eine Liste aller nicht von Google verwalteten Instanzen (z. B. von Google Kubernetes Engine oder Google App Engine) in einer CSV-Datei zu erhalten:

      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
    

    Im Bereich grep werden die VMs herausgefiltert, auf denen der OS Config-Agent bereits installiert und aktiviert ist. Der VM-Labelausschluss basierend auf goog- filtert Compute Engine-VMs, die von GKE, App Engine usw. verwaltet werden.

    Wenn Sie die Instanzen weiter nach Zonen oder Labels filtern möchten, ändern Sie --filter in etwa so:

      "-labels.list(show="keys"):goog- AND zone:(ZONE_1,ZONE_2) AND labels.KEY_1:VALUE_1 AND labels.KEY_2=VALUE_2"
    
  3. Laden Sie das Skript mass-install-osconfig-agent.sh herunter und führen Sie es aus. Folgen Sie dabei der Anleitung im Skript, um einen Befehl wie den folgenden auszuführen:

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

    Dieses Skript bietet eine Automatisierung der Anleitung OS Config-Agent installieren.

Fehlerbehebung

Die Befehle der Ops-Agent-Richtlinie schlagen fehl

Wenn die Befehle der Ops-Agent-Richtlinie fehlschlagen, wird ein entsprechender 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 die folgenden Fehler auftreten:

  • Unzureichende IAM-Berechtigung

    Ein Fehler dieser Art sieht in etwa so aus:

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

    Führen Sie das Skript set-permissions.sh aus dem Abschnitt Agent-Richtlinie erstellen aus, um die für osconfig.guestPolicy spezifische IAM-Rolle einzurichten.

    Mit dem folgenden Befehl können Sie prüfen, ob eine ausreichende OS Config-Gastrichtlinienrolle für das Projekt aktiviert ist. In diesem Beispiel wird mit dem Befehl geprüft, ob der Nutzer die Rolle roles/osconfig.guestPolicyAdmin hat. GCLOUD_MEMBER sollte das Format user:USER_EMAIL oder serviceaccount:SERVICE_ACCOUNT_EMAIL haben.

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

    Folgende Ausgabe wird erwartet:

    - members:
      - gcloud-member
      role: roles/osconfig.guestPolicyAdmin
    
  • OS Config API ist nicht aktiviert

    Ein Fehler dieser Art sieht in etwa so aus:

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

    Führen Sie das Skript set-permissions.sh aus dem Abschnitt Agent-Richtlinie erstellen aus, um alle erforderlichen Berechtigungen zu gewähren.

    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
    

    Folgende Ausgabe wird erwartet:

    osconfig.googleapis.com    Cloud OS Config API
    

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.

  1. Stellen Sie mithilfe von RDP oder einem ähnlichen Tool eine Verbindung zu Ihrer Instanz her und melden Sie sich bei Windows an.

  2. Öffnen Sie ein PowerShell-Terminal und führen Sie den folgenden PowerShell-Befehl aus. Sie benötigen keine Administratorberechtigungen.

    Get-Service google_osconfig_agent
    

Bei Compute Engine-Instanzen mit SUSE oder Ubuntu ist der OS Config-Agent nicht vorinstalliert. Folgen Sie daher der Anleitung für die OS Config-Agent-Installation, um den OS Config-Agent auf diesen Compute Engine-Instanzen zu installieren.

Der OS Config-Agent ist installiert, aber die Ops-Agents werden nicht installiert

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 die Loganzeige oder SSH für die einzelnen Compute Engine-Instanzen.

Verwenden Sie zum Aufrufen der OS Config-Agent-Logs in der Loganzeige den folgenden Filter:

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

Führen Sie den folgenden Befehl aus, um die OS Config-Agent-Logs für einzelne Compute Engine-Instanzen über SSH aufzurufen:

  • 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"
    

Führen Sie die folgenden Schritte aus, um die Logs des OS Config-Agents über RDP für einzelne Compute Engine-Windows-Instanzen aufzurufen:

  1. Stellen Sie mithilfe von RDP oder einem ähnlichen Tool eine Verbindung zu Ihrer Instanz her und melden Sie sich bei Windows an.

  2. Öffnen Sie die Anwendung Event Viewer unter Windows Logs => Application und suchen Sie nach Logs mit Source, die gleich OSConfigAgent sind.

Wenn beim Herstellen der Verbindung zum OS Config-Dienst ein Fehler auftritt, führen Sie das Skript set-permissions.sh aus dem Abschnitt Agent-Richtlinie erstellen aus, um die Metadaten 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

Folgende Ausgabe wird erwartet:

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

Ops-Agents sind installiert, funktionieren jedoch nicht ordnungsgemäß

Informationen zur Behebung bestimmter Probleme finden Sie auf den Seiten zur Fehlerbehebung für den Logging-Agent und den Monitoring-Agent.

Feedback geben

Wenn Sie Fragen haben, Unterstützung benötigen oder Feedback geben möchten, senden Sie uns eine E-Mail an ops-agent-policy-feedback@google.com. Sie können auch den gcloud-Feedbackbefehl verwenden, um Fehler und Probleme zu melden, die bei Anwendung der Befehle aufgetreten sind.

Verwenden Sie das folgende diagnose.sh-Skript, um Informationen zu erfassen, die bei der Fehlerbehebung hilfreich sein können.

Weitere Informationen zum Skript finden Sie unter Was macht das Skript diagnose.sh?.

Logs auf Debug-Ebene aktivieren

Beim Melden eines Problems ist es sehr hilfreich, das Logging auf Debug-Ebene für den 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

Weitere Informationen

Was macht das Skript set-permissions.sh?

Wenn eine Projekt-ID, eine IAM-Rolle und eine E-Mail-Adresse oder ein Dienstkonto festgelegt sind, führt das Skript set-permissions.sh die folgenden Aktionen aus:

  • Für das Projekt werden die Cloud Logging API, die Cloud Monitoring API und die OS Config API aktiviert.

  • Dem Compute Engine-Standarddienstkonto werden die Rollen roles/logging.logWriter und roles/monitoring.metricWriter gewährt, damit die Agents Logs und Messwerte in die Logging API und in die Cloud Monitoring API schreiben können.

  • Die OS Config-Metadaten für das Projekt werden aktiviert, sodass OS Config-Agents auf den VMs aktiviert werden.

  • Dem gcloud-Nutzer oder dem Dienstkonto werden die angegebenen IAM-Rollen gewährt. Projektinhaber haben vollständigen Zugriff für das Erstellen und Verwalten einer Richtlinie. Allen anderen Nutzern oder Dienstkonten müssen Projektinhaber eine der folgenden Rollen zuweisen:

    • roles/osconfig.guestPolicyAdmin: Bietet vollständigen Zugriff auf eine Richtlinie.

    • roles/osconfig.guestPolicyEditor: Ermöglicht Nutzern, Richtlinien abzurufen, zu aktualisieren und aufzulisten.

    • roles/osconfig.guestPolicyViewer: Bietet Lesezugriff für das Abrufen und Auflisten einer Richtlinie.

Eine beispielhafte Nutzung finden Sie in den Kommentaren des Skripts.

Was macht das Skript diagnose.sh?

Wenn ein Projekt, eine Compute Engine-Instanz-ID und eine Ops-Agent-Richtlinien-ID festgelegt sind, erfasst das Skript diagnose.sh automatisch die erforderlichen Informationen, um Probleme in 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 eine Compute Engine-Instanz geladen werden