马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?开始注册
x
syslog服务和logrotate服务' v( }: L( K! E& D
======================================================================
( W$ i# i1 H8 U4 s( d! o$ l u' H/ jrsyslog 是一个 syslogd 的多线程增强版。
, q T$ \) Y% _2 ?4 v$ n% j* B现在Fedora和Ubuntu, rhel6默认的日志系统都是rsyslog了
( y4 [" m7 |; i5 H5 drsyslog负责写入日志, logrotate负责备份和删除旧日志, 以及更新日志文件5 {; o/ C$ P8 x: h0 E
———————————————————————-
9 w/ [0 n8 u Ursyslog 服务
, d+ v3 _9 P2 l, H" o: X———————————————————————-, Z8 U1 l6 ^* M" M8 i! i: n2 B
软件包:
9 `4 `4 f4 H& x5 d0 m[root@centos ~]# yum install rsyslog rsyslog-mysql logrotate) V9 @6 k' ]3 B; _) e; d% P
查看当前rsyslog服务的状态:& x3 ]7 I) L T/ r8 e+ ~9 b7 O- Z
[root@centos ~]#/etc/init.d/rsyslog status" d* H5 T( [ k) a
rsyslogd (pid 1343) is running…+ e: x! G7 U$ Q4 b) ^1 w
在centos6中, rsyslog服务默认是开机启动的4 b; I+ G+ s( E2 S/ w" E) L& f* T
我们先看一下它的进程::
* h5 @1 ~0 Q! j" t[root@centos ~]# ps -ef | grep rsyslogd | grep -v grep: o) |* W: J8 O+ i
root 1343 1 0 12:09 ? 00:00:00 /sbin/rsyslogd -c 4: h1 b0 a) K% D# y
从上面命令的输出结果看到rsyslog执行时使用的参数是-c 4.
. n& r6 f# j: ~6 `, N它的意思是指定rsyslog运行(兼容)的版本号, 这个参数必须是第一个参数, 当然也可以省略, 默认为-c0, (命令行兼容sysklogd)
' c7 u; _. \# u8 }' s/ I; M9 i这个参数是在文件/etc/sysconfig/rsyslog中指定::0 N ~0 R/ a+ \- y3 Q) F8 o* [/ ~
[root@centos ~]# cat /etc/sysconfig/rsyslog ! |; n" t0 ~ w1 b5 k+ y
- # Options to syslogd! H0 b E" ?% _5 A/ J- }
- # syslogd options are deprecated since rsyslog v3; i9 F/ n" G- l/ _' L7 y4 C
- # if you want to use them, switch to compatibility mode 2 by “-c 2″$ F5 P! ~/ ^; p3 u3 ?) V
- SYSLOGD_OPTIONS=”-c 4″
1 ?# V+ _7 T7 M6 h f+ }5 m$ a" U
7 K! W$ P/ H( f1 u[root@centos ~]# chkconfig –list | grep rsyslog' T% F Z# j7 z* K8 Q! ~
rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off7 C% R8 ] J+ F/ S* }( C
注意,这里的服务名是rsyslog!
9 J \5 i9 R( Y# Y0 K5 n8 b———————————————————————-
4 {, H9 v' s5 m* B2 d5 s# v配置文件
7 K# g: s8 X/ @4 m———————————————————————-/ F$ g+ D0 o. r' i" z; A
/etc/rsyslog.conf
+ @1 a. k) t+ z* l6 I' J/ p; p5 X4 T+ o配置文件的基本信息! ?4 ^0 T/ O3 H% v3 e& h
配置文件中有很多内容, 但最主要的是指定需要记录哪些服务和需要记录什么等级的信息::/ D0 ?8 ]/ X0 f1 d. ~2 B- a" s2 I
cat /etc/rsyslog.conf ' A. p4 w3 u2 |
- #rsyslog v3 config file
* b" D) e5 v! e* v1 a - # if you experience problems, check
3 D- {- D+ C# ^4 m+ j - # http://www.rsyslog.com/troubleshoot for assistance
k, k/ `3 p5 c( ]8 |! K - #### MODULES #### 加载 模块3 @+ @. s9 d1 X! h
- $ModLoad imuxsock.so –> 模块名 # provides support for local system logging (e.g. via logger command) 本地系统日志/ T- T; W6 V% _/ J6 H; y1 U7 ?/ e
- $ModLoad imklog.so # provides kernel logging support (previously done by rklogd)
" e" a M ?5 P; _: c/ w+ S9 r8 v - #$ModLoad immark.so # provides –MARK– message capability. s8 Z" O! z6 E: Q3 b2 |
- # Provides UDP syslog reception, Q' W9 J' h8 k2 v
- # 允许514端口接收使用UDP协议转发过来的日志
- m& B, Z& n5 I; A - #$ModLoad imudp.so' ^, _7 S' N- e7 L
- #$UDPServerRun 5147 ?# u5 J1 ^2 e1 M% n/ H
- # Provides TCP syslog reception6 m B5 G# P& A, B8 ]- |
- # 允许514端口接收使用TCP协议转发过来的日志. I1 C, B$ t9 u# P; @: @! w/ i4 Z1 P
- #$ModLoad imtcp.so
+ k: i+ w9 e# e2 g' N3 u' e0 ? - #$InputTCPServerRun 514" e" b: p; K. O- R4 h
- #### GLOBAL DIRECTIVES ####) j; ^! v, ]/ L7 G$ ~% ^3 k+ x
- 定义日志格式默认模板 + \# ~* _( N" Q+ j! C
- # Use default timestamp format! n: w" U- [$ ?2 Z2 o
- $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
7 R; I: `" b- J( r9 a/ u - # File syncing capability is disabled by default. This feature is usually not required,
( E- B2 S2 ^( S# p1 w3 b, T& q - # not useful and an extreme performance hit
- t# l0 T$ L& P7 L - #$ActionFileEnableSync on
/ G* q4 h# I y- X% W% {) o - #### RULES ####* J. C3 L$ [% r7 Q2 m
- # Log all kernel messages to the console.3 Y( H2 M# d, ? O2 v
- # Logging much else clutters up the screen.% z) T* y/ C- ?2 y/ ~2 Y5 s
- #kern.* /dev/console 关于内核的所有日志都放到/dev/console(控制台)+ }! d- ^4 ?4 u0 p6 [
- # Log anything (except mail) of level info or higher./ C' ]7 b- W( }# a; y& }2 o
- # Don’t log private authentication messages!
% d! T$ C$ T9 { - # 记录所有日志类型的info级别以及大于info级别的信息到/var/log/messages,但是mail邮件信息,authpriv验证方面的信息和cron时间任务相关的信息除外. _. m7 w7 N6 e! S/ h
- *.info;mail.none;authpriv.none;cron.none /var/log/messages ) s1 W7 a5 K! g, v6 H3 Q
- # The authpriv file has restricted access.4 h5 p4 h1 X, [$ {5 Q8 {: ^8 V
- # authpriv验证相关的所有信息存放在/var/log/secure
( [, W5 l9 j4 | Q. \ - authpriv.* /var/log/secure
" i# `: B, d7 `: `: @ - # Log all the mail messages in one place.
) |, {' P& q4 V4 q6 ~" X - # 邮件的所有信息存放在/var/log/maillog; 这里有一个-符号, 表示是使用异步的方式记录, 因为日志一般会比较大) R4 T2 T" _3 O$ {; n! \+ T9 h8 s5 ^
- mail.* -/var/log/maillog
6 N% Q+ X. Q% B7 R$ W - # Log cron stuff
) t/ u Q( G5 N% h" B* G - # 计划任务有关的信息存放在/var/log/cron
+ Y5 Y/ _$ z/ O- h: `7 r2 r - cron.* /var/log/cron 1 t3 C+ C* p% J( e2 V. }! O
- # Everybody gets emergency messages6 f+ H" T& P5 b# R$ Z
- # 记录所有的大于等于emerg级别信息, 以wall方式发送给每个登录到系统的人
$ O/ X {+ p( W. v2 C. ]7 c - *.emerg * *代表所有在线用户 1 U' z3 ~0 v0 e* R) w. e @
- # Save news errors of level crit and higher in a special file.
( B! X" ]* I$ o! {: ~; J - # 记录uucp,news.crit等存放在/var/log/spooler
: I& T! @1 U3 f# Q$ L - uucp,news.crit /var/log/spooler & h: ~: H& I8 }9 a5 ?* i9 P; ^/ e
- # Save boot messages also to boot.log 启动的相关信息
6 a/ A/ L: a; ^) c - local7.* /var/log/boot.log9 K5 a/ {5 w5 w
- #:rawmsg, contains, “sdns_log” @@192.168.56.7:10514
2 V% t% x E; x$ x - #:rawmsg, contains, “sdns_log” ~' p6 ]. x" S6 Z3 u
- # ### begin forwarding rule ### 转发规则4 c! N9 g; E' j. K
- # The statement between the begin … end define a SINGLE forwarding
8 h" d" B4 f1 u$ |6 E0 Y3 X& L - # rule. They belong together, do NOT split them. If you create multiple
) Y( g9 z; q3 T9 e: j - # forwarding rules, duplicate the whole block!, z3 e* V- G: n6 b0 j0 G
- # Remote Logging (we use TCP for reliable delivery)
9 P, s" `" Q& W6 |8 s( N - #* ^* j0 f* z2 W0 U6 J8 V
- # An on-disk queue is created for this action. If the remote host is/ U! z9 T4 T% ?% Y5 x5 p" u/ B0 I
- # down, messages are spooled to disk and sent when it is up again.* n( Y3 \9 o* @8 }# Z2 @$ ?
- #$WorkDirectory /var/spppl/rsyslog # where to place spool files
. f. B- a; ~" I) U$ b- } - #$ActionQueueFileName fwdRule1 # unique name prefix for spool files
; X# e; @9 } A6 W# [6 a; w K% j - #$ActionQueueMaxDiskSpace 1g # 1gb space limit (use as much as possible)
3 h" d9 B: p; B - #$ActionQueueSaveOnShutdown on # save messages to disk on shutdown
% k' y* m* Z" e% g: ]; C - #$ActionQueueType LinkedList # run asynchronously
3 V5 Z" F+ ^4 t3 Z5 Z4 i" B" n - #$ActionResumeRetryCount -1 # infinite retries if host is down) B3 Z- z) n* P. f- K/ t- q E
- # remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
9 @& {# K. _. O+ L6 K" C - #*.* @@remote-host:514 # @@表示通过tcp协议发送 @表示通过udp进行转发
, P6 S0 G$ f. v! O9 A% j; c - #local3.info @@localhost :514
( M1 }/ D4 ?& Q: i" T8 m) x6 e. J - #local7.* # @@192.168.56.7:514
- h( ?% f& \' L* B) k& T - # ### end of the forwarding rule ###9 U# H7 ^% j: ]5 S A- O2 |
+ C3 d/ c: f$ j& s. D2 w
+ L n* ?4 [: k: x1 f
格式:: o5 I& K3 E2 q5 [
日志设备(类型).(连接符号)日志级别 日志处理方式(action)) ?8 C% n) r+ N; _: @
日志设备(可以理解为日志类型):7 L2 `) E2 Z5 d. A. R
———————————————————————-
8 f" w" g9 r* i7 h9 o- rauth –pam产生的日志& \2 b+ Z+ m, l) ^4 M
authpriv –ssh,ftp等登录信息的验证信息+ K2 B6 m0 h$ h( |6 J6 |6 ~- C
cron –时间任务相关3 B: t. f" {8 ?
kern –内核
3 o5 `/ d+ {, B4 l olpr –打印3 S' G, e3 N/ ^# W9 @
mail –邮件
5 u8 S6 p9 n& A4 m3 \4 _/ Wmark(syslog)–rsyslog服务内部的信息,时间标识
+ [2 n$ \3 p; \, r' Q# e: bnews –新闻组6 }; z. l. I8 e; x# q) ~, _
user –用户程序产生的相关信息
. W0 s& h( K8 M' y( y* o% ^9 Buucp –unix to unix copy, unix主机之间相关的通讯- _4 U5 A1 q$ `5 r; r; m9 X
local 1~7 –自定义的日志设备
" k5 g* L/ s: T% X' o u, W日志级别:& ]0 j& ^, b7 G6 k# O6 F
———————————————————————-1 O0 }' w: C; v) I0 H
debug –有调式信息的,日志信息最多
7 s. T7 F% D, q( }info –一般信息的日志,最常用
) h5 S* V! S5 k/ d4 }- W% Unotice –最具有重要性的普通条件的信息* B( n l6 [ `0 n2 ?
warning –警告级别% `7 P- T/ @ _6 j) @
err –错误级别,阻止某个功能或者模块不能正常工作的信息
& q* o2 F/ D- j3 a9 icrit –严重级别,阻止整个系统或者整个软件不能正常工作的信息; ]) m4 M# t/ O
alert –需要立刻修改的信息
$ a/ d' |& C( I$ O- Z) `4 V! {emerg –内核崩溃等严重信息. `2 Y$ i0 i: ^6 A
none –什么都不记录% U+ M* u8 d# ^5 V" S
从上到下,级别从低到高,记录的信息越来越少* _. p# U" b4 I0 O# \
详细的可以查看手册: man 3 syslog
! S0 q( `! X0 S' a4 Y, G. C连接符号( S. X: J* G, y2 d+ l4 I# s; y
———————————————————————-8 |/ y* G! T, U5 H _, v2 d8 V# S
.xxx: 表示大于等于xxx级别的信息
' r7 l. Z3 N- I.=xxx:表示等于xxx级别的信息
' a5 t" [& w7 w* ^" V( A.!xxx:表示在xxx之外的等级的信息1 Y0 C7 ]) ?( k3 J3 F2 x
Actions+ `+ c; D8 Z0 S" c4 D2 ~' M
———————————————————————-1 D2 Y3 b, ^3 @, `/ M6 B4 a ?
1. 记录到普通文件或设备文件::
8 q- f" K( L( E. n1 t. o* A*.* /var/log/file.log # 绝对路径
9 P& `+ Q5 f2 Z+ k6 g*.* /dev/pts/0
* G, F, |9 t- k: ?测试: logger -p local3.info ‘KadeFor is testing the rsyslog and logger ‘ logger 命令用于产生日志
: x8 {/ W0 ^7 |) X$ a5 q2. 转发到远程::: H1 _9 ~( R, y& Z
*.* @192.168.0.1 # 使用UDP协议转发到192.168.0.1的514(默认)端口0 R+ I b% y3 [ Q3 ]: s" H
*.* @@192.168.0.1:10514 # 使用TCP协议转发到192.168.0.1的10514(默认)端口
( e" }! Y9 F: e" k) T3. 发送给用户(需要在线才能收到)::6 r+ \. y& e- i. k* u
*.* root7 r: y/ S9 Z$ r5 B# T5 ?
*.* root,kadefor,up01 # 使用,号分隔多个用户/ Z. a* [& _* ]
*.* * # *号表示所有在线用户
! c% V1 [/ k6 n- w3 Q; u4 l. \4. 忽略,丢弃::
% _$ N8 o+ n6 G* d( @local3.* ~ # 忽略所有local3类型的所有级别的日志9 g- x5 {7 @0 ]( l* u
5. 执行脚本::& C M3 X! Q! k$ b3 G" q
local3.* ^/tmp/a.sh # ^号后跟可执行脚本或程序的绝对路径% R' z4 H& h# L$ x
# 日志内容可以作为脚本的第一个参数.# \6 C. F0 X6 I/ \
# 可用来触发报警
+ Y: ?1 M% o- s' [* x9 |: _.. note::; y; i, E/ g6 B* _+ B5 \
日志记录的顺序有先后关系!
* J- H% l- B+ _======================================================================
# c5 x3 ]: u' a2 g8 ^$ q一个标准的简单的配置文件$ q( |- r4 }& ~1 |3 F
======================================================================) c7 Z. q( i. n! U
::
2 |7 E* y8 h# m( B2 B4 j*.info;mail.none;authpriv.none;cron.none /var/log/messages
, j* w' Z. u& mauthpriv.* /var/log/secure( Y: u3 g, Q+ j0 x. [$ Q1 U
mail.* /var/log/maillog- d1 u8 [- G( Z# H& [
cron.* /var/log/cron
: \. M/ ~' h9 T5 I1 u! u*.emerg *% h8 ]/ w, k+ |' i- t0 {$ ]
uucp,news.crit /var/log/spooler
( K! n; L, e) J: r* T! Olocal7.* /var/log/boot.log' ?0 W+ n% C' W$ ?; C3 j' y6 O+ [
======================================================================, c3 j8 \* J4 E5 z
实例: 指定日志文件, 或者终端
6 Z4 C |: x2 l+ V7 K e======================================================================+ U2 n, |" I, Y5 D
[root@kadefor ule-sa3]# vi /etc/rsyslog.conf9 t0 w( Q2 e; K: v! H
[root@kadefor ule-sa3]# grep local3 !$1 V$ Y; g( p+ t- Z* `. E. n/ m
grep local3 /etc/rsyslog.conf! Q1 `8 ~, q6 T2 s
local3.* /var/log/local3.log$ [' u6 m/ x- O I/ P N
[root@kadefor ule-sa3]# rm -rf /var/log/local3.log" [7 f3 w) X; w
[root@kadefor ule-sa3]# /etc/init.d/rsyslog reload" r, ^7 d |% Y; y3 V
Reloading system logger… [ OK ]
2 B" m( Y8 W: U; D[root@kadefor ule-sa3]# ls /var/log/local3.log( U B. j, Z) O/ U5 I0 Y9 @, j! ?8 a
/var/log/local3.log
1 B* ]% X6 B; [( j0 J9 j[root@kadefor ule-sa3]# logger -t ‘LogTest’ -p local3.info ‘KadeFor is testing the rsyslog and logger’0 ^2 C7 [' D; @
[root@kadefor ule-sa3]# cat /var/log/local3.log/ s- @3 K4 c# P1 C b2 v( _/ c* T8 H+ Z
Jun 10 04:55:52 kadefor LogTest: KadeFor is testing the rsyslog and logger
% ^5 A1 M* m1 K3 E; m2 H[root@kadefor ule-sa3]#
) n) \/ Y1 m/ x: _自己实验日志发送给某个终端
7 l9 Z/ i) e0 ~* R e$ B3 x======================================================================
* D$ s: d/ ^+ W3 I实例: 过滤特定的日志到文件, 忽略(丢弃)包含某个字符串的日志8 f8 f8 u# ? ~- W7 c
======================================================================" A# W8 i1 B* r, @5 v) F2 k
# 过滤日志, 由:号开头1 C& ]! R/ ~; H0 r6 T
:msg, contains, “error” /var/log/error.log! a5 m3 x0 Z: S! O/ X- Y
:msg, contains, “error” ~ # 忽略包含error的日志
7 `! w1 j! d4 t:msg, contains, “user nagios” ~3 Q4 H- C( W; M- s/ A& v, ]& W
:msg, contains, “user kadefor” ~
+ m2 }7 B; G7 o5 P9 p:msg, contains, “module-alsa-sink.c: ALSA woke us up to write new data to the device, but there was actually nothing to write” ~& z6 I' I8 d7 D: X
local3.* ~3 i' l3 u# g6 }: \! \% e H3 j* ?
PS.
1 ~: ?; O$ |/ J) Z6 ]9 I& ~ # 忽略所有的日志
5 Z& G! |8 W$ K; ?# Z: w把包含’oracle’的日志保存在/var/log/oracle.log
; t* G- ]! E# {' k7 f' R======================================================================& u5 |* S1 H/ L: l! z/ o( {
实例: 使用模板来定义日志格式, x9 M: j' _2 i3 j) O
======================================================================$ a Z% ]7 h! t) l4 N3 M
定义默认的日志格式: 3 d: v Z% U* j% ~ N5 b+ _% B
- $template myFormat,”%rawmsg%\n”
6 w! t+ r: M2 K' S' ? - $ActionFileDefaultTemplate myFormat
0 {+ Q; K: M3 R/ t# K, q3 W - #如果不要$ActionFileDefaultTemplate myFormat这一行, 就需要像这样来使用模板:
8 o5 l' `: s$ F9 t& g* J( }/ e% F - #在日志文件后添加模板名, 并用;号分隔2 d. r& e1 I& L9 D% O/ F, r8 {9 d
- $template myFormat,”%rawmsg%\n”
# o0 }/ n q2 Z* S6 V- y - # The authpriv file has restricted access.
: |' @1 X# l, w - authpriv.* /var/log/secure;myFormat
0 o% A, u* w- v O2 K - # Log all the mail messages in one place.
: o3 B3 C; {8 O* m7 W8 E' N - mail.* /var/log/maillog;myFormat 3 J- X6 H! Q- c% ?3 N0 r* V
- # Log cron stuff
4 y" d, ?( J( j: P5 ~7 r% d - cron.* /var/log/cron;myFormat
* S8 O0 g8 u9 b6 v - # Everybody gets emergency messages
1 k/ Y6 C y' z4 t5 k+ x( D8 N - *.emerg *
+ B4 y" P9 w- e, a/ j$ @: L/ z - # Save news errors of level crit and higher in a special file. Y$ l: A. ]5 ]2 [
- uucp,news.crit /var/log/spooler;myFormat
8 M4 L7 M/ L m2 H8 x - # Save boot messages also to boot.log
0 q8 ?/ v( A9 K6 R - local7.* /var/log/boot.log;myFormat 0 R% O: v- B w* F0 c5 m( R: R. F
8 {* r3 K0 z! U% B 0 c6 e* o* f) S6 x8 |. v0 U+ @1 h- ?
======================================================================
) c o1 B! E! k |* o/ _实例: remote log 远程发送与接收:
1 k& t* e$ Z' B0 U7 ]======================================================================
. }% e3 _% [% w* T7 \: v7 ]如果要修改为非514的端口, 需要设置selinux
6 b; ^8 f, a1 j5 F& B2 n6 T" x2 l只要在rsyslog.conf中加入
6 Y8 M: g& ~+ x, S0 I/ t* c*.* @192.168.0.10; C6 ?7 O* S; h k0 ^
*.* @192.168.0.10:10514 # 带端口号
8 D- C- g0 n" X# C+ k+ o9 T" J*.* @@192.168.0.10 # TCP
7 z- O7 E7 B" V但是没有定义保存在远程的哪一个文件啊?
5 i: j" c3 s* N. a- }- N s: w$ k其实保存在什么文件, 那是远程日志服务器接收到日志之后它自己的事情了.$ e. `" s+ H2 p' c/ K( {
例1:
! T5 q# n5 t; Z7 Z: Z^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
7 Q2 b- M4 w) ^* X———————————————————————-4 S2 @& {6 U; z$ n2 D
Client(send):1 D# R: d1 v( K6 W' Q% O$ B
———————————————————————-
, Y" [" ]! G/ ]2 k::
$ ~7 }5 }3 K5 j- Glocal3.* @@192.0.2.1:10514
7 `' J( S* L; f8 h2 V6 X3 M, X# if you need to forward to other systems as well, just1 u) P" h4 [% S$ j* M! F( A |
# add additional config lines:2 W0 W' k; a6 B" h+ J1 x& K
# *.* @@other-server.example.net:10514
% l V8 y9 D( B) B: B1 F# Log anything (except mail) of level info or higher.! U4 d7 O# m2 _+ o' Q
# Don’t log private authentication messages!, {( `8 ?) O7 y
*.info;mail.none;authpriv.none;cron.none /var/log/messages
% v/ f0 w% {& q8 x( Z6 I* T# The authpriv file has restricted access.
. `! q" H$ J: _4 c; ?. Fauthpriv.* /var/log/secure, U/ L6 \) H( Y/ i6 f/ {
# Log all the mail messages in one place.
7 A/ y* I: \3 K5 x" t Ymail.* /var/log/maillog& t; n; `' {- P( b4 h
# Log cron stuff o! ]+ B$ g0 ?* D) {
cron.* /var/log/cron
+ U0 h# O4 H1 W; O; W0 j# Everybody gets emergency messages V' F- |0 l, _8 A( {' y
*.emerg *
. ?# ?/ f9 q0 c# O0 ~! Q2 o, Q# Save news errors of level crit and higher in a special file.- Z. J" M y# Q5 t9 q
uucp,news.crit /var/log/spooler
4 p& D* j4 R6 f3 ]( ?" B8 m# Save boot messages also to boot.log
( S1 A, X( M% F$ s( I( I7 t* alocal7.* /var/log/boot.log
$ i2 G: K5 P; ]; p: V. X# m) l———————————————————————-9 n( [6 {* o( Q+ R
Server(receive): <1>) z: E: Z# y) G: d) j
———————————————————————-1 @$ B0 k( j* \( o/ ~
::8 ^0 l. ?+ ^+ b0 u6 |; j
# for TCP use: }: z& m9 t5 o" e. [# K8 |
$modload imtcp
6 z; \ \ |% i/ Y- ^. Q* i' e4 c$InputTCPServerRun 10514
+ N8 ~5 j6 P: S# for UDP use:" ^! {% ]9 O4 l
$modload imudp
5 C) R9 Z0 k5 r- T6 @$UDPServerRun 514( L$ M' b8 |4 d
# Log anything (except mail) of level info or higher.# v, Q) c; H- q1 P9 x
# Don’t log private authentication messages! C* ]2 I) x" M5 l7 j
*.info;mail.none;authpriv.none;cron.none /var/log/messages" k( p" r( y: G3 j/ j" a# D
# The authpriv file has restricted access.
# `6 `3 @. I$ T! Jauthpriv.* /var/log/secure: H3 ?. r; o% ?0 u" P+ v
# Log all the mail messages in one place.+ A2 R" ~# N6 g$ X8 a5 p$ H& i
mail.* /var/log/maillog
) {, K" R0 A: B1 o- Y$ ?- S+ ~# Log cron stuff2 q8 k/ Y& v4 m+ y- o
cron.* /var/log/cron
% `% K. y9 k9 Z- K" ?1 D# Everybody gets emergency messages
- _0 z2 }" M- e) \*.emerg *
" _$ m! m. y5 G5 n8 Q' k# Save news errors of level crit and higher in a special file.7 X" \4 K$ M4 k
uucp,news.crit /var/log/spooler7 G2 r G9 i9 u8 z
# Save boot messages also to boot.log4 O7 r- P1 _( q# [
local7.* /var/log/boot.log
( g# L; D; B. s) Wlocal3.* /var/log/local3.log # 测试用0 @& n6 |- Q1 c
例2 (仅做了解, 不做要求)) ^' }6 r0 Z+ K% N4 p" W
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4 M l6 o. _" u* i#配置服务端(接收)
$ u+ M0 l( s3 |9 V3 W# Q9 Y———————————————————————-
2 S& c4 }% h8 Y+ k0 i! T( j3 d6 S: Lvi /etc/rsyslog.conf #在文件开始加上,同时确保514端口能够被客户端用tcp访问
0 ~5 J" |$ }$ F$ R/ {$ModLoad imtcp.so # needs to be done just once #使用tcp方式
?5 U% }' ?! ^) o$InputTCPMaxSessions 500 # tcp接收连接数为500个 s; [! u. |3 O u0 i2 t1 h& F
$InputTCPServerRun 514 # tcp接收信息的端口" b" v& j; w' m9 b8 z$ R3 a" m- o
$template logformat,”%TIMESTAMP:::date-mysql% %FROMHOST-IP%%msg%\n” # 定义一个名为logformat模板, 为信息加上日志时间1 Z! F3 J$ A0 F6 z$ }7 f1 g
$template DynFile,”/var/log/tlog%$year%%$month%%$day%.log” # 定义日志文件的名称,按照年月日
a3 L. H0 ?3 |& `& [: N:rawmsg, contains, “sdns_log” ?DynFile;logformat # 把rawmsg(也可以使用msg)日志中包含sdns_log标志的信息写到DynFile定义的日志文件里
$ ?0 X4 e/ ?# T" j5 T:rawmsg, contains, “sdns_log” ~ # 这个表示丢弃包含sdns_log标志的信息, 一般都加上它, 以免多个日志文件记录重复的日志4 Y7 B4 L7 Y: c- Q) k
#配置客户端(发送)" E* ]7 l' r6 F0 h6 X/ _, \
———————————————————————-" Y @$ V* O6 y( L" |5 U
vi /etc/rsyslog.conf #在文件开始加上
( N8 ]; e' @3 v9 x#把包含sdns_log的信息通过tcp发到192.168.1.2 @@表示tcp @表示udp
4 P5 ?5 d: a v$ |, W7 L:rawmsg, contains, “sdns_log” @@192.168.1.2 # 默认514端口; q4 J9 {3 D; v/ J% H* ^
#这个表示丢弃包含sdns_log标志的信息,防止这个信息写到本机的/var/log/message
+ H9 ?" |4 h. e1 z:rawmsg, contains, “sdns_log” ~
7 F/ c1 ^0 ?; M9 o" Y5 Y#测试6 l9 {( o" a7 x! W) Y8 b: ~
———————————————————————-( |& y3 @7 Q9 [+ r# _2 T1 F3 u
在客户端上执行
) i6 B5 ]% A- { @1 S- |7 Jlogger -p user.info “sdns_log 34334″
, p+ A) r6 Z N1 f8 o7 `/ e在服务端的/var/log/目录里是否有tlog*日志产生
6 g8 _/ o6 g2 d% ?. ^/ a4 ]补充:
8 B. L4 V* }1 g" a———————————————————————-
# W t) b( R; }3 g* O0 Z如果要把不同服务器发送过来的日志保存到不同的文件, 可以这样操作:
0 W) Z+ w' D: l* g:fromhost-ip, isequal, “192.168.0.160″ /var/log/host160.log
& r, _9 _# g9 ~$ N; v- H% |8 L0 ~:FROMHOST-IP, isequal, “192.168.0.161″ /var/log/host161.log8 |& T2 w2 l+ D
:FROMHOST-IP, startswith, “192.168.1.” /var/log/network1.log
- _6 r3 i8 p; W) g( i; q:FROMHOST-IP, startswith, “192.168.2.” /var/log/network2.log; _, ?3 J, o2 i7 x
练习:
: a' [ J& Z" _8 Y% m2 H% s======================================================================: B! K) q; |, O. i% z2 W
1. 实现把ssh服务的日志自定义保存到/var/log/newsshd.log (先不做)6 Y( R) k% v! o' z
2. mail日志保存在远程日志服务器/var/log/newmail.log
) ~0 j$ f4 z. h8 ~: F7 j3. 过滤日志, 如果日志包含有”daydayup”, 则执行脚本/tmp/a.sh
- ~0 s8 x6 X9 Y7 A0 N' @脚本内容:! j' m+ ^ Y; c5 `
#!/bin/bash
5 U% E3 ?7 j' F1 s6 Zecho “KO::** $1″ > /dev/tty2
8 a3 ]; @7 H6 p/ ]9 n: w======================================================================
+ r+ x' y$ E5 a" P/ v1 \logrotate服务
3 a9 ~- b# g7 w$ r======================================================================" N( m- f& G- f6 l2 x
rotate 轮换,日志切换
$ r! L2 O3 F0 B2 C% qlogrotate服务的启动方式
- y- ^, \ |/ u/ slogrotate是一个日志管理程序,用来把旧的日志文件删除(备份),并创建新的日志文件,这个过程称为“转储”。我们可以根据日志的大小,或者根据其使用的天数来转储。
5 Y& C$ T" Z: Y) i) Clogrotate 的执行由crond服务实现。在/etc/cron.daily目录中,有个文件logrotate,它实际上是个shell script,用来启动logrotate。logrotate程序每天由cron在指定的时间(/etc/crontab)启动。
! C1 W9 y( d3 _5 d2 M因此,使用ps是无法查看到logrotate的。如果它没有起来,就要查看一下crond服务有没有在运行。& w9 M( W7 u3 i
在执行logrotate时,需要指定其配置文件/etc/logrotate.conf
" y0 _! {# n, h, L3 O" f% t这 个配置文件的注释写得很清楚,没有必要再罗嗦了。只想强调下面这行,它的作用包含存放在/etc/logrotate.d目录下面的配置文件,不可或缺。 如果你安装了一个新的服务,它的日志转储的规则可以建立一个专门的配置文件,放在/etc/logrotate.d下面。它其实也因为下面的这句话,在 logrotate服务启动时被读取。
# \7 ]( }" q4 ?# `1 v" x& U/ s每个存放在/etc/logrotate.d目录里的文件,都有上面格式的配置信息。在{}中定义的规则,如果与logrotate.conf中的冲突,以/etc/logrotatate.d/中的文件定义的为准。
; E: E4 \8 G- Z3 X: L5 }logrotate启动脚本放在 /etc/cron.daily/logrotate 中,可人工执行命令进行测试:7 J& j2 A' G8 S& l! x
/usr/sbin/logrotate -f /etc/logrotate.conf' v9 u5 K; d3 R9 V( V4 W
dateext表示转储文件会以日期来结束*
4 {, I; S# f- D0 E2 A9 `7 p::
. J: {/ S) a: R5 @% J+ N( b[root@kadefor log]# vim /etc/logrotate.conf
- J' w# ]! L/ c# see “man logrotate” for details
- p% g7 r& B" `2 x5 }( p! n- N# K# rotate log files weekly
5 D0 O8 n, `. u0 u0 xweekly –每周轮转一次: h, V4 w6 F; Z! t' G6 T/ s
# keep 4 weeks worth of backlogs+ B$ F/ A" Y% P) k) ?& X; {
rotate 4 –保留四个3 t' l6 y' A P2 d2 A
# create new (empty) log files after rotating old ones. e, C+ [) D* q. F# q0 }- {0 H
create –rotate后,创建一个新的空文件2 ]: h! E: W: h0 y5 Z" V. r4 H2 p
# uncomment this if you want your log files compressed
7 X6 I& f7 R H: R/ l; f#compress –默认是不压缩的
3 {7 v; q% U9 I I# RPM packages drop log rotation information into this directory
* J! U* Q- S- vinclude /etc/logrotate.d –这个目录下面配置文件生效! k7 F8 m! n0 v, r' [* C
# no packages own wtmp — we’ll rotate them here
; p3 v4 _" K h0 q; g# P/var/log/wtmp { –定义/var/log/wtmp这个日志文件
8 \! T, F9 i* ?8 g! z' Xmonthly –每月轮转一次,取代了上面的全局设定的每周轮转一次 k4 R: g' e1 i5 ]4 }+ k* R! H8 S
minsize 1M –定义日志必须要大于1M大小才会去轮转
3 {+ ^. q* V* h0 z! screate 0664 root utmp –新的日志文件的权限,属主,属主 F6 T" R- f9 D" e% N5 ]) D
rotate 1 –保留一个,取代了上面的全局设定的保留四个/ o G& _- k2 m: E3 q% q
}
# A: }6 G* N* U. @: E7 r! H/var/log/btmp {) j4 z1 Q k$ Z- X- r+ o* K: y. D
missingok –如果日志丢失, 不报错
d) E+ a4 p- Hmonthly6 b% L7 C- e. H$ D! W5 @
create 0600 root utmp
& D- W7 A2 u2 i7 m1 orotate 1# _/ Q: [' c! C
}: m. b2 C `2 R2 T: Q/ q
::# f0 N" Z8 k, Y" e9 } i& B! a$ u
# sample logrotate configuration file
- V# z4 |6 p% A* E& e9 gcompress7 S' ]1 V8 a9 I# s( z
# 全局设置, 压缩
4 F' q B% d; A3 q# g- d0 M/var/log/messages {
: v g" L# K8 R) H6 R5 r9 g: frotate 5 # 保留5份日志# d% `/ H/ Q% {. l7 `* w/ ]8 q$ Q4 R
weekly # 每周轮换一次
) Z0 Q) ?2 s7 L% M4 M1 a, Upostrotate # 轮换之后重启syslogd服务
8 `; A: d4 x5 W" D3 w$ i B/usr/bin/killall -HUP syslogd
; y4 Z, B8 w0 P1 q7 b) I9 T# rhel6中为:/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
; L. D- e7 @; s/ L9 u# 可查看/etc/logrotate.d/下的配置文件
# P0 @$ n' w4 I3 ^& eendscript
- v* ]1 R: A7 _) e' P}* G; Z4 O. X! y2 A% E
“/var/log/httpd/access.log” /var/log/httpd/error.log { # 指定多个文件, 如果有特殊字符需要用单引号
* P+ X, _* t# [3 ^rotate 5% M, K3 e' V8 {! r, P2 r8 A' I7 q V8 O% N
mail www@my.org
2 d8 w6 M" |8 ^6 Rsize 100k # 超过100k后切换日志, 并把老的日志发送邮件给www@my.org
% O, Q) O! F2 L5 @( G! x; B o8 P. ]sharedscripts # 共享脚本. 下面的postrotate脚本只运行一次.$ c+ [# }( |, E6 K) d
postrotate
/ @5 U' s( y) P" b; g/usr/bin/killall -HUP httpd* k4 x, {7 `7 @& v7 A) h) T5 N# D) M
endscript# U; W4 {0 t- I% y# y' V" h
}/ j3 Q8 N, s" h# M( R
/var/log/news/* { # 少用通配符, 因会它会包括已经切换过的日志, 要用的话最好在*号后加上扩展名, 如*.log
3 a0 |) ~& _. o& Imonthly, }7 [, x! Q/ B) L
rotate 2
" t: r2 l; m6 a3 z) ], Y4 r0 b9 ^olddir /var/log/news/old( D* ~' d0 W' D5 {3 m+ Z8 P8 A
missingok0 n7 D' c4 l- W" }4 x N& u
postrotate4 w+ {7 U( m9 ?) l- G5 r, U; ]
kill -HUP ‘cat /var/run/inn.pid‘
/ _- ]- n- |$ A& wendscript, P2 t9 @# ?5 `# j
nocompress
0 F5 ~3 ?! h0 X( r: K5 m N( q}# Q" F% q6 S8 D$ d1 d
例:" N4 i2 d: s; O1 g3 m! K( W
修改/etc/logrotate.conf0 \- `; S* ?# w# D" P2 Z
/var/log/wtmp {) t/ y6 F* x& q. Y5 |
monthly
$ V$ e) F2 b5 D0 sminsize 10k
$ K/ U; }# ?, n# r& A3 acreate 0664 a b
$ Z' N2 S$ Q$ X: v' w" Crotate 2
3 |/ c ^$ a( I- X6 x& c2 `}, [" B, v) W9 j2 y1 c
logrotate -f /etc/logrotate.conf –强制轮转
/ y3 y5 g1 O. p# A$ tlogrotate -vf /etc/logrotate.conf –再加一个-v参数查看轮转的过程8 M0 R. k; C, Q; y& E% G9 Z
———————————
. @+ Y& ^' I8 @. {/ C4 O[root@kadefor log]# vim /etc/logrotate.d/syslog
; K. e0 |0 p, v: D% h& u ^/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {
4 |/ `; `3 r- r( g2 c* R# |7 D7 wsharedscripts –表示切换时脚本只执行一次
; ]6 b% N' x- h: `postrotate –表示rotate后执行的脚本
" E$ V4 e# Z# `) e Q/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true8 [% g- R' X U
/bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true
- L; j% Q' @$ [/ Gendscript –表示脚本结束
/ \& f7 T. F8 b: m}
: m# r9 G4 N" \ R& o. H Q0 r& T! d$ n[root@kadefor log]# logger -t ‘aaaa’ ‘bbbbbb’–在日志里加一个内容tag和内容
0 j# d$ w* X8 U5 j6 P# T[root@kadefor log]# tail /var/log/messages
+ Z* y+ y( V- y7 d( I! GJun 12 19:38:55 kadefor dhclient[3166]: bound to 192.168.1.101 — renewal in 3384 seconds.* o0 G2 s; z9 A1 j) C4 I; t; H! \) e
Jun 12 20:34:22 kadefor aaaa: bbbbbb
2 D3 ]. U# M8 m3 d |