요약: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
}
즉, 내 의도는,
cron
매 시간마다 실행됩니다logrotate
./var/log/openvpn.log
100MB보다 커지면 ( 프로세스를 허용= 원본 로그 파일에 계속 기록하도록 허용)logrotate
됩니다 .copytruncate
openvpn
- 각 d 로그 섹션에는 format= (명령줄에서 사용됨 )
copytruncate
으로 타임스탬프가 지정됩니다 .%Y%m%d_%H%M
date +%Y%m%d_%H%M
- 각 d-log 섹션은 압축되어 있습니다. 사용하지 않는 것보다 안전해 보이기 때문에
copytruncate
사용하고 있습니다 . :-)delaycompress
- 최대 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가지 질문이 있습니다.
logrotate
타임스탬프가 잘못된 이유는 무엇 입니까? 즉, 왜openvpn.log-20150306_%H%M
대신 생성됩니까openvpn.log-20150306_1421
?logrotate
지시에 따라 @100MB를 회전하는 대신 5GB 로그 파일 세그먼트를 생성하는 이유는 무엇입니까 ?- 이 문제를 해결하는 가장 좋은 방법은 무엇입니까?
답변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 설치에 존재합니다.