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