- 积分
- 16844
在线时间 小时
最后登录1970-1-1
|

楼主 |
发表于 2023-3-23 15:30:26
|
显示全部楼层
Rsyslog系统日志管理5 `0 P) b% f( a0 o# P9 i
课程目标
) h0 A# p- Y& Q# ?# Y( s3 d, B# u- q, f7 A" o4 d, \* g
了解日志的级别与作用$ m3 A7 l3 J1 h' }+ U' e" ], s
掌握 rsyslog 服务的本地日志和远程日志的管理
8 D& v" C1 Q8 ]3 ^- _能够使用 logrotate 程序根据需求对日志进行轮转
3 U, ]: |7 p( @一、常见的系统日志
! z- [# e6 g6 m, j日志格式:文本日志/二进制日志/数据库日志- |: R8 F1 L0 ]( t
默认的相关日志文件:( I S0 F" v1 y" K: s: }
/var/log/boot.log 系统引导日志,记录开机启动信息
2 P5 w. i$ F" T8 d3 R8 M4 O/var/log/dmesg 核心的启动日志; d9 E! O7 p- x2 ]
/var/log/message 系统的日志文件* A) a6 _/ {% w# \) `) P6 R
/var/log/maillog 邮件服务的日志& q( |: g& J5 W
/var/log/xferlog ftp服务的日志* m% n" F8 B U& M0 o+ \8 ~
/var/log/secure 网络连接及系统登录的安全信息
( @8 T0 U) ?5 k$ n7 f1 B/var/log/cron 定时任务的日志
, g# K# X2 v9 C8 V$ q/var/log/wtmp 记录所有的登入和登出 last -f 查看/ A/ t: ?3 ]( ^1 z
/var/log/btmp 记录失败的登入尝试
) ^8 c9 p' h5 [- D二、日志管理程序
% R0 R( s6 T1 ~8 v' e, O: V7 f在RHEL6中,syslogd已经被rsyslog取代,它可以将日志写入数据库,并可以利用模板和插件控制输入输出。
) M8 ]$ T3 _. F: s( o* K* ursyslog程序管理本地和远程日志8 @5 Y: z8 {! C7 t) G! t) K
安装软件2 R0 F2 g$ q. o" ^* ^ A
根据需求修改配置文件' S5 Y6 Y/ k; t! }
启动服务
' v# l% N/ B9 X+ `% H$ \1 ?4 C测试验证
, V9 a; E: ` E4 n$ B三、日志级别
5 z2 E4 V5 Y2 p# ^. v# k# man syslog$ z3 i; J- L0 }( ^/ f2 O/ r
日志信息分为以下级别,从上到下级别一次降低( x8 L; A4 R8 l8 O7 R- A9 m
none none不是一个等级,它表示不记录服务的所有信息
R3 ^0 A5 }6 Z* O8 C0 emerg 系统不可用
/ s- V' ^3 l# M6 v. J1 alert 特别留意的报警信息* [. V4 ?* P3 i
2 crit 非常严重的状况
& R5 d. W* H& m, y0 D3 err 错误信息
$ s! J1 b% {7 s- x6 y4 I4 warning 警告信息' d9 ?9 j) \* R
5 notice 稍微需要注意的信息; `% L. d+ U4 ~
6 info 正常信息
1 `6 T, [+ ?7 U. W& X7 debug 调试信息,开发人员使用& [! n; p; E/ @. \% V! z3 p
* o: b+ {- M4 q3 {2 M3 a
四、日志配置# W" q3 z( j: U* v
[root@server ~]# rpm -q rsyslog
! T# Q2 o: d+ H) Krsyslog-5.8.10-8.el6.x86_64
1 m! U6 t; ^8 N8 I. n[root@server ~]# rpm -ql rsyslog
" C* l& b0 w' f o# J3 Z8 L7 A/etc/logrotate.d/syslog
6 I7 o+ ^ }2 [; M6 c5 X. v/etc/pki/rsyslog
1 C3 |, d+ X. ^7 t- C/etc/rc.d/init.d/rsyslog //启动脚本
5 ]. N; W2 U/ U. y2 V( \$ \5 C/etc/rsyslog.conf //主配置文件, q6 o( u# D% C5 @/ [) C; X9 ?" Z9 h
/etc/rsyslog.d //子配置文件) w7 _( a* L) r; |5 S; y
/etc/sysconfig/rsyslog5 B4 |8 G; u1 d( W3 n
/sbin/rsyslogd9 M; s' s$ ]/ A; e; T6 s
/usr/share/man/man5/rsyslog.conf.5.gz
; E2 F" F' Z- G% U! q7 r& q E/usr/share/man/man8/rsyslogd.8.gz
. S- R8 A4 ]0 d- u) Z* ^ I: X8 ]
: }. D. C) Y- t" M# k% v[root@server ~]# grep -v ^# /etc/rsyslog.conf
7 F# u, q4 m0 H6 Z* K6 P- K. s1 Z$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)) ^" O. ^% Q' t+ `, x1 A
$ModLoad imklog # provides kernel logging support (previously done by rklogd)+ i$ P9 s, {% D' x0 w* ^
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat+ \7 @$ C1 a/ k% E( k4 g8 r
$IncludeConfig /etc/rsyslog.d/*.conf' o( e; Z5 k2 ]8 w# @
( I. i8 I U/ n: q+ F# D*.info;mail.none;authpriv.none;cron.none /var/log/messages0 a( }% H$ z( Z( \( ^2 O8 x) Q( v3 H
1 V ?/ S* n! Q% J
authpriv.* /var/log/secure
h- ^9 H: t4 \$ P' A9 Q
- p; B9 A% x) p7 wmail.* -/var/log/maillog- b$ t8 Z4 N8 e
' _/ O& d# q& m7 R
/ v- G# f# L: p. G s8 j4 H1 H' R
cron.* /var/log/cron" r' h6 C6 l1 M8 O) P( ^5 m
2 j! e" ~+ ^1 b6 J*.emerg *- j2 h/ ~0 \7 l( F! h- P0 q
* k+ \6 r7 m! k2 z* I: |# R9 R: fuucp,news.crit /var/log/spooler$ H- u5 D: u5 U5 L" e5 B
( O( u) [& E) H+ Q4 s
local7.* /var/log/boot.log
8 ~% F: c! S1 L& R$ }
7 a: Z) T3 ~ W" c$template SpiceTmpl,"%TIMESTAMP%.%TIMESTAMP:::date-subseconds% %syslogtag% %syslogseverity-text%:%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n"
4 M l8 P8 s1 Y7 v8 X" V* e" N7 R: W: T
:programname, startswith, "spice-vdagent" /var/log/spice-vdagent.log;SpiceTmpl E# g, u. I1 E
! `+ t/ u' A9 k
1.日志定义相关符号
; u( k- A# L# u. t# @配置文件中常见的表示符合& e; a1 N" y! v6 H8 D( A
. 用来分隔服务和级别
- P0 G8 l8 E! c, ~. B3 n* 任何服务,或者任何级别
+ i2 B2 e8 g7 N0 c" U= 有等号表示等于某一级别,没有等号表示大于或者等于某一级别
) A% d K9 @" f/ f% o! 排除操作,前面有相同服务的表达式,这个操作才有意义 ^' V. N0 N6 J, Q9 K
代表从前面表达式所包含的内容中排除某些内容
# [ `; r3 W! f+ Y( h; 用于分隔不同的 服务,级别,组合
5 p1 ^) l1 M% L9 ~% Z' ]$ P, 用于分隔不同服务
# o* X( k( o+ b' K% R1 s- 用于指定目标文件时,代表异步写入7 R. ^5 M: ]+ }
" o, u0 _5 }) i* E+ f. V- B- I举例说明
Y. v7 ?$ y8 N; g7 J4 }mail.=info
& U9 A9 w6 c; G) n: email.info mail服务大于等于info级别的日志
/ {3 J; R# B2 j% {, M+ ~' y) y, wmail.info;cron.=info /var/log/test.log2 w! l( V4 E( ~( \6 m. K7 s9 I
mail,cron.err" Q- x: o& Q7 X1 [0 E/ V; O
cron.=warning. A$ }( c7 Y" n% d
mail,cron.info
( ]- e# K$ _# K6 S0 ^% z" J# O
2 n3 N, q* u' g$ j$ v; a' ~) ycron.info;cron.!=err 012456
& Y7 a3 x( A9 c! n) q$ r0123456 01245674 m6 G+ l; p. v+ \
cron.info;cron.!err 456
/ R( h2 {# a7 D0123456 4567
$ X# D; a3 Y" Y" Z& y5 P1 C( d1 s( M
特别说明:0 i* y4 L$ C3 C2 V$ G4 A. g/ E2 F
The facility is one of the following keywords: auth,5 k5 C' W' ]) j) N; q
authpriv, cron, daemon, kern, lpr, mail, mark, news,
6 N( U& b: m* G1 Y0 \. s security (same as auth), syslog, user, uucp and6 |$ O! o. T% W6 V: D7 h/ E$ O, j
local0 through local7.(设备载体)7 T7 g7 B( B4 M0 A
log facility 设备 设施:用来记录一种类型日志的日志设备
0 K! G6 _* @; U6 W* P* [4 M: a7 R i
daemon' W7 m4 c2 ~3 u% x- w4 K
auth9 T9 E/ k/ s9 e: C& c. M3 U
authpriv. }& E+ t% C( I. J1 s, U
user
& ?$ ?4 w. h' W- S& P: F9 _' D$ amail: O8 U7 H3 E+ N/ g3 k! c$ c! L
lpr! ~) e0 u3 d# F; M6 e
news
0 _* H, j% w4 s: D. ]uucp* P, @0 H; m0 W: X4 ?" b/ `
ftp- b4 O6 S s; M6 i$ S" d
local7+ R( j& S, i, Y: a
. X0 b0 O7 z* O8 ~
' Z- w: y% p8 L/ A- Y: n! G本地日志管理ssh
+ v( F; I- T/ D) D! ]; R8 F8 m* g; }+ t% v, P2 @# @
[root@server ~]# man sshd_config
- q/ e9 W5 e, Y5 @' W/ o/ G! b SyslogFacility
* b7 M# i( M) e- E Gives the facility code that is used when logging
7 }1 o) {9 G3 k. a4 `$ V; b% Q. m4 m: V messages from sshd(8). The possible values are: DAE-
$ Y" V3 I5 d- a1 |5 f8 \ MON, USER, AUTH, AUTHPRIV, LOCAL0, LOCAL1, LOCAL2,
# f. e2 m- x1 n6 r LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7. The default
+ x, c& \; V4 K1 G is AUTH.7 z, B( u' ^% o6 x# Z3 x9 f8 o# w
更改ssh服务的默认日志记录载体
: e' \# s! F, B/ A% ^通过rsyslog程序去管理来自指定设备载体的日志记录到指定的文件(修改/etc/rsyslog.conf)
3 B7 U1 ^' G. q0 R- _: e3 U% u) e r测试验证( }* J4 R2 N2 S5 V3 Y. h6 B3 T: |
1.修改ssh服务配置文件
' W3 b5 c0 p) E+ X# N' s[root@server ~]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
6 w! R5 h0 R0 j[root@server ~]# vim /etc/ssh/sshd_config
3 Q- P- B2 O! Y, BSyslogFacility LOCAL6/ h* w. G# z( Q7 ^/ L3 d
2.重启服务; W# g! |9 D7 h# G1 S
[root@server ~]# service sshd restart6 e; m: \6 O7 q1 ]! z @( ~
Stopping sshd: [ OK ]
6 m/ B' ^) u# l! K4 {7 s1 EStarting sshd: [ OK ]
; I* ]# _; e w+ J+ J, P# ]& X3.将来自LOCAL6设备载体日志记录指定位置(rsyslog)
) Z* r- V6 O2 }; t0 t4 R; p[root@server ~]# vim /etc/rsyslog.conf
6 O9 Q. A1 ^% q% Xlocal6.* /var/log/ssh
8 i) o- b& o$ m' \# p Y4.重启rsyslog服务- e3 R/ Y0 L& E2 B( q" _4 F/ ?" {
[root@server ~]# service rsyslog restart
3 Z6 g' I o+ L& S lShutting down system logger: [ OK ]
8 x4 I1 s9 L4 o' mStarting system logger: [ OK ]2 G" L9 e2 r4 A6 }+ N2 {& f+ n4 W; Y
5.客户端测试: o9 p% W$ i; j% ~
[root@client ~]# ssh 10.1.1.2
2 B. }5 M: N$ W1 a& m# I5 ?: l4 YLast login: Fri Apr 26 12:27:33 2019 from 10.1.1.1
0 g- a9 h. t# M9 @[root@server log]# ll ssh
) {; O; }: A7 w" w1 N; n" c. l) B-rw------- 1 root root 0 Apr 26 13:40 ssh) U6 p+ n: ?" s
[root@server log]# tail -f ssh$ ^" }, a; u) q* p' h% ~) Z
Apr 26 13:42:09 server sshd[2447]: Accepted publickey for root from 10.1.1.3 port 35951 ssh2
+ N. ^- x3 d& T" z% FApr 26 13:44:10 server sshd[2447]: Received disconnect from 10.1.1.3: 11: disconnected by user+ Q4 g; Z: Y; M; _' W: L* [
此时进行ssh访问,日志会在local6和/var/log/messages里都出现
; W/ Q. B' t( R
) v& m! c9 y' h( c" X. D如果不想记录到/messages,可修改/etc/rsyslog.conf,添加local6.none,则不再显示ssh的日志% S4 y2 s. s9 N$ p! u( s6 B
*.info;mail.none;authpriv.none;cron.none;local6.none /var/log/messages5 D- z4 }* S3 G% t$ H: a+ ]1 w
" v Q$ Z2 W6 i, W6 j" j( V五、远程日志管理
$ ~3 w9 O5 _$ U, z) W; J# }8 k; N目前:把多台服务器的日志远程记录到其中一台日志服务器集中化管理,方便对其统一分析和管理
. ^1 f6 Z, J# T. A% q0 a1 h* r+ _2 x6 M4 O# ?
环境:
( d; r7 A O& `6 }9 P. X7 o' b
5 T' v5 c( J3 t7 O8 }log-server:10.1.1.2
7 v$ v# J) Z: J# x0 Y' \7 {$ g. a e+ |/ K
应用服务器:10.1.1.3: O0 g+ O- W H$ K' J9 w
. }3 ]- A* z/ K0 X
ssh服务服务——>其他人远程访问该应用服务器产生ssh服务日志——>远程记录到log-server上
! g# f3 R9 {# o
- J" \. t+ Q4 X6 Z' Eclient:10.1.1.4
5 U; V9 t# l' ~! D3 B8 x$ g6 b; p4 z# v0 s$ ?& q. e! g8 S& k" `
ssh:10.1.1.3——>日志记录10.1.1.2
2 H: f$ I$ l& ^! B+ M+ u# O
+ i1 \# `4 R/ {( t0 m) l. }需求:把web服务器上的ssh服务日志,远程记录到log-server上
! S6 w1 V. r( Y M5 q4 `( s# |( u& q
思路:
2 ?; _2 Q4 {4 m, s, N
1 t5 E" j- L1 `web应用服务器上操作$ J4 _& _8 X: _$ `: t
1 y% O, B& B( r9 n& Y
将web服务器上的ssh服务的日志单独记录2 w9 _* ]5 ^( O
指定ssh服务的设备载体" f1 d- D' x9 e8 F5 |
重启服务
6 i' M, S7 |% q, j( N" i; {将来自于ssh服务的日志设备载体上的日志远程发送到log-server上
) O' S* Z6 `9 J/ M" k3 n2 @以下操作在log-server上操作
2 {2 `1 n) O8 @* ~
) S' ]2 t/ K2 A通过修改配置文件,打开日志传输端口
3 E% D; f# p4 I( y1 o0 t加载相应模块 tcp | udp
! C# f3 u. R7 @. ~打开接收端口 默认514端口" h1 A: E" c6 y* u# H! q T
启动服务后日志默认会保存到/var/log/messages
6 m: d) s; D$ D步骤:3 r; H$ v8 w' S, Q7 n0 i' N
. ]; s, C8 `+ X7 H; U
以下操作在log-service(10.1.1.2)服务上完成
% M# a+ O0 c# {0 o3 X1.加载相应模块打开接收端口(可以选择udp、tcp都打开)5 Z& M+ I' O) U6 ]6 d
[root@log-server ~]# vim /etc/rsyslog.conf
* l: z" e0 |/ w# Provides UDP syslog reception
. Z7 l6 B% M8 e% i, Y2 n- x$ModLoad imudp
# j/ [/ M3 {3 |8 q1 u' P$UDPServerRun 514
) b- T# M6 G( [$ z
* D6 o0 V9 J* f* [( o# Provides TCP syslog reception
2 j* i9 |5 n9 @7 M# h* l2 i' o: j$ModLoad imtcp
* |9 B! L3 E% F0 C; O$InputTCPServerRun 514
+ k0 r7 |4 z1 G4 H, o: E$ ]2.重启服务
% X! y3 S; W& m4 pservice rsyslog restart. @3 J* H3 [2 b6 o2 W6 u( _* D9 G) z
[root@log-server ~]# netstat -nltup |grep 514 //验证端口是否打开
/ F. P3 |6 _0 |$ l% mtcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 2822/rsyslogd
+ i2 Y0 }" C8 |1 \7 J" j Dtcp 0 0 :::514 :::* LISTEN 2822/rsyslogd
7 d4 E. M+ W$ H6 P) v* U& c: @8 Yudp 0 0 0.0.0.0:514 0.0.0.0:* 2822/rsyslogd $ D: d4 \" s( H4 q: A- ~8 q
udp 0 0 :::514 :::* 2822/rsyslogd
+ t: B! C- h! `1 O. V6 |! |3 B. F( S6 ^; `& V6 N( q9 A
以下操作在应用服务器完成(10.1.1.3): x- k% I7 [* Y+ M. k' ]; B
1.指定ssh服务的日志文件的设备载体
: [+ J g4 e# ?[root@ssh-server ~]# vim /etc/ssh/sshd_config
; A. o s: j9 o& vSyslogFacility LOCAL0
0 c' D8 b4 y9 ?8 o7 w/ Z9 s2.重启ssh服务) v K3 R4 N6 V4 e/ E
[root@ssh-server ~]# service sshd restart+ H; ^7 N% X8 ~. R
3.修改/etc/rsyslog.conf来指定ssh服务的日志发送到远端去
. B* n* _" m( w2 j[root@ssh-server ~]# vim /etc/rsyslog.conf ; I4 [$ A4 J. q C) s# l$ P$ }0 T
$ L3 `& ?& v8 c$ e+ h$ \6 z8 N
# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional0 }) m( w6 v. A, o1 p# f7 p7 R, T
#*.* @@remote-host:514
+ |* H4 Y' D& J" n% R2 M& X; |7 p$ z3 |$ ?
local0.* @10.1.1.2:514 //一个@表示udp,两个@表示tcp
0 t: x7 ^$ f) c4 B最关键的一步,将日志远程发送给10.1.1.2
) J6 f' M. O6 j* r5 e1 s$ u9 j. e; M# Y @- Z! n
+ D& k9 Z7 q- _ v" X: N
4.重启rsyslog服务7 |6 b0 V9 J. |6 G/ m
[root@ssh-server ~]# service rsyslog restart" v `, T0 |) G$ _% N7 j/ }
Shutting down system logger: [ OK ]; j& D* A! N9 `; J+ X5 \% L
Starting system logger: [ OK ]; Q- a C/ \ ?
! p& E& U5 Q7 S8 m* q8 B: _
测试验证(client:10.1.1.4), l8 o- c* k$ j! Z! u/ R
[root@client ~]# ssh 10.1.1.3
! r) h3 B4 W6 t! T2 m: i4 a2 a) gThe authenticity of host '10.1.1.3 (10.1.1.3)' can't be established.
/ E# q+ X U3 |/ D1 O* }3 KRSA key fingerprint is a5:98:06:58:84:35:d3:f4:4c:f8:43:a1:a5:12:f5:8e.
5 J/ j* _; w, ~$ J, aAre you sure you want to continue connecting (yes/no)? yes
8 A* L; ~( U2 `- |& u& NWarning: Permanently added '10.1.1.3' (RSA) to the list of known hosts.
1 K7 D4 X @8 i( e2 croot@10.1.1.3's password:
! q! I3 J# z" A4 y# NLast login: Fri Apr 26 14:46:31 2019 from 10.1.1.1
: z* E( D1 `. N' C$ ?4 C( Y' z" j5 r2 l# R" x, T' t
[root@log-server ~]# tail -f /var/log/messages: `9 K( v6 Z) E' @; i+ i
Apr 26 15:12:30 ssh-server sshd[2858]: Accepted password for root from 10.1.1.4 port 58561 ssh2+ T5 a! ~ e- @' [" t. i
[root@ssh-server ~]# tail -f /var/log/messages
' o4 w i4 Z8 KApr 26 15:12:30 ssh-server sshd[2858]: Accepted password for root from 10.1.1.4 port 58561 ssh2& w: g; ?$ \6 U+ Z# j
(不想记录就修改/etc/rsyslog.conf,将local0.none加在/var/log/messages那行里)
' c4 g+ S/ `. E, a. ? ~( r# r5 O9 G
注意:selinux和防火墙,还有udp和tcp 端口514是否打开1 x+ P$ B) @) @* C% I9 O: m
+ i8 j8 c6 p3 S( n7 }' g6 s
六、日志轮转0 \' _/ T/ M% C+ |
日志轮循(轮转):日志轮转,切割,备份,归档. Y- ]8 e! p, m9 b/ B2 ~6 m
( ^2 x) Y2 f. p- {) _( w为什么要日志轮转?$ A; }2 H$ {+ ^9 H3 [; Q
避免日志过大占满/var/log的文件系统& C' R! u4 N. j. K& b _
方便日志查看
0 Y* ]$ w; ?, U- F G5 D7 q将丢弃系统中最旧的日志文件,以节省空间& A! `5 z9 I* U- D, H
日志轮转的程序是logrotate
7 g' Y! A2 r3 L6 m& [' klogrotate本身不是系统守护进程,它是通过计划crond每天执行
^: c7 Z8 [! m) F如何进行日志轮转?$ F u5 A: E/ y$ U
了解相关配置文件
) a$ }$ Z3 u/ i. k/ b T7 e[root@log-server ~]# rpm -ql logrotate% W; J7 c9 b- n6 Y
/etc/cron.daily/logrotate 周期性计划任务
# q% o" D- t/ b& Y" [) o8 N/etc/logrotate.conf 配置文件8 `( p7 ^ B9 N0 I; G' X
/etc/logrotate.d 子配置文件存放路径. o5 g8 D( g7 H5 D
/usr/sbin/logrotate
. i/ N8 E( k6 P" X* z/ _/usr/share/doc/logrotate-3.7.8
( j, _) a( ^) H$ J* e/usr/share/doc/logrotate-3.7.8/CHANGES
$ M/ J/ b0 f0 N& g$ l5 r! A/usr/share/doc/logrotate-3.7.8/COPYING
5 |7 T' N* p! `- a/usr/share/man/man5/logrotate.conf.5.gz3 q" V; I$ N* L$ C8 _$ x& C6 W. z/ d3 }
/usr/share/man/man8/logrotate.8.gz
0 b3 n6 b; B) d& q% L/var/lib/logrotate.status8 _! G8 e$ B: q. i8 {1 R) o
3 {! A% \2 A, ^1 {4 @1 l; _3 i6 W6 B
[root@log-server ~]# cat /etc/logrotate.conf! ~# e! ^" m! x/ t
# see "man logrotate" for details
. F4 V. k' @. h& R3 c# rotate log files weekly
) y% [7 h5 z" J" `2 [* wweekly
2 ], X/ v$ o+ m0 q, h5 U# d% l' z1 B3 T' W: y+ Q- }1 \
# keep 4 weeks worth of backlogs 保留4周备份日志
8 i) Q/ b& p+ u; B8 Trotate 41 j" A0 I6 Z" Y( M2 z- O/ r$ X
, ~! d) y" s; J
# create new (empty) log files after rotating old ones. K" T1 s* m& V5 ?$ A6 z& j' w
create
5 E6 {) J* Z+ |$ I5 D" N4 H: V% `) h& M0 n
# use date as a suffix of the rotated file 日期作为后缀给旧文件重命名
5 V3 n6 v+ B# O9 Y0 k4 bdateext
" E! B5 J# A' G$ c& D
* d& }3 x+ I0 j" Q/ L$ v! p! Y9 z# uncomment this if you want your log files compressed/ k3 J- _3 k3 u
#compress+ @% \& k( w5 Y+ R W' c0 B
& q& Q7 C. P% E M# RPM packages drop log rotation information into this directory
3 s/ ~- J8 w+ d7 kinclude /etc/logrotate.d 加载外部目录* _; [( y2 h# v3 q* f2 V
7 _# N$ _5 S& i3 i Y N
# no packages own wtmp and btmp -- we'll rotate them here
8 v, F$ S7 y) j$ W0 V/var/log/wtmp {# ?0 v" N% I9 d; }* @4 W4 K
monthly6 v+ d) f2 q0 g7 {+ c! C1 B5 @2 Q
create 0664 root utmp , p1 F6 v+ k) _; J1 |+ c: L
minsize 1M( `6 R4 x% b9 ]- i
rotate 1 保留1份日志文件,每一个月备份一次日志文件
+ A. f4 a! ]6 B1 ~' y0 r}
" ]: i' y5 |" V! J: y1 M& U9 H H+ o g- U0 W, E8 V8 N0 J
/var/log/btmp {; E# H. m/ c. e' T8 x+ {
missingok
" r8 H n5 z4 S5 r+ m; N monthly: @2 c# U, v% x; C) ?
create 0600 root utmp
3 l) W4 H- l7 g& p; s& V* b% @ rotate 11 z& d4 ]' F3 D% g5 V2 y
}
8 j3 j: H @5 m# y
$ v8 o9 ^! s- ^+ [# system-specific logs may be also be configured here.
9 U1 T7 E' |8 I4 `4 g
3 m' I4 g- i- [* a0 C- `常见的一些参数:
" K: t0 c' \% P1 I4 l N/ ^daily 指定转储周期为每天
8 M; s" E! `6 Q0 z; W: O7 qmonthly 指定转储周期为每月
; q! o) M+ e, u7 h7 {weekly 每周轮转一次+ K0 ^$ F& r3 c1 P
rotate 4 同一个文件最多轮转4次,4次之后就删除该文件$ ]6 [8 v8 L" y* e# G9 H
create 0664 root uttmp 轮转之后创建新文件,权限是0664,属于root用户和utmp组! v& f1 h: a ^+ f# b
dateext 用日期来做轮转之后的文件的后缀名& J& L9 L: e4 H5 B& b
compress 用gzip对轮转后的日志进行压缩/ Z3 o: c( G) |% r
minsize 30K 文件必须大于30k,且周期到了,才会轮转
5 O. s6 u5 v d$ Y1 wsize 30K 文件大于30k才会轮转,不论周期是否已到
: o( J. }4 L u& [5 R$ Xmissingok 如果日志文件不存在,不报错
- r) f! ^- ]- o0 Anotifempty 如果日志文件是空的,不轮转
5 d7 N" E3 V, O4 i2 C5 [delaycompress 下一次轮转的时候才压缩2 h" F8 Z: q: |6 A# p1 h6 s
sharedscripts 不管有多少个文件待轮转,prerotate和postrotate代码只执行一次! o4 `9 s( n" e Y9 m* p" i
prerotate 如果符合轮转的条件,则在轮转之前执行prerotate和endscript之间的shell代码
1 U" C$ }, y' x+ mpostrotate 轮转完成后执行postrotate和endscript之间的shell代码
& c8 A/ Z# N! _1 Z% s1 `0 V# e: K# b
[root@server~]# cat /etc/logrotate.d/syslog
% G( @, _; q. a& f2 y# K9 C这个子配置文件,没有指定的参数都会以默认方式轮转
?+ V J1 {* f# {/ V/var/log/cron: o4 [( O6 K. t! @" _% b. D
/var/log/maillog* ]' i; N c0 N2 o$ g+ U$ e; ^* T
/var/log/messages+ j" G# E" t j
/var/log/secure: f/ X8 I. ~" p+ p% c# l$ D: ~
/var/log/spooler
" d% _7 Y6 N* o6 Y{4 [7 Q5 l9 M0 J" ^
sharedscripts 不管有多少个文件待轮转,prerotate和postrotate代码只执行一次
, K% z6 j% x1 C* {" z2 A postrotate 转换完后执行postrotate和endscirpt之间的shell代码
! O4 ]6 X# V$ r; x" A5 x% |3 V /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true* P6 f; t- |8 \, B
轮转后对rsyslog的pid进行刷新(但pid其实不变)+ N9 S/ ^* z6 `$ u# C0 \1 u1 a
endscript
4 @) [; |4 m* _' _}
" G; K& R: o' V# g9 Q思考:为什么轮转后需要对rsyslog的pid进行刷新?
' |3 j/ M- \" v, Z* U% jll -i 查看文件的inode ) n2 F; N) O' m
-HUP 平滑重启
. k+ J" v" W3 w3 l- J
7 P3 R3 Q% Q" t+ D- f) @: C2 A, h, E/ ?
! E" K# }! W* r7 Y/ n( i
0 a4 e# d+ k$ o7 C6 T: m8 s( c4 W* d$ B0 W
不以时间为后缀进行轮转,在/etc/logrotate.conf/ nodateext
+ P* N3 k J b
4 ]4 y: B5 ^! p4 ^" T1 m% O清空环境
' ~) }2 Y2 X# G
- g$ \* Q+ s: ?重启服务
/ ^: f2 |6 A' z2 u2 R. W% F9 b" `2 j* p+ v3 \
# {8 _% i2 S# [7 L/ \8 r
5 z) _/ a- A& A0 P
8 m$ y3 u- g+ k" P2 T8 W% F. @! g3 C0 P, p( J3 x
结论
8 S) U3 y% a3 u' f$ @0 R. M- J2 M: ?8 o1 @$ W/ u' D
后刷新pid的话,logger -t "呵呵" "再见!"会写入旧文件(messages.1)里面- m( m# d/ I1 F6 g* O, l; O
- Q# K8 \( B; _' X/ L
将这句话放在/bin/kill这条命令后面,会写入新文件里& |/ I9 h7 l( q8 z" j* B
$ m4 }* c) s0 e* w
最新的文件是messages,第一次强制轮转后的旧文件是messages.1,cat messages.1会看到logger -t "呵呵" "再见!",到第二次就成messages.2。而第二次轮转后的messages.1成了第一次轮转后的messages的老文件。(看时间区别)
: w+ L+ O- O$ C9 U( E: j6 `' M$ n8 m/ T9 t1 U
|
|