메뉴 닫기

로그관리(logrotate) + 오브젝트 스토리지 활용

logrotate와 오브젝트 스토리지를 활용한 로그관리


시스템 접속기록 및 리부팅 기록을 장기간 보관 관리를 위해 logrotate와 오브젝트 스토리지를 연동하는 방법에 대해 기술합니다.
 
로그로테이트 관련내용은 아래를 참고하시기 바랍니다.
 
 

접속기록을 관리하는 로그

/var/log/utmp : 현재 로그인한 사용자 상태 정보 저장
/var/log/wtmp : 성공한 로그인/로그아웃 정보 및 시스템의 부팅/셧다운의 기록을 저장
/var/log/btmp : 마지막으로 성공한 로그인 정보를 저장
 
 
기본설정을 그대로 이용한다면 Ubuntu 16.04 / Ubuntu 18.04 에서는 로그보관 관련 별다른 옵션이 없어 최대 2달치밖에 저장이 안된다. 
따라서 2달전 접속기록 및 리부팅 히스토리를 알수 없으니 아래를 참고해 저장주기를 기록하시기를 권장합니다.
 
Ubuntu 20.04 이상 RockyLinux, CentOS에서는 minsize 1M 값이 설정되어있어 일정기간내 접속기록 및 리부팅 히스토리를 확인하기에 충분하나 접속이 빈번하고 오랜기간 로그를 남겨두려면 설정을 적절하게 수정하시기 바랍니다.
 

운영체제별 기본 로그로테이트

Ubutnu 16.04 / Ubutnu 18.04 
/etc/logrotate.conf
# no packages own wtmp, or btmp — we’ll rotate them here
/var/log/wtmp {
    missingok
    monthly
    create 0664 root utmp
    rotate 1
}
 
 
Ubuntu 20.04 / Ubuntu 22.04 / Rockylinux 8.X / Rockylinux 9.X / CentOS 8.X
/etc/logrotate.d/wtmp 
# no packages own wtmp — we’ll rotate it here
/var/log/wtmp {
    missingok
    monthly
    create 0664 root utmp
    minsize 1M
    rotate 1
}
 
 
CentOS 7.X
/etc/logrotate.conf
# no packages own wtmp and btmp — we’ll rotate them here
/var/log/wtmp {
    monthly
    create 0664 root utmp
minsize 1M
    rotate 1
}
 
로그 크기 조건(minsize) 과 시간 조건(monthly)이 같이 들어가 있다면 여기에서는 두조건이 모두 만족해야 로테이트가 활성화 된다.
즉, 매달 체크해서 로그사이즈가 1M 이상이면 로그를 분리해서 남기겠다는 의미이다.
 
 
※ 로그 사이즈 옵션 

minsize size (AND 조건)
로그가 size보다 크고, 지정한 시간 조건(daily/weekly/monthly)이 지났을 때 로테이트

maxsize size (OR 조건)
로그가 size보다 크거나, 지정한 시간 조건이 지났을 때 로테이트

size
시간 조건은 무시하고, 로그가 특정 사이즈 이상일 때 로테이트

 

iwinv 오브젝트 스토리지에 로그파일 저장

iwinv 오브젝트 스토리지
iwinv 오브젝트 스토리지
오브젝트 스토리지 접속을 위한 s3cmd 설치
 
s3cmd install
  :: 여기서는 Rockylinux 8.x 예시이며 다른 운영체제로 가능합니다.
# cat /etc/redhat-release 
Rocky Linux release 8.7 (Green Obsidian)
 
# yum install epel-release
# yum install 
# yum install s3cmd
wtmp 로테이트 설정 
[root@smileserv-iwinv log]# cat /etc/logrotate.d/wtmp 
# no packages own wtmp — we’ll rotate it here
/var/log/wtmp {
    missingok
    dateext    # 날짜명으로(yyyyMMdd) 로그생성
    monthly
    create 0664 root utmp
    minsize 1M
    rotate 4  # 최대 4개 파일까지 저장
 
    postrotate
    bucket=”iwinv-log”
    host=`hostname`
    /usr/bin/s3cmd -m text/plain sync /var/log/wtmp* s3://${bucket}/${host}/
    endscript
}
제대로 설정되었는지를 확인하기 위해 -f 옵션으로 강제실행 
# logrotate -f /etc/logrotate.d/wtmp 
logrotate s3cmd
logrotate s3cmd
 
오브젝트로 업로드한 로그 목록조회
[root@smileserv-iwinv ~]# s3cmd ls s3://iwinv-log/smileserv-iwinv/*
2023-02-01 00:16 0 s3://iwinv-log/smileserv-iwinv/wtmp
2023-02-01 00:16 1536 s3://iwinv-log/smileserv-iwinv/wtmp-20230130
2023-02-01 00:16 1536 s3://iwinv-log/smileserv-iwinv/wtmp-20230131
2023-02-01 00:16 2304 s3://iwinv-log/smileserv-iwinv/wtmp-20230201
 
iwinv 콘솔에서도 호스트네임 디렉토리를 생성하여 업로드한 로그 목록이 확인가능합니다.
iwinv console
iwinv console
 
 
 
※ 아래와 같은 에러가 발생한다면 버킷이 없어서 생기는 문제이니 로그 저장경로에 버킷을 생성하시 바랍니다.
[root@smileserv-iwinv log]# logrotate -f /etc/logrotate.d/wtmp 
ERROR: S3 error: 404 (NoSuchBucket)
error: error running non-shared postrotate script for /var/log/wtmp of ‘/var/log/wtmp ‘
 
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x