Ops エージェントのセルフログにログ ローテーションを使用する

Ops エージェントは、logging-module.log というファイルにログを書き込みます。エージェントが長時間無人で実行されるか、問題が発生した場合、この「セルフログ」ファイルにより、使用可能なすべてのディスク容量が消費される可能性があります。このドキュメントでは、ログ ローテーションを使用して、この問題を回避する方法について説明します。

Ops エージェント バージョン 2.31.0 では、構成可能なログ ローテーション機能がエージェントに組み込まれています。Ops エージェント バージョン 2.31.0 以降を実行している場合は、組み込みのログ ローテーション機能を使用できます。Ops エージェントでログ ローテーションを構成するをご覧ください。

ログ ローテーションは手動で管理することもできます。ログ ローテーションが組み込まれていないバージョンの Ops エージェントを使用している場合や、ログを手動でローテーションする場合は、手動プロセスが必要になることがあります。考えられるアプローチについては、Linux VM でセルフログ ファイルのローテーションを設定するをご覧ください。

Ops エージェントでログ ローテーションを構成する

このセクションでは、Ops エージェントで使用されるログのデフォルトのローテーション構成を変更して、ログを自動的にローテーションする方法について説明します。この機能を使用するには、Ops エージェント バージョン 2.31.0 以降が必要です。

デフォルト構成

Ops エージェントは、default_self_log_file_rotation エントリを使用してログ ローテーションを構成します。この構成エントリには 3 つのオプションがあります。次のスニペットは、オプションとそのデフォルト値を示しています。

  default_self_log_file_rotation:
    enabled: true
    max_file_size_megabytes: 400
    backup_count: 1

default_self_log_file_rotation 構成には次の 3 つのオプションがあります。

  • enabled: ログ ローテーションが有効になっているかどうか。デフォルトは true です。
  • max_file_size_megabytes: ログ ローテーションでバックアップされる前にログファイルが到達可能な最大サイズ。メガバイト単位(1,0242 バイト)。デフォルトは 400 です。有効な最小値は 1 です。
  • backup_count: 保持する古いログファイルの数。デフォルトは 1 です。有効な最小値は 1 です。

ログ ローテーションのユーザー構成

デフォルトのログ ローテーション構成を変更するには、Ops エージェント ユーザー構成ファイルで構成を再定義して、構成をオーバーライドします。

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

Ops エージェントでログ ローテーションを構成するには、ユーザー構成ファイルに global セクションを追加し、global セクションに構成要素 default_self_log_file_rotation を含めます。この構成ファイルには、すでにロギング パイプラインまたは指標パイプラインが含まれている可能性があります。その場合は、パイプラインの後に global セクションを追加します。すべてのオプションとデフォルト値を指定した結果は次のようになります。

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

構成例

Ops エージェントによるログ ローテーションを無効にする。値 false を使用して enabled オプションを指定します。

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

ログファイルが 20 MB に達したときにログをローテーションし、5 つのバックアップ(合計 6 ファイル)を保持する:

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

ログファイルが 2,000 MB(2 GB)に達したときにログをローテーションし、1 つのバックアップを保持する(合計 2 つのファイル):

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

ログファイルが 400 MB に達したときにログをローテーションし、2 つのバックアップを保持す(合計 3 つのファイル):

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

ログ ローテーションの構成を調整するときに頻繁に変更を行う場合は、エージェントを再起動して変更を適用してください。

Linux VM でセルフログ ファイルのローテーションを設定する

/var/log/google-cloud-ops-agent/subagents/logging-module.log のロギング サブエージェント ログのサイズを制限するには、logrotate ユーティリティをインストールして構成します。

  1. 次のコマンドを実行して logrotate ユーティリティをインストールします。

    Debian、Ubuntu の場合

    sudo apt install logrotate
    

    CentOS、RHEL、Fedora の場合

    sudo yum install logrotate
    
  2. /etc/logrotate.d/google-cloud-ops-agent.conflogrotate 構成ファイルを作成します。

    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. logrotate ユーティリティを定期的にトリガーするように、crontab または systemd timer を設定します。

ログ ローテーションが有効になると、ローテーションされたファイルが /var/log/google-cloud-ops-agent/subagents/ ディレクトリに表示されます。出力は次のようになります。

/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

ログ ローテーションをテストするには、次の操作を行います。

  1. /etc/logrotate.d/google-cloud-ops-agent.conf ファイルで maxsize 値を 1k に設定することにより、ローテーションがトリガーされるファイルサイズを一時的に小さくします。

  2. エージェントを数回再起動して、エージェントのセルフログ ファイルが 1K より大きくなるようにします。

    sudo service google-cloud-ops-agent restart
    
  3. crontab または systemd timer が有効になるまで待機して logrotate ユーティリティをトリガーするか、次のコマンドを実行して logrotate ユーティリティを手動でトリガーします。

    sudo logrotate /etc/logrotate.d/google-cloud-ops-agent.conf
    
  4. ローテーションされたログファイルが /var/log/google-cloud-ops-agent/subagents/ ディレクトリに表示されることを確認します。

  5. 元の maxsize 値を復元して、ログ ローテーションの構成をリセットします。