PostgreSQL Logrotate

EnoSoup·2021년 7월 23일
0

PostgreSQL

목록 보기
2/4
post-thumbnail

Rotaion 구조


설정 방법

패키지 설치 확인

$ rpm -qa | grep logrotate
logrotate-3.8.6-15.amzn2.x86_64

Logrotate 파일 생성

$ sudo vi /etc/logrotate.d/postgres
/data/postgres/data/log/postgresql.log{
  daily
  maxage 31
  missingok
  dateext
  compress
  delaycompress
  copytruncate
}

Logrotate Debug 확인

$ sudo logrotate -d /etc/logrotate.d/postgres
reading config file /etc/logrotate.d/postgres
Allocating hash table for state file, size 15360 B

Handling 1 logs

rotating pattern: /data/postgres/data/log/*.log after 1 days (no old logs will be kept)
empty log files are rotated, old logs are removed
considering log /data/postgres/data/log/*.log
  log /data/log/*.log does not exist -- skipping

Logrotate 설정 적용

$ sudo logrotate -fv /etc/logrotate.d/mongodb

Crontab(root) 적용

$ sudo mkdir /data/script
$ sudo mv /etc/cron.daily/logrotate /data/script/logrotate.sh
$ sudo su
$ crontab -e
0 0 * * * /data/script/logrotate.sh

# crond 서비스 재부팅
$ systemctl restart crond

log 디렉터리 정리 스크립트 설정

$ sudo vi /root/script/log_managed.sh
#!/bin/bash

# log dir 압축파일을 /data/postgres/data/log/old 디렉터리로 옮기는 명령
mv /data/postgres/data/log/postgresql.log-*.gz /data/postgres/data/log/old/

# ../old dir 폴더에 30일 이상 지난 파일을 삭제하는 명령
find /data/postgres/data/log/old/ -mindepth 1 -maxdepth 1 -mtime +30 -type f -exec rm -rf {} \;

Crontab(root) 적용

$ sudo su
$ crontab -e
0 6 * * *	/root/script/log_managed.sh
profile
Cloud Engineer@Plateer. 클라우드 상에서 엔지니어링을 재미있게 하는 엔지니어입니다.

0개의 댓글