OpenVPN 클라이언트 로그가 예상대로 "logrotate"되지 않음

OpenVPN 클라이언트 로그가 예상대로 "logrotate"되지 않음

요약:OpenVPN 클라이언트의 기본 로그가 파일 시스템을 채우는 것을 방지하고 싶지만 (적어도 지금은) 디버깅 수준을 상당히 높게 유지해야 합니다. 내 시도는 logrotate현재 예상대로 작동하지 않습니다. (지시대로 작동할 수도 있지만 :-(

세부 사항:

제가 리눅스 관리자로서 실력이 확실히 부족하기 때문에 아래에 포함된 오류나 오해를 자유롭게 수정해 주시기 바랍니다. 나는 노트북을 가지고 있다

$ cat /etc/debian_version
jessie/sid
$ uname -rv
3.11-2-amd64 #1 SMP Debian 3.11.8-1 (2013-11-13)
$ sudo openvpn --version | head -1
OpenVPN 2.3.2 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [eurephia] [MH] [IPv6] built on Nov 28 2013
$ sudo logrotate --version | head -1
logrotate 3.8.6

OpenVPN 클라이언트를 설정하는 것은 이번이 처음입니다. 클라이언트가 아직 작동하지 않으므로 ISTM OpenVPN 로그를 @ 꽤 유용한 정보로 유지해야 합니다 /var/log/openvpn.log. 불행하게도 Low Disk Space on "Filesystem root"LVM2 /var루트 볼륨 에서 알림=을 받기 시작했습니다 . 몇 번이나 수동으로 삭제 한 후 /var/log/openvpn.log"이제 사용법을 배워야 할 때였다 logrotate"고 결정했습니다. 조금 읽은 후 /etc/cron.hourly/logrotate만들었습니다 .

#!/bin/sh

test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf

그리고 다음 섹션을 /var/log/openvpn.log내 섹션에 추가했습니다 /etc/logrotate.conf(즉, 이전의 모든 것은 데비안 설치 # for OpenVPN client에 있었습니다 ):/etc/logrotate.conf

# see "man logrotate" for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

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

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

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

# no packages own wtmp, or btmp -- we'll rotate them here
/var/log/wtmp {
    missingok
    monthly
    create 0664 root utmp
    rotate 1
}

/var/log/btmp {
    missingok
    monthly
    create 0660 root utmp
    rotate 1
}

# system-specific logs may be configured here

# for OpenVPN client
/var/log/openvpn.log {
    missingok
    copytruncate
    size 100M
    rotate 5
    dateformat -%Y%m%d_%H%M
    dateext
    compress
    delaycompress
    nomail
}

즉, 내 의도는,

  1. cron매 시간마다 실행됩니다 logrotate.
  2. /var/log/openvpn.log100MB보다 커지면 ( 프로세스를 허용= 원본 로그 파일에 계속 기록하도록 허용) logrotate됩니다 .copytruncateopenvpn
  3. 각 d 로그 섹션에는 format= (명령줄에서 사용됨 ) copytruncate으로 타임스탬프가 지정됩니다 .%Y%m%d_%H%Mdate +%Y%m%d_%H%M
  4. 각 d-log 섹션은 압축되어 있습니다. 사용하지 않는 것보다 안전해 보이기 때문에 copytruncate사용하고 있습니다 . :-)delaycompress
  5. 최대 5개의 로그 섹션을 유지하므로 OpenVPN 로그는 500MB를 초과하지 않습니다. (압축 중이므로 줄어들기를 바랍니다.)

안타깝게도 여전히 다음과 같은 루트가 가득 찬 알림을 받습니다.

$ df -h
Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/LVM2_crypt-root   20G   20G     0 100% /
udev                          10M     0   10M   0% /dev
tmpfs                        390M  1.1M  389M   1% /run
tmpfs                        5.0M     0  5.0M   0% /run/lock
tmpfs                        1.6G  876K  1.6G   1% /run/shm
/dev/sda3                    485M   33M  423M   8% /boot
/dev/mapper/LVM2_crypt-home  322G  228G   95G  71% /home
none                         4.0K     0  4.0K   0% /sys/fs/cgroup

$ sudo rm /var/log/openvpn.log
rm: cannot remove ‘/var/log/openvpn.log’: No such file or directory

$ ls -alS /var/log/ | head
total 5521688
-rw-------  1 root root 5636743168 Mar  6 14:21 openvpn.log-20150306_%H%M
...

$ sudo rm /var/log/openvpn.log*

$ df -h
Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/LVM2_crypt-root   20G   15G  4.3G  78% /
...

따라서 중요도가 높은 순서대로 3가지 질문이 있습니다.

  1. logrotate타임스탬프가 잘못된 이유는 무엇 입니까? 즉, 왜 openvpn.log-20150306_%H%M대신 생성됩니까 openvpn.log-20150306_1421?
  2. logrotate지시에 따라 @100MB를 회전하는 대신 5GB 로그 파일 세그먼트를 생성하는 이유는 무엇입니까 ?
  3. 이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

답변1

이것은 매우 광범위한 질문입니다. 나는 이러한 문제 중 일부를 해결하려고 노력할 것입니다.

설치 후 cron 형태의 상황을 통해 매일 logrotate가 호출됩니다. Centos 7에서는 /etc/cron.d 파일의 daily 항목(0daily)을 통해 호출되는 /etc/cron.daily에서 logrotate 호출을 찾을 수 있습니다. 물론 매시간 실행되도록 변경할 수도 있고, 루트 crontab의 특수 항목에서 logrotate를 추가로 호출할 수도 있습니다.

매뉴얼 페이지를 보면 날짜 형식에 "%Y %m %d 및 %s 지정자만 허용됩니다."라는 제한이 있음을 알 수 있습니다. 따라서 귀하의 사양 질문입니다.

생성한 회전 파일이 매우 커서 하루 종일 분량의 로그처럼 보입니다. 이는 데이터가 동일한 파일에 복사되므로 사양 오류로 인한 것일 가능성이 높습니다. 압축은 현재 순환 주기 이후의 주기에만 발생하므로 기본적으로 두 개의 큰 파일이 있을 수 있습니다. 24시간 동안 새로운 logrotate 파일이 생성되지 않기 때문에 압축이 예상대로 작동하지 않습니다.

마지막으로 주목해야 할 점은 이제 일부 경험적 패키지에 기본적으로 이 작업을 수행하는 logrotate 스크립트가 포함되어 있다는 것입니다. 이러한 항목은 일반적으로 단일 logrotate.conf 파일을 사용하는 대신 /etc/logrotate.d 아래의 파일에 배치됩니다. logrotate가 기본적으로 실행되면 이러한 파일은 /etc/logrotate.conf의 "include" 지시문에 포함됩니다. 이 include 지시문은 내가 지금까지 알고 있는 거의 모든 logrotate 설치에 존재합니다.

관련 정보