|
|
楼主 |
发表于 2023-3-23 15:30:26
|
显示全部楼层
Rsyslog系统日志管理& {6 K+ r6 T# ^5 @' e. D
课程目标9 l& u" \- V/ u3 ~
. G" I; d& v+ }. N4 U3 E了解日志的级别与作用6 @4 P! N: d/ I3 C
掌握 rsyslog 服务的本地日志和远程日志的管理/ k4 d( K* L5 T6 k1 m5 ?0 B& T3 {
能够使用 logrotate 程序根据需求对日志进行轮转
1 \$ X8 U0 l- C* ?9 |6 _, T一、常见的系统日志
0 u# u$ R j+ z' ]/ c3 p5 w日志格式:文本日志/二进制日志/数据库日志
" ^: U/ {. [5 |6 W默认的相关日志文件:& M; h/ b8 Z! o& P/ a& P) X
/var/log/boot.log 系统引导日志,记录开机启动信息+ H0 A, D- d k# B1 A5 ~8 F
/var/log/dmesg 核心的启动日志1 b3 \6 [# s$ O1 k) G% g5 x
/var/log/message 系统的日志文件' m' {) `7 s8 H- l& A2 C
/var/log/maillog 邮件服务的日志' U( r9 G- u5 ^+ O0 t6 R- H
/var/log/xferlog ftp服务的日志! ?9 }. u* v0 j# O/ g* ^4 K) v
/var/log/secure 网络连接及系统登录的安全信息
) D. g$ M$ _" t: }. X- W; w+ j6 R/var/log/cron 定时任务的日志
1 d& h2 v1 H$ Q5 T: i: o/var/log/wtmp 记录所有的登入和登出 last -f 查看2 b( c2 S8 I% t4 ?# c, P7 V. N
/var/log/btmp 记录失败的登入尝试+ m8 T, J1 T- n7 Y8 z, {+ Q
二、日志管理程序
; S* o; J& K5 f6 v$ n在RHEL6中,syslogd已经被rsyslog取代,它可以将日志写入数据库,并可以利用模板和插件控制输入输出。& |! ?3 C5 h3 E: f5 L' a
rsyslog程序管理本地和远程日志 ^6 _, d4 @. L2 f) N- P$ E+ K
安装软件" ]* J+ t7 @7 |3 b
根据需求修改配置文件
) f% h* l2 R) t5 e' z启动服务0 K, O4 ?4 }0 ~1 D
测试验证' F% h0 g2 ~/ ?+ v4 r
三、日志级别 Q& b* h5 y0 R# u8 S* ~. V
# man syslog
. j, D' W: V4 ?5 y日志信息分为以下级别,从上到下级别一次降低
4 f, [) _! @) Z& i$ l+ X none none不是一个等级,它表示不记录服务的所有信息
) ?2 m' ?& v# B# s& E0 emerg 系统不可用* M, M, J0 n% r# O9 X
1 alert 特别留意的报警信息
) q1 i: _( v* e" \2 crit 非常严重的状况
* l3 l1 }1 S4 X0 Q% J3 err 错误信息
0 b$ E1 g, d, T: L5 X5 {) ?4 warning 警告信息
$ T8 L. g! n( z7 D5 notice 稍微需要注意的信息
7 g% }5 E `( P/ H, T$ n( ?6 info 正常信息
8 l5 b; c( v" W; _2 y7 debug 调试信息,开发人员使用
( N/ g1 y* ~# x @+ c b- c. h8 E4 g- d
四、日志配置0 r/ o# l5 w6 W& O: \4 T
[root@server ~]# rpm -q rsyslog
- P" d3 K, d9 R- `% {. ]rsyslog-5.8.10-8.el6.x86_64. \7 j p$ s4 ~' C/ ?
[root@server ~]# rpm -ql rsyslog) C6 g' p0 s/ k8 c1 d
/etc/logrotate.d/syslog: J+ [) t! z. z2 W
/etc/pki/rsyslog - _: M# X" V& q6 }! ]7 U# l
/etc/rc.d/init.d/rsyslog //启动脚本
- I! K" U3 }9 O1 i7 q' a; P/etc/rsyslog.conf //主配置文件
7 W% I' k3 _' ?; i0 n/etc/rsyslog.d //子配置文件& U+ c0 X4 h1 Y% V; P
/etc/sysconfig/rsyslog
: C& l+ v) w* b9 j/sbin/rsyslogd; Y0 R9 W/ Y% G* ^: G$ |) {* u( W
/usr/share/man/man5/rsyslog.conf.5.gz# K2 l5 W6 W6 w4 z% f
/usr/share/man/man8/rsyslogd.8.gz; s. M4 F Y" ~4 M5 t0 {* {3 k
/ y) c* e2 Q" z
[root@server ~]# grep -v ^# /etc/rsyslog.conf : W R' q5 Z; W6 k* d
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
! M" q6 ?$ z8 N# f9 E$ModLoad imklog # provides kernel logging support (previously done by rklogd)
% v/ q! q4 g& Z, s5 R1 m, j$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
+ d7 R: X# D( u: D6 j9 @* d. R$IncludeConfig /etc/rsyslog.d/*.conf8 T& `8 N6 J9 t
& ^* d f1 W0 H3 ]# ^*.info;mail.none;authpriv.none;cron.none /var/log/messages
P* [) c/ n% x# l) I7 D, ?0 d6 S4 P4 _. u O! J! L
authpriv.* /var/log/secure( k9 F* L! e. |+ B: c- Y
* B3 h% R; w5 x3 w
mail.* -/var/log/maillog# H( \% T; b- w
: [8 n2 a$ i Y. ~
/ ]4 r7 N2 b5 g5 a& V: ]7 O" \0 lcron.* /var/log/cron
( x8 c; K8 n8 T3 W8 U; r6 y& v' e ^- I. u. c+ k' c
*.emerg * E" ?1 C8 k2 f2 h y
9 P- p. P6 E# Z% q$ n+ p2 J
uucp,news.crit /var/log/spooler0 d/ S- z' v' |# m1 {
' `6 x2 D. [" Z3 l# g
local7.* /var/log/boot.log ?+ T8 c E; R$ ~: I
' ^% ^7 Q: U9 M v% o2 S$template SpiceTmpl,"%TIMESTAMP%.%TIMESTAMP:::date-subseconds% %syslogtag% %syslogseverity-text%:%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n"
9 L G( h; g& Z! }0 Z- E4 K
0 ~2 X" u; n, x- l3 T:programname, startswith, "spice-vdagent" /var/log/spice-vdagent.log;SpiceTmpl3 w: \- f5 _1 M% A% Y
, C n H/ F2 c: s1.日志定义相关符号
_. a( B; q( Z配置文件中常见的表示符合3 U) t, ?. v" f* d0 k9 W9 G2 b& t
. 用来分隔服务和级别
% f% k! I7 J c* 任何服务,或者任何级别
/ h0 O8 I: D3 d= 有等号表示等于某一级别,没有等号表示大于或者等于某一级别
7 {) _6 ^% D2 c) x6 M, D- _( W! 排除操作,前面有相同服务的表达式,这个操作才有意义
: {! D: G5 [, N6 H6 {" o1 m1 U 代表从前面表达式所包含的内容中排除某些内容$ g$ Y$ C5 p, Y- R3 n, q
; 用于分隔不同的 服务,级别,组合
1 y# s' O! o0 F' s& _3 _7 p3 x, 用于分隔不同服务# C" P" N4 U+ `1 A" X9 g2 e
- 用于指定目标文件时,代表异步写入
, A, Z- k3 w! G/ ^
U: a* e; V# u' F9 Q. v6 N( s9 P, ]举例说明
5 B& q- O: f4 v6 ~/ n- f' ^( Imail.=info) Y+ x( A" p# E: y
mail.info mail服务大于等于info级别的日志( U. P, f8 \% ^
mail.info;cron.=info /var/log/test.log
; ]$ H$ G* R& y% j- P: P4 f$ Lmail,cron.err( L$ r+ I/ K& Z |5 `% Z
cron.=warning
/ V3 p( K7 k3 {mail,cron.info
9 B# I: H3 G3 m5 Q. E+ w
; j$ a g; I! n- X3 mcron.info;cron.!=err 012456
( W# ^; z5 B# d+ W0123456 0124567
& l, `, }' ]9 M# q& p# }cron.info;cron.!err 456. D$ S0 Z, |) w, l6 \
0123456 4567
2 S% x$ w& ?( j) o+ e ]7 J
6 f4 |. r$ t7 q# s) j: m特别说明:( A. c1 I/ U6 |0 h! y- t
The facility is one of the following keywords: auth,9 J4 G! @% x7 y' O3 p
authpriv, cron, daemon, kern, lpr, mail, mark, news,+ E9 Q. ?( C# H& g4 ^
security (same as auth), syslog, user, uucp and4 N& p4 i7 C* G' P
local0 through local7.(设备载体)
( O" @! Z( e+ F* vlog facility 设备 设施:用来记录一种类型日志的日志设备9 R2 f+ x0 h$ N6 f
, b: h: @/ E0 Bdaemon
) P3 i5 A4 {/ m6 ?, Aauth
3 `% M* b& y3 }- Oauthpriv; N. g4 X1 }( L _& l
user. R+ W0 D. u) h# }
mail! e4 j- n7 n6 }2 o% Q- b
lpr
C# Y( w8 ]: [. Bnews
/ |' f8 ]/ N* }1 Z) ^uucp
f2 A5 o( L; u7 { i i, ?) aftp) t& {0 l. [; v( ~8 Y
local7
3 G" ]6 H; C/ ^1 v& ` " V, q( M: R, l0 d( S( s
2 H! @ A" W7 `- r
本地日志管理ssh9 L, M9 B0 u( [
5 d2 z4 w3 e W3 F8 G& I, I [root@server ~]# man sshd_config
- b4 x5 J- o y! I SyslogFacility
o8 Y0 h7 ]# p& l- w Gives the facility code that is used when logging
8 t. \6 O8 k/ i; ~( H6 \2 k messages from sshd(8). The possible values are: DAE-
8 X/ x. R) @- R5 a MON, USER, AUTH, AUTHPRIV, LOCAL0, LOCAL1, LOCAL2,8 o' g+ I6 U) X# y9 _, H" B
LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7. The default
) Y1 `% Z. r( ~' r is AUTH.$ r" n q$ T4 h4 O }% X9 ?
更改ssh服务的默认日志记录载体
! s* @9 k1 Z' |5 u; g" f( e通过rsyslog程序去管理来自指定设备载体的日志记录到指定的文件(修改/etc/rsyslog.conf)* {# k v f4 c! x+ _0 q9 v
测试验证
8 J7 C/ _& p! B! Y1.修改ssh服务配置文件1 y( z0 a9 F# e5 `6 p
[root@server ~]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
+ p/ b$ B. [& P3 H7 B: L# \[root@server ~]# vim /etc/ssh/sshd_config
0 Q' b- b4 Z B; W& i% @SyslogFacility LOCAL6
& y% q; w" Z1 j; j% w0 s2.重启服务: F. |/ r/ K8 l
[root@server ~]# service sshd restart
, q9 U o) B. rStopping sshd: [ OK ]
; A4 D/ o* w: wStarting sshd: [ OK ]/ _+ h9 j* X7 Y; w @4 q: K
3.将来自LOCAL6设备载体日志记录指定位置(rsyslog)6 N- ^& v" {) K% ^% v# o% O) B1 y
[root@server ~]# vim /etc/rsyslog.conf; a" M& \+ u8 o, i2 @
local6.* /var/log/ssh5 W. h' X- {+ }' `) m3 O) l
4.重启rsyslog服务
% m' U/ C* U( d4 e3 \3 a[root@server ~]# service rsyslog restart
2 M5 ]+ `$ r! Q4 J# _* UShutting down system logger: [ OK ]# ?/ n2 `, r0 x. n9 \4 [' ~
Starting system logger: [ OK ]# m4 j3 O$ i6 V- Y- n
5.客户端测试7 ~; s, Q' s7 q3 L; w" F, p: m
[root@client ~]# ssh 10.1.1.2& Y E- M* e* j" P
Last login: Fri Apr 26 12:27:33 2019 from 10.1.1.1
# i% `! {+ a( t" ~) j[root@server log]# ll ssh
/ i- W% w3 w+ h/ A: \3 Q8 o-rw------- 1 root root 0 Apr 26 13:40 ssh w2 a8 u' }8 o3 }+ C6 B% Q1 e
[root@server log]# tail -f ssh( P" [5 g" l! G6 R5 @1 g! o1 @
Apr 26 13:42:09 server sshd[2447]: Accepted publickey for root from 10.1.1.3 port 35951 ssh20 x! b" `/ }5 T; ?$ U8 i1 r. b
Apr 26 13:44:10 server sshd[2447]: Received disconnect from 10.1.1.3: 11: disconnected by user
+ g2 E# @6 o! j此时进行ssh访问,日志会在local6和/var/log/messages里都出现
! F# _/ W1 S* _# X! ?8 w' q p1 b4 N5 B, Y9 N
如果不想记录到/messages,可修改/etc/rsyslog.conf,添加local6.none,则不再显示ssh的日志
3 H" ^/ t2 D6 v*.info;mail.none;authpriv.none;cron.none;local6.none /var/log/messages
3 f/ E+ P' n% H! y, _: m+ ^/ m' \; s* n+ O* V: n. t, I! t
五、远程日志管理
, e9 h3 O( M! b K. |! T# H目前:把多台服务器的日志远程记录到其中一台日志服务器集中化管理,方便对其统一分析和管理
4 Y7 W$ N2 g5 J( P- P$ Q
6 @% i9 }: {5 Q" V/ |& L: o' x环境:& e- T" [' ~/ d
b0 @( p E" V4 M$ e1 v Z* Z' D8 olog-server:10.1.1.2
3 u* H7 U1 ~# D( s7 P
! ]& c% \0 b2 |6 T l应用服务器:10.1.1.3
0 ~2 c0 r1 ?/ ?5 E, l- n3 L& i: I# n5 y& J; j8 @: |* V N
ssh服务服务——>其他人远程访问该应用服务器产生ssh服务日志——>远程记录到log-server上
# o6 j: \! O0 A4 x( {/ k M. Y* S6 f. y- N9 E; u& M& A. o
client:10.1.1.4! W' u! A- f1 G: ~, ]
" [" q! f( z" n, c6 v/ Q
ssh:10.1.1.3——>日志记录10.1.1.2
, l# R. Z# f' A& v4 y4 X1 o |& b. z Q( N4 |9 ^0 [
需求:把web服务器上的ssh服务日志,远程记录到log-server上! d h: [2 m* U2 _
0 F; h5 C" [3 \/ c
思路:
$ f; d7 G1 z+ X R" ], |& h3 ~
8 g. p; Y a' Lweb应用服务器上操作- V: A6 Y, L1 i
* O3 Q ?: y' r" e
将web服务器上的ssh服务的日志单独记录) E, H+ Q$ p6 `( Z
指定ssh服务的设备载体* p: T8 i$ H. H1 [
重启服务) H& J# l0 u& K" K: f
将来自于ssh服务的日志设备载体上的日志远程发送到log-server上 ?6 \+ s3 D9 E) T
以下操作在log-server上操作4 ] p D6 W( |
) I$ Z) j( b5 r( G. D通过修改配置文件,打开日志传输端口
: r. b* @& F+ u+ e) J u0 C4 w加载相应模块 tcp | udp
' _9 [- _/ D% z4 C打开接收端口 默认514端口! E! t# O% P' V4 F+ n" Y0 b
启动服务后日志默认会保存到/var/log/messages' p: P, i j+ V y% f H
步骤:) z, Y7 ]. z( s, n
. q' z. H9 Z5 f7 m* L
以下操作在log-service(10.1.1.2)服务上完成
1 m+ h* d( c8 |* e1 b- S/ X1.加载相应模块打开接收端口(可以选择udp、tcp都打开)9 q6 x7 T! k& O. b& B' w
[root@log-server ~]# vim /etc/rsyslog.conf
" Y' C. H: b$ |: Z' h6 q) k: Y: H* k# Provides UDP syslog reception$ A* f1 K$ R$ G+ i! D& i
$ModLoad imudp* ^4 [7 z$ W& j5 I2 k2 D. J
$UDPServerRun 5141 }/ _' a/ {, h" ]4 B
* E5 x/ I1 t1 a8 I' j# Provides TCP syslog reception
. Q/ }! Z5 @ a5 G, D# J) X$ModLoad imtcp4 i' w0 _4 [) |" ?! u4 J* e
$InputTCPServerRun 5145 [$ A, o+ y8 c/ {+ R
2.重启服务
- k$ k* }( M# [6 }3 eservice rsyslog restart
4 B2 Y! j9 c1 y: B[root@log-server ~]# netstat -nltup |grep 514 //验证端口是否打开
: R+ F- ]6 N9 C+ Htcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 2822/rsyslogd ! O# y0 O- l: v# ]. L4 x
tcp 0 0 :::514 :::* LISTEN 2822/rsyslogd
5 H& h$ i0 m/ g7 j, f2 Ludp 0 0 0.0.0.0:514 0.0.0.0:* 2822/rsyslogd + y$ D5 J, B" E4 f
udp 0 0 :::514 :::* 2822/rsyslogd t/ e3 E0 m& }) y/ M( t
b: t. l3 U2 \以下操作在应用服务器完成(10.1.1.3):5 s8 t0 ~8 F" W, v8 Z9 M
1.指定ssh服务的日志文件的设备载体
2 Z7 Z* L! q5 i% h1 F[root@ssh-server ~]# vim /etc/ssh/sshd_config % p( t6 H- E9 x* X# e1 I/ I& l' f
SyslogFacility LOCAL05 U+ o2 p; T7 o' |0 X9 O
2.重启ssh服务
( l, Q9 \1 y* @9 m1 x[root@ssh-server ~]# service sshd restart2 h( Y* l1 q8 e/ c* z1 Z& m# B
3.修改/etc/rsyslog.conf来指定ssh服务的日志发送到远端去
: E9 X. z6 Z5 a) h+ c[root@ssh-server ~]# vim /etc/rsyslog.conf " w) M& s( W' y# K
. P% f3 A+ U. e" Z/ r' z
# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional$ [4 R0 H- n+ r! r
#*.* @@remote-host:514) m- a: n& U& g# Q+ f
( t" V) G, j& a0 d o
local0.* @10.1.1.2:514 //一个@表示udp,两个@表示tcp % [' E+ S5 I g! C! ?' S) _
最关键的一步,将日志远程发送给10.1.1.2
* G1 Z: T. ]( B$ S% H& p* O4 m1 ~: p* O( Z8 V
8 k4 {& f9 A/ o6 Y: d* U4.重启rsyslog服务
# q/ U& P% L! s5 y) V9 M' {3 {[root@ssh-server ~]# service rsyslog restart8 L ~; s; X! ~! T7 I) e- u3 {
Shutting down system logger: [ OK ]
4 i3 a! O, ]5 z5 b; i U7 A9 zStarting system logger: [ OK ]: W- y7 F* @3 f, {3 u5 X& M
. A8 l+ k3 a* `1 b' a
测试验证(client:10.1.1.4)
) l$ U; g+ f0 n3 E# h4 Z0 J. x[root@client ~]# ssh 10.1.1.3& B# L' I- Q* h: Y
The authenticity of host '10.1.1.3 (10.1.1.3)' can't be established.
% k+ e( j2 p; }RSA key fingerprint is a5:98:06:58:84:35:d3:f4:4c:f8:43:a1:a5:12:f5:8e.
! z# K" h1 K( K, Y) u# d8 ]Are you sure you want to continue connecting (yes/no)? yes8 R1 s1 N6 Z! K$ x
Warning: Permanently added '10.1.1.3' (RSA) to the list of known hosts.
; R9 \2 {. Q1 I3 P# v) Q3 P8 @root@10.1.1.3's password:
+ c7 h; V, K) ]6 c8 wLast login: Fri Apr 26 14:46:31 2019 from 10.1.1.1& C5 E( F4 d( \2 l: M! b
0 @1 a, M0 ^; T( Z/ ?+ ~
[root@log-server ~]# tail -f /var/log/messages
" g# j+ J2 b" B0 s) ?3 sApr 26 15:12:30 ssh-server sshd[2858]: Accepted password for root from 10.1.1.4 port 58561 ssh2% H4 X! v& _2 I# G7 L) _" a
[root@ssh-server ~]# tail -f /var/log/messages1 V) S: U, d" C+ Y+ T4 k6 `9 t% l8 Y
Apr 26 15:12:30 ssh-server sshd[2858]: Accepted password for root from 10.1.1.4 port 58561 ssh2" }! `" J2 q! ~ v* p
(不想记录就修改/etc/rsyslog.conf,将local0.none加在/var/log/messages那行里)' p5 E9 b) Z! H; C2 l
' T; @# [8 C2 x% z$ ^
注意:selinux和防火墙,还有udp和tcp 端口514是否打开
6 Q5 _# {7 _+ e5 u. ]0 J! U, I. z' L3 f! y# @ n6 @: \2 R
六、日志轮转$ h4 t' b( i& ?2 _. o6 M
日志轮循(轮转):日志轮转,切割,备份,归档% A$ g [( k. q1 Z+ B8 ?; q
) K" R6 i. Z8 U2 G# d) H( N' c
为什么要日志轮转?5 r& B. N9 \- l
避免日志过大占满/var/log的文件系统
: O/ ^2 J$ Q: }7 o% }$ T6 U& V. O H) Q方便日志查看
' q1 G" m" x4 o9 [将丢弃系统中最旧的日志文件,以节省空间
, V6 s2 g/ Z9 m5 r日志轮转的程序是logrotate+ k. U7 F$ c1 b! {: m2 ~1 K
logrotate本身不是系统守护进程,它是通过计划crond每天执行
% M. {" D: f2 P) U7 `/ `如何进行日志轮转?# n0 I" I0 J# M. `
了解相关配置文件9 J* a+ ~% t/ X# o! P' M) R& ~
[root@log-server ~]# rpm -ql logrotate" \4 `% w3 S/ p! \+ u
/etc/cron.daily/logrotate 周期性计划任务$ q6 I, U$ I6 F9 c, s
/etc/logrotate.conf 配置文件9 J; b, s ~9 I: J. g* \0 w4 m
/etc/logrotate.d 子配置文件存放路径
1 {6 T, ]2 n6 J# P [/usr/sbin/logrotate
( ~% U: J( X) p: j/usr/share/doc/logrotate-3.7.8
& C' i: o9 r+ `/usr/share/doc/logrotate-3.7.8/CHANGES* c9 |: j! r( M1 p
/usr/share/doc/logrotate-3.7.8/COPYING
" l; d7 U+ ~' R/ N0 o* S3 |: u/usr/share/man/man5/logrotate.conf.5.gz
+ c+ H4 W6 d% r2 @2 c4 j/usr/share/man/man8/logrotate.8.gz
( a8 W9 t0 f0 `! I4 k7 q& F8 j/var/lib/logrotate.status
5 S! x) R! u* j; R% A& ~
9 @8 v9 _1 P. m1 H$ q% N' `" G[root@log-server ~]# cat /etc/logrotate.conf) @/ W( X# ~# C4 F7 h& F) f; I% J
# see "man logrotate" for details
i2 x b6 C% h0 G# rotate log files weekly$ W9 Y( _$ L2 [5 c4 \% u
weekly
+ f5 e; u0 ~) z0 a8 {8 j5 `' f& d" r1 {9 b6 H# U
# keep 4 weeks worth of backlogs 保留4周备份日志
9 O! R& T6 \ q" O( @: w* hrotate 49 p2 v9 \" ]( `4 s! z# y
$ E0 [! A! m9 Q/ K% m# create new (empty) log files after rotating old ones
5 H, R2 |0 h. X# v# U/ }5 E9 |& Tcreate
1 o" i$ \& S# S
: {# J" t) \2 [8 S" |+ `: S# use date as a suffix of the rotated file 日期作为后缀给旧文件重命名
1 h, `/ u; @$ hdateext% N1 K2 x7 {+ W. n+ E
& }1 D& o9 N O1 G
# uncomment this if you want your log files compressed! _( R B3 v: e& B5 E5 e$ R
#compress
' i& j( \( o' k; w9 p+ c _8 c
+ ?1 i7 v" c$ i( h# RPM packages drop log rotation information into this directory
, s8 O9 }5 [5 g U9 minclude /etc/logrotate.d 加载外部目录) ~+ Q2 H6 E0 O7 k
$ ^2 a3 b" H, A3 b d+ O
# no packages own wtmp and btmp -- we'll rotate them here
" v O9 A; r3 u$ d/var/log/wtmp {2 y; ]8 D& J8 }5 m* f
monthly2 w# O6 `# U' J0 W3 r4 b$ z
create 0664 root utmp ! A' v5 @1 V$ i0 A
minsize 1M
8 t% I3 i3 P+ d; u$ B rotate 1 保留1份日志文件,每一个月备份一次日志文件
! P* g) o+ ~7 e/ R- s z}
* E! M$ D; G t( Q5 Z; g
4 Z; _) F O5 J4 r" b J/var/log/btmp {- {2 r X1 z9 p5 L2 I3 ]' q
missingok
. T* c# N1 G% ? monthly5 L T5 Y/ ?" d* n% n6 Q) S! \
create 0600 root utmp
: l* M# _0 F2 g5 `$ f rotate 1
& V' }9 d; ^& I: m}
2 u/ H* `$ j7 f* {/ h
2 p; ^9 w, I8 X5 I1 i# system-specific logs may be also be configured here.- R, z/ w4 @( q, I2 z1 Z
3 ^9 D% F' @; X* f {6 K% e常见的一些参数:
2 w8 {3 B) v! X8 m) H- @. z, m# adaily 指定转储周期为每天: h% a% ]9 d$ u7 X1 j! B& G: v
monthly 指定转储周期为每月
1 B0 ~* `' O$ lweekly 每周轮转一次
: {/ M& _+ e7 b! r3 lrotate 4 同一个文件最多轮转4次,4次之后就删除该文件
5 J) M/ _2 e3 K6 Jcreate 0664 root uttmp 轮转之后创建新文件,权限是0664,属于root用户和utmp组6 x: X* G. }, F
dateext 用日期来做轮转之后的文件的后缀名
$ @# Q/ D8 t8 H6 f$ zcompress 用gzip对轮转后的日志进行压缩
) D6 H0 {/ {" r, s T& Z/ Iminsize 30K 文件必须大于30k,且周期到了,才会轮转
; R* Q' l2 ~3 o" Wsize 30K 文件大于30k才会轮转,不论周期是否已到
, L* \7 _1 z$ g; S2 Z* ^missingok 如果日志文件不存在,不报错
6 ~ C0 T6 f$ \& K( {notifempty 如果日志文件是空的,不轮转
% M, p! J$ n- K$ [7 g' xdelaycompress 下一次轮转的时候才压缩
- N9 D! ?1 T& E, ^sharedscripts 不管有多少个文件待轮转,prerotate和postrotate代码只执行一次
& Y9 `0 b$ h- \prerotate 如果符合轮转的条件,则在轮转之前执行prerotate和endscript之间的shell代码0 O. x( E/ B4 @# U/ R2 q
postrotate 轮转完成后执行postrotate和endscript之间的shell代码4 f/ S( \5 B+ N
- J+ H( F+ l G' S[root@server~]# cat /etc/logrotate.d/syslog 5 c7 J& S* N' t" s
这个子配置文件,没有指定的参数都会以默认方式轮转! H) N0 N2 ^/ c6 g. `4 x* ~
/var/log/cron) n6 C8 c( f$ o: w9 a# l. J/ |+ G
/var/log/maillog3 m4 p" r* T' i: I& K; L
/var/log/messages
w& Y; E( m: H {) e/var/log/secure
( k" g& i. P" c$ f K! I3 O/var/log/spooler
2 ]2 Y# E6 ]+ k" c* j0 C{
1 F9 ^4 k( }- Z3 Q6 V) g0 U9 R sharedscripts 不管有多少个文件待轮转,prerotate和postrotate代码只执行一次7 H& P7 J! `% ]
postrotate 转换完后执行postrotate和endscirpt之间的shell代码' d. ~2 B2 k# J5 d* E- X
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true* A: n( d: o; ]" U3 z2 ~ h8 y9 B( j
轮转后对rsyslog的pid进行刷新(但pid其实不变)
3 V- j2 f5 G/ c, c' o; \, ^% n endscript$ ^. c/ m. e. C: X8 z. d6 [: D' @
}) S$ d; B, [2 e1 z- z
思考:为什么轮转后需要对rsyslog的pid进行刷新?
' K- [; F. a o$ O% ?/ bll -i 查看文件的inode
9 B/ K# z5 \3 H a# w9 x4 x. d6 w5 b-HUP 平滑重启
N t6 K: c- N/ |; v& g2 v3 B" V3 @! @0 ?( J0 t+ {
: x. S0 Z9 R- m
+ y V# h3 {: [+ E0 @. U
- L$ p7 m7 N" T3 E {" Z! d
( Y5 _! Y- d M7 G; h/ O. J不以时间为后缀进行轮转,在/etc/logrotate.conf/ nodateext& @+ w1 R( V. B$ h
6 Z: \6 U, A0 B4 f5 p* t清空环境/ J. k7 J% j; V3 W
. V1 X- ^3 O6 y重启服务, E) x& L* S z4 N
6 `4 q% _: T/ X; J9 G( g% J
( S* E+ ]* L2 R; e
$ u" P, g& D6 y+ ?7 y8 J# |3 k" J8 g+ S/ ^+ U
* @% n0 N8 C7 \; e, j8 e9 e结论 1 s; J }/ C) U* s! Z
" p9 c$ o# A- k! a4 F) E2 U" u# y
后刷新pid的话,logger -t "呵呵" "再见!"会写入旧文件(messages.1)里面
1 U3 e) E# }( \7 s1 e C1 t9 v& B5 }9 w6 s1 B, d& m! }
将这句话放在/bin/kill这条命令后面,会写入新文件里# Z7 A: c6 M8 E' x U
2 z- h2 T( p; ]最新的文件是messages,第一次强制轮转后的旧文件是messages.1,cat messages.1会看到logger -t "呵呵" "再见!",到第二次就成messages.2。而第二次轮转后的messages.1成了第一次轮转后的messages的老文件。(看时间区别)7 u( ?6 o2 x0 p/ u
4 G9 g$ H- i! M7 i& ]0 l
|
|