Logrotation für selbstbezogene Logs des Ops-Agents verwenden

Der Ops-Agent schreibt in eine Logdatei namens logging-module.log. Wenn der Agent über längere Zeit unbeaufsichtigt ausgeführt wird oder wenn ein Problem auftritt, kann die „Self-Log“-Datei den gesamten verfügbaren Speicherplatz belegen. In diesem Dokument wird beschrieben, wie Sie dieses Problem mit der Logrotation verhindern können.

Mit der Ops-Agent-Version 2.31.0 wird eine konfigurierbare Funktion für die Logrotation eingeführt, die in den Agent integriert ist. Wenn Sie die Ops-Agent-Version 2.31.0 oder höher ausführen, können Sie die integrierte Funktion zur Logrotation verwenden. Siehe Logrotation im Ops-Agent konfigurieren.

Sie können die Logrotation auch manuell verwalten. Möglicherweise benötigen Sie einen manuellen Prozess, wenn Sie eine Version des Ops-Agents ohne integrierte Logrotation verwenden oder Ihre Logs manuell rotieren möchten. Eine mögliche Methode finden Sie unter Rotation von Logdateien für Linux-VMs einrichten.

Logrotation im Ops-Agent konfigurieren

In diesem Abschnitt wird beschrieben, wie Sie die Standardkonfiguration der Logrotation ändern, die vom Ops-Agent verwendet wird, um seine Logs automatisch zu rotieren. Für diese Funktion ist Ops-Agent Version 2.31.0 oder höher erforderlich.

Standardkonfiguration

Der Ops-Agent verwendet den Eintrag default_self_log_file_rotation zur Konfiguration der Logrotation. Dieser Konfigurationseintrag erfordert drei Optionen. Das folgende Snippet zeigt die Optionen und ihre Standardwerte:

  default_self_log_file_rotation:
    enabled: true
    max_file_size_megabytes: 400
    backup_count: 1

Die default_self_log_file_rotation-Konfiguration hat drei Optionen:

  • enabled: Gibt an, ob die Logrotation aktiviert ist. Standardwert ist true.
  • max_file_size_megabytes: Die maximale Größe der Logdatei, bevor sie durch die Logrotation gesichert wird. (gemessen in Megabyte (1.0242 Byte). Der Standardwert ist 400, der gültige Mindestwert ist 1.
  • backup_count: Die Anzahl der alten Logdateien, die aufbewahrt werden sollen. Der Standardwert ist 1, der gültige Mindestwert ist 1.

Nutzerkonfiguration der Logrotation

Wenn Sie die Standardkonfiguration der Logrotation ändern möchten, überschreiben Sie diese Konfiguration, indem Sie die Konfiguration in der Nutzerkonfigurationsdatei des Ops-Agents neu definieren:

  • Auf Linux: /etc/google-cloud-ops-agent/config.yaml
  • Auf Windows: C:\Program Files\Google\Cloud Operations\Ops Agent\config\config.yaml

Zur Konfiguration der Logrotation im Ops-Agent fügen Sie der Nutzerkonfigurationsdatei den Abschnitt global hinzu und fügen das Konfigurationselement default_self_log_file_rotation im Abschnitt global hinzu. Möglicherweise haben Sie bereits Logging- oder Messwertpipelines in dieser Konfigurationsdatei und fügen den Abschnitt global nach Ihren Pipelines hinzu. Das Ergebnis, wobei alle Optionen und Standardwerte angegeben werden, sieht so aus:

logging:  ...
metrics:  ...
global:
  default_self_log_file_rotation:
    enabled: true
    max_file_size_megabytes: 400
    backup_count: 1

Beispielkonfigurationen

Geben Sie die Option enabled mit dem Wert false an, um die Logrotation durch den Ops-Agent zu deaktivieren:

logging:  ...
metrics:  ...
global:
  default_self_log_file_rotation:
    enabled: false

So rotieren Sie das Log, wenn die Logdatei 20 MB erreicht und 5 Sicherungen speichert (insgesamt 6 Dateien):

logging:  ...
metrics:  ...
global:
  default_self_log_file_rotation:
    max_file_size_megabytes: 20
    backup_count: 5

So rotieren Sie das Log,wenn die Logdatei 2.000 MB (2 GB) erreicht und 1 Sicherung aufbewahrt wird (insgesamt 2 Dateien):

logging:  ...
metrics:  ...
global:
  default_self_log_file_rotation:
    max_file_size_megabytes: 2000

So rotieren Sie das Log, wenn die Logdatei 400 MB erreicht und zwei Sicherungen aufbewahrt (insgesamt drei Dateien):

logging:  ...
metrics:  ...
global:
  default_self_log_file_rotation:
    backup_count: 2

Wenn Sie häufig Änderungen vornehmen, während Sie Ihre Logrotation-Konfiguration optimieren, denken Sie daran, den Agent neu zu starten, um Ihre Änderungen zu übernehmen.

Rotation von Self-Logdateien auf Linux-VMs einrichten

Installieren und konfigurieren Sie das Dienstprogramm logrotate, um die Größe des Logging-Sub-Agent-Logs unter /var/log/google-cloud-ops-agent/subagents/logging-module.log zu begrenzen.

  1. Installieren Sie das Dienstprogramm logrotate mit dem folgenden Befehl:

    Unter Debian und Ubuntu

    sudo apt install logrotate
    

    Unter CentOS, RHEL und Fedora

    sudo yum install logrotate
    
  2. Erstellen Sie unter /etc/logrotate.d/google-cloud-ops-agent.conf eine logrotate-Konfigurationsdatei.

    sudo tee /etc/logrotate.d/google-cloud-ops-agent.conf > /dev/null << EOF
    # logrotate config to rotate Google Cloud Ops Agent self log file.
    # See https://manpages.debian.org/jessie/logrotate/logrotate.8.en.html for
    # the full options.
    /var/log/google-cloud-ops-agent/subagents/logging-module.log
    {
        # Log files are rotated every day.
        daily
        # Log files are rotated this many times before being removed. This
        # effectively limits the disk space used by the Ops Agent self log files.
        rotate 30
        # Log files are rotated when they grow bigger than maxsize even before the
        # additionally specified time interval
        maxsize 256M
        # Skip rotation if the log file is missing.
        missingok
        # Do not rotate the log if it is empty.
        notifempty
        # Old versions of log files are compressed with gzip by default.
        compress
        # Postpone compression of the previous log file to the next rotation
        # cycle.
        delaycompress
    }
    EOF
    
  3. Richten Sie crontab oder systemd timer ein, um das Dienstprogramm logrotate regelmäßig auszulösen.

Nachdem die Logrotation wirksam wurde, werden im Verzeichnis /var/log/google-cloud-ops-agent/subagents/ rotierte Dateien angezeigt. Die Ergebnisse sehen in etwa so aus:

/var/log/google-cloud-ops-agent/subagents$ ls -lh
total 24K
-rw-r--r-- 1 root root  717 Sep  3 19:54 logging-module.log
-rw-r--r-- 1 root root 6.8K Sep  3 19:51 logging-module.log.1
-rw-r--r-- 1 root root  874 Sep  3 19:50 logging-module.log.2.gz
-rw-r--r-- 1 root root  873 Sep  3 19:50 logging-module.log.3.gz
-rw-r--r-- 1 root root 3.2K Sep  3 19:34 logging-module.log.4.gz

So testen Sie die Protokollrotation:

  1. Verringern Sie vorübergehend die Dateigröße, bei der die Rotation ausgelöst wird. Setzen Sie dazu den Wert maxsize in der Datei /etc/logrotate.d/google-cloud-ops-agent.conf auf 1k.

  2. Lösen Sie die Selbstlogdatei des Agents auf einen Wert größer als 1 KB aus, indem Sie den Agent mehrmals neu starten:

    sudo service google-cloud-ops-agent restart
    
  3. Warten Sie, bis crontab oder systemd timer wirksam wurde, um das Dienstprogramm logrotate auszulösen, oder lösen Sie das Dienstprogramm logrotate manuell aus. Führen Sie dazu diesen Befehl aus:

    sudo logrotate /etc/logrotate.d/google-cloud-ops-agent.conf
    
  4. Prüfen Sie, ob im Verzeichnis /var/log/google-cloud-ops-agent/subagents/ rotierte Logdateien angezeigt werden.

  5. Setzen Sie die Logrotation-Konfiguration zurück, indem Sie den ursprünglichen maxsize-Wert wiederherstellen.