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 조건) maxsize size (OR 조건) size |
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
오브젝트로 업로드한 로그 목록조회
[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 콘솔에서도 호스트네임 디렉토리를 생성하여 업로드한 로그 목록이 확인가능합니다.
※ 아래와 같은 에러가 발생한다면 버킷이 없어서 생기는 문제이니 로그 저장경로에 버킷을 생성하시 바랍니다.
[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 ‘
|