리눅스 Logrotate 개념과 설정

리눅스 Logrotate는 “로그를 회전하다.”라는 뜻에서 알 수 있듯이 로그와 Rotate(회전하다[동사])의 합성어입니다. 리눅스 설치 시 기본으로 설치되어 있습니다.

로테이션(Rotation)은 사람을 일정한 순서에 따라 교대하는 일, 야구 경기에서 선발 투수를 차례로 기용하는 일 등의 예에서 볼 수 있듯이 반복교대의 개념을 가지고 있습니다.
리눅스에서 로그로테이션(Logrotation) > 로그 회전이라는 명사로도 언급됩니다.
rpm -qa | grep logrotate
logrotate-3.18.0-7.el9.x86_64
rsyslog-logrotate-8.2102.0-105.el9.x86_64

Logrotate가 설치되어 있지 않다면 명령어를 통해서 설치할 수 있습니다.

yum -y install logrotate
dnf -y install logrotate

✅ 리눅스 Logrotate란

리눅스 로그회전(Logrotation)은 리눅스의 로그 정보를 저장하는 가장 기본적인 파일입니다. 로그를 그대로 방치하게 되면 파티션 디스크의 용량이 가득 차거나 웹사이트에 404 에러가 발생하는 등의 문제가 발생할 수 있습니다.

1. 로그의 필요성

  • 운영
  • 시스템 장애가 발생했을 경우 장애 해결을 위해 로그를 확인
  • 시스템의 성능 개선
  • 보안
  • 허가 되지 않은 봇이나 해킹 시도 등에 대한 감사
  • 침해 사고 발생 시 원인과 경로 및 피해 상황 파악

2. 일반적인 리눅스 로그 저장 기간

보통 리눅스 뿐만 아니라 로그의 저장 기간은 길게 3년, 1년, 6개월, 3개월 단위로 설정할 수 있으며, 짧게는 최소 1개월(4주) 단위로 로테이션 할 수 있습니다. 디스크 용량이 크지 않더라도 1개월 단위로 저장하는 것이 최소 선택이라고 할 수 있습니다. 그 외에 디스크 저장 공간이 여유롭지 않을 경우 그 이하로 설정할 수 있습니다.

✅ 리눅스 Logrotate 설정

Logrotate는 기본 설정 파일 /etc/logrotate.conf와 /etc/logrotate.d/ 폴더 내에 프로세스 설정 파일로 나뉘게 됩니다.

  • /usr/sbin/logrotate: 데몬 프로그램
  • /etc/logrotate.conf: 데몬 설정 파일
  • /etc/logrotate.d/: 로그로테이트 프로세스 설정 파일
  • /etc/cron.daily/logrotate : 로그로테이트 작업 내역에 대한 히스토리 로그

1. /etc/logrotate.conf

  • 기본 설정 값입니다.
# see "man logrotate" for details

# global options do not affect preceding include directives

# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create

# use date as a suffix of the rotated file
dateext

# uncomment this if you want your log files compressed
#compress

# packages drop log rotation information into this directory
include /etc/logrotate.d

# system-specific logs may be also be configured here.
  • weekly
  • rotate log files에 대한 yearly, monthly, weekly, daily로 주기 옵션을 설정할 수 있습니다.
  • rotate
  • 로그 파일의 갯수가 설정된 숫자 이상일 경우 가장 오래된 로그 파일을 삭제합니다.
  • ex) rotate 7 : log파일이 7개 이상 되면 삭제
  • create
  • 생성되는 로그 파일의 [권한], [유저], [그룹]을 설정할 수 있습니다.
  • ex) create 644 root root
  • compress
  • 로테이트 되는 로그 파일을 gzip으로 압축합니다.
  • nocompress gzip 압축 없이 설정
  • dateext
  • 로그 백업 파일 이름에 날짜가 들어가도록 설정
  • include /etc/logrotate.d
  • 로테이트 설정 값이 있는 디렉토리입니다.
  • maxage [숫자]
  • maxage 30 :  log파일이 30일 이상 되면 삭제
  • size : 지정된 용량보다 클 경우 rotate 실행
  • ex) size +100k

2. /etc/logrotate.d/

/etc/logrotate.d/ 폴더의 기본 구성은 다음과 같습니다.(록키 리눅스 기준)

✅ logrotate 명령어 및 옵션(환경)

# 기본 명령어
logrotate -옵션 [파일명]
# 명령어 위치
/usr/sbin/logrotate
# 리눅스 logrotate 디버깅 실행 : logrotate -d
logrotate -d /etc/logrotate.d/httpd 
WARNING: logrotate in debug mode does nothing except printing debug messages!  Consider using verbose mode (-v) instead if this is not what you want.

reading config file /etc/logrotate.d/httpd
Reading state from file: /var/lib/logrotate/logrotate.status
error: error opening state file /var/lib/logrotate/logrotate.status: No such file or directory
Allocating hash table for state file, size 64 entries

Handling 1 logs

rotating pattern: /var/log/httpd/*log  1048576 bytes (no old logs will be kept)
empty log files are not rotated, old logs are removed
considering log /var/log/httpd/access_log
Creating new state
  Now: 2024-01-13 17:28
  Last rotated at 2024-01-13 17:00
  log does not need rotating (log size is below the 'size' threshold)
considering log /var/log/httpd/error_log
Creating new state
  Now: 2024-01-13 17:28
  Last rotated at 2024-01-13 17:00
  log does not need rotating (log size is below the 'size' threshold)
not running postrotate script, since no logs were rotated
  • 로그로테이트 실행
  • logrotate -f [파일명]
logrotate -v /etc/logrotate.d/httpd 

reading config file /etc/logrotate.d/httpd
Reading state from file: /var/lib/logrotate/logrotate.status
Allocating hash table for state file, size 64 entries
Creating new state
Creating new state

Handling 1 logs

rotating pattern: /var/log/httpd/*log  1048576 bytes (no old logs will be kept)
empty log files are not rotated, old logs are removed
considering log /var/log/httpd/access_log
  Now: 2024-01-13 17:31
  Last rotated at 2024-01-13 17:30
  log does not need rotating (log size is below the 'size' threshold)
considering log /var/log/httpd/error_log
  Now: 2024-01-13 17:31
  Last rotated at 2024-01-13 17:30
  log does not need rotating (log size is below the 'size' threshold)
not running postrotate script, since no logs were rotated
set default create context to unconfined_u:object_r:logrotate_var_lib_t:s0
리눅스Linux(회색 배경의 나무 큐브)

Similar Posts

  • 리눅스 퍼미션(4,2,1)과 소유권 | chmod, chown, umask 명령어 | 스티키 비트

    리눅스 퍼미션(Permission)은 권한(&허가)을 의미합니다. 유닉스 계열 운영 체제들은 MS-DOS 계열의 운영 체제들은 멀티 테스킹 시스템이 아니며 멀티 유저 시스템 역시 아닙니다. 보통 컴퓨터는 하나의 키보드와 모니터를 가지고 한 명이 사용하지만 멀티 유저 시스템인 리눅스는 한 명 이상이 사용할 수 있다는 것을 의미합니다. 유닉스 계열의 멀티 유저 시스템은 운영 체제 설계 초기부터 깊게 내장된…

  • WAS와 WEB 서버 차이

    웹서버는 HTTP 프로토콜을 기반으로 클라이언트가 웹 브라우저에 요청을 하면 요청을 받아 정적 콘텐츠를 제공하는 서버입니다. 정적 콘텐츠는 HTML, CSS, 이미지, 파일 등의 콘텐츠가 제공됩니다. WAS란 DB 조회 또는 다양한 로직의 처리가 요구되는 동적 콘텐츠를 제공하기 위해 만들어진 Application 서버입니다. 목차✅ 리눅스 Logrotate란1. 로그의 필요성2. 일반적인 리눅스 로그 저장 기간✅ 리눅스 Logrotate 설정1. /etc/logrotate.conf2. /etc/logrotate.d/✅…

  • /tmp 디렉토리 보안 설정 [CentOS 7]

    리눅스 웹 서버를 운영할 때, /tmp 디렉토리는 시스템과 여러 애플리케이션이 임시 파일을 저장하는 공간으로 자주 사용됩니다. 하지만 /tmp 디렉토리는 누구나 쓰기 가능한 특성을 가지고 있어, 적절한 보안 설정 없이 방치하면 악성 스크립트 실행과 같은 보안에 위험이 될 수 있습니다. 목차✅ 리눅스 Logrotate란1. 로그의 필요성2. 일반적인 리눅스 로그 저장 기간✅ 리눅스 Logrotate 설정1. /etc/logrotate.conf2….

  • 리눅스: RPM, YUM 차이

    RPM(Red Hat Package Manager)과 YUM(Yellowdog Updater, Modified)은 리눅스의 패키지를 설치하는 인스톨 프로그램입니다. 패키지 설치와 삭제, 업데이트를 관리하는 명령어입니다. 목차✅ 리눅스 Logrotate란1. 로그의 필요성2. 일반적인 리눅스 로그 저장 기간✅ 리눅스 Logrotate 설정1. /etc/logrotate.conf2. /etc/logrotate.d/✅ logrotate 명령어 및 옵션(환경)RPM 리눅스를 초기에 설치 할 때는 tar, gzip 등의 확장자를 사용했습니다. 패키지 설치 시 사용자가 직접 컴파일을…

  • 리눅스: lrzsz 툴 설치 및 파일 업로드(rz) 및 다운로드(sz) 사용하기

    리눅스 OS에서 rz와 sz를 이용한 각각의 파일 업로드 및 다운로드 명령어를 실행시키기 위해 lrzsz가 서버에 설치되어 있어야 합니다. lrzsz 툴 설치 후 rz와 sz는 ZMODEM/YMODEM/XMODEM을 지원하는 프로토콜에서 파일 송수신이 가능합니다. Xshell을 사용해서 lrzszs 툴을 설치해 보겠습니다. 목차✅ 리눅스 Logrotate란1. 로그의 필요성2. 일반적인 리눅스 로그 저장 기간✅ 리눅스 Logrotate 설정1. /etc/logrotate.conf2. /etc/logrotate.d/✅ logrotate 명령어…

  • Apache 시작, 중지, 재시작 명령어 | 서비스 상태 확인

    리눅스에서 Apache를 설치하고 레드헷 계열과 우분투에서의 시작, 중지, 재시작 명령어를 자주 사용하게 됩니다. Apache 시작, 중지, 재시작 등의 명령어는 다음과 같습니다. 목차✅ 리눅스 Logrotate란1. 로그의 필요성2. 일반적인 리눅스 로그 저장 기간✅ 리눅스 Logrotate 설정1. /etc/logrotate.conf2. /etc/logrotate.d/✅ logrotate 명령어 및 옵션(환경)✅ Apache 시작 및 중지, 재시작: Red Hat 계열 ✅ Apache 시작 및 중지,…

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Prove your humanity: 1   +   10   =