운영 에이전트 자체 로그에 로그 로테이션 사용

운영 에이전트는 logging-module.log라는 로그 파일에 작성합니다. 에이전트가 장시간 동안 방치되거나 문제가 발생한 경우 이 '자체 로그' 파일이 사용 가능한 디스크 공간을 모두 사용할 수 있습니다. 이 문서에서는 이 문제를 방지하기 위해 로그 로테이션을 사용하는 방법을 설명합니다.

운영 에이전트 버전 2.31.0에는 에이전트에 기본 제공되는 구성 가능한 로그 로테이션 기능이 도입되었습니다. 운영 에이전트 버전 2.31.0 이상을 실행하는 경우 기본 제공 로그 로테이션 기능을 사용할 수 있습니다. 운영 에이전트에서 로그 로테이션 구성을 참조하세요.

또한 로그 로테이션을 수동으로 관리할 수 있습니다. 기본 제공 로그 로테이션 없이 운영 에이전트 버전을 사용하거나 로그를 수동으로 순환하려는 경우 수동 프로세스가 필요할 수 있습니다. 가능한 방법 중 하나는 Linux VM에서 자체 로그 파일 로테이션 설정을 참조하세요.

운영 에이전트에서 로그 로테이션 구성

이 섹션에서는 운영 에이전트가 로그를 자동으로 순환하기 위해 사용하는 기본 로그 로테이션 구성을 수정하는 방법을 설명합니다. 이 기능을 사용하려면 운영 에이전트 버전 2.31.0 이상이 필요합니다.

기본 구성

운영 에이전트는 default_self_log_file_rotation 항목을 사용하여 로그 로테이션을 구성합니다. 이 구성 항목에는 세 가지 옵션이 있습니다. 다음 스니펫은 해당 옵션과 기본값을 보여줍니다.

  default_self_log_file_rotation:
    enabled: true
    max_file_size_megabytes: 400
    backup_count: 1

default_self_log_file_rotation 구성에는 세 가지 옵션이 있습니다.

  • enabled: 로그 로테이션 사용 설정 여부입니다. 기본값은 true입니다.
  • max_file_size_megabytes: 로그 로테이션으로 백업되기 전에 로그 파일이 도달할 수 있는 최대 크기입니다. MB(1,0242바이트) 단위로 측정됩니다. 기본값은 400이고 유효한 최솟값은 1입니다.
  • backup_count: 보관할 이전 로그 파일의 수입니다. 기본값은 1이고 유효한 최솟값은 1입니다.

로그 로테이션의 사용자 구성

기본 로그 로테이션 구성을 수정하려면 운영 에이전트 사용자 구성 파일에서 구성을 재정의하여 해당 구성을 재정의합니다.

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

운영 에이전트에서 로그 로테이션을 구성하려면 사용자 구성 파일에 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

구성 예시

운영 에이전트의 로그 로테이션을 중지하려면 enabled 옵션을 false 값으로 지정합니다.

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

로그 파일이 20MB에 도달하면 로그를 순환하고 백업 5개(총 6개 파일)를 유지하려면 다음과 같이 지정합니다.

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

로그 파일이 2,000MB(2GB)에 도달하면 로그를 순환하고 백업 1개(총 2개 파일)를 유지하려면 다음과 같이 지정합니다.

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

로그 파일이 400MB에 도달하면 로그를 순환하고 백업 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 timerlogrotate 유틸리티를 트리거할 때까지 기다리거나 다음 명령어를 실행하여 수동으로 logrotate 유틸리티를 트리거합니다.

    sudo logrotate /etc/logrotate.d/google-cloud-ops-agent.conf
    
  4. /var/log/google-cloud-ops-agent/subagents/ 디렉터리에 순환된 로그 파일이 있는지 확인합니다.

  5. 원래 maxsize 값을 복원하여 로그 로테이션 구성을 재설정합니다.