|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
5 [0 T* L+ \9 r
1、系统常用的日志(日志是用来记录重大事件的工具)
. `6 q7 N3 y, ^
8 M! T: y0 e7 L1 ~; K" I! I /var/log/message 系统信息日志,包含错误信息等6 x7 w0 C7 q+ Z, {( ?4 U) Y9 P
7 f0 N9 d3 e( _1 p- j5 C1 O /var/log/secure 系统登录日志
- _; q" W7 {1 E! _* G9 n
, j0 i1 {0 k+ w+ U% s# N0 n /var/log/cron 定时任务日志$ i- G; {/ M; f* ^6 r$ r1 T& @5 Z
& T1 [- _+ ]7 m* V /var/log/maillog 邮件日志
) i+ ]" R" M8 k7 t' ]
7 U% r- V$ m+ B7 E7 K9 Y /var/log/boot.log 系统启动日志
! l, A, F' ]: V. ?) V& M" m% g* }2 B
2、日志管理服务 rsyslog
- V* h3 g; s$ l/ a @" u% C% |! Y9 D/ a1 B/ x
【1】作用:主要用来采集日志,不产生日志" N2 P- ~# T! k
- i# f& g" a! S. h6 \ 【2】配置文件:/etc/rsyslog.conf
, |6 I; M+ g0 B# H+ N% I6 L; u
5 p2 {+ C8 b' I% D" f 编辑文件时的格式为: ------ *.* 存放日志文件 ------
4 b! y, f% @- E( {. s6 `2 k/ I: `9 ]4 H
其中第一个*代表日志类型,第二个*代表日志级别& x4 D; z; r# f5 E& A- V. a) ]% Y
) G" n0 S8 }7 m9 m- x+ n9 D+ S
1.日志类型分为:
+ ^! Y ^& T/ }7 P" e. y% m/ Z6 [# a, v2 o$ u- u
auth ##pam产生的日志6 w5 F2 y# Q9 u' R
9 O! O2 X( i4 m( [; v authpriv ##ssh、ftp等登录信息的验证信息
' |* m: o. j2 b/ E) ^; B& }9 p3 { i0 _, C6 F
corn ##时间任务相关
& k4 Z+ Q# ?7 z1 }5 D7 \) ]
; s& L& L6 f& X; V: P0 c, L2 z' T' z kern ##内核
; G8 U* a) t/ S7 l; H* F6 ?+ o3 d# o4 S" Y3 ?9 ? H* r
lpr ##打印
/ ?0 @& m! z( x6 s; N5 {' M8 N) v6 {8 r# M2 D
mail ##邮件
, M; q4 W# l' y, G0 f5 {" \$ _
' Y. b. J5 n; Y! h7 @$ C' W _6 U mark(syslog)-rsyslog##服务内部的信息,时间标识
# k* c- P) Y: c4 l
* ~& k9 |6 a: R1 }& d; E/ Y news ##新闻组
# u6 ]% |) s3 b. _% O2 ^2 Z
9 S& {" M/ O; M& C, E. M6 U user ##用户程序产生的相关信息
c' q" I2 ]6 s; R9 P" }$ Q% T/ ?
uucp ##unix to nuix copy主机之间相关的通信
, O! ]/ y, N! x8 s' {1 d' |! L! C9 Q3 R& C
local 1-7 ##自定义的日志设备, u [; a ]8 r& |7 g
`1 r8 o8 E: h7 j+ Y" o
2. 日志级别分为:
3 w4 i: g E! v. a% R
$ D: `* H* Y P9 e0 d. b0 s( _ debug ##有调试信息的,日志通信最多+ t, i1 o1 ] l: r
: C+ o w. `/ o0 ], l# Q
info ##一般信息日志,最常用
( s! b1 _+ {; Z/ y' {0 k2 K, G
, s% a7 o9 {1 C" K0 |5 w" U notice ##最具有重要性的普通条件的信息 M" k' ~; W& S( K: O
+ q1 d- P! k. ^8 T E1 M
warning ##警告级别0 y2 V7 k+ e/ \: }4 ^7 @' e+ ? O
9 H- L# H' F$ E, H err ##错误级别,阻止某个功能或者模块不能正常工作的信息
! |* x3 F h/ O) o
# c3 {3 b$ ?5 n& u; J9 q, D' L crit ##严重级别,阻止整个系统或者整个软件不能正常工作的信息/ j! ~2 D0 [4 p/ j2 C
) A5 @! {% Z+ C" Z alert ##需要立刻修改的信息
- S8 z- q, n8 K, K' B7 S; h# [5 N4 E8 S0 T
emerg ##内核崩溃等重要信息$ e1 |% Z# G U3 R: _9 ~7 a0 p
- B4 b2 O" j2 c* Y
none ##什么都不记录 . L, x" o- F3 Q. K3 p# T" ?% w
% J2 H5 N! ?0 N0 A 注意:从上到下,级别从低到高,记录信息越来越少
3 w" s: L, Y6 p* H4 E1 b5 D/ H$ d9 g6 P( g# ]
详细信息可查手册:man 5 syslog
1 {/ R$ f3 _" N+ n2 S$ \
7 d. U: s# q* V- z* N 3.示例:在/etc/rsyslog中添加一个日志文件/var/log/xniu,当sshd服务出错时,该文件会接收到错误
) u: A* F; c. F- o1 E2 E. g5 M$ m: l8 {2 e0 `, z
[root@client ~]# vim /etc/rsyslog.conf' }2 Y; r# c1 \2 [4 }
" y; z- k7 l9 c5 P
' X2 l& [3 Q! s8 {: |$ {1 `. x6 P
( f/ ~+ b# C) m, m6 {& R
* m9 C0 G' @' _- n# @
6 U3 ~3 D% T( h5 ^
( s1 ]2 W7 O5 y8 Q6 z
; }9 e' t( W! Y1 l6 y5 q& o( _% ?8 ] 5 o% Y/ n/ |+ z9 R
注释: ------ > /var/log/xniu ---是对文件的内容进行清空;当系统配置文件一定要重启使其生效。
9 n5 j$ Y0 A* @% |; }- p, Y" [' n: s1 H' _! x' h
3.日志的远程同步
, v) e' X; K, o* L6 ~2 i D5 U, l0 a) K+ |9 Q. O: C
【1】 作用:便于管理多台主机
7 P- X* d, J3 z3 i9 y' h @0 F! G: R7 q; [4 f# |8 L: }
【2】步骤:
8 s9 d3 W( z6 H2 l: ]: V9 r2 V) w ?4 y$ q
(1)在日志发送方:vim /etc/rsyslog.conf ----->文件里添加内容: *.*@172.25.254.97 ------> systEMCtl restart rsyslog8 n! Y f# j8 @5 R/ ?$ c
8 T4 Z9 S# K. l$ H) ~# W0 ` 注释:添加内容里面,@表示使用udp协议发送;@@表示使用tcp协议发送 ) S- x, y) u" d Q* m
" r% Q$ Z7 u- ^. X8 O* A
(2)在日志接收方:vim /etc/rsyslog.conf ------>使第15行、16行有效------> systemctl restart rsyslog ------>systemctl stop firewalld" t+ e+ w6 t2 |9 B0 x. E. \% u
6 d) p9 O2 p1 {' \6 y( v' q+ _ ------>systemctl disable firewalld+ [1 x( T" b* U
6 p6 e" x# w& v+ N. v$ [6 H W: w
注释: 配置文件里面,15行:$ModLoad imudp ##表示日志接受模块;
1 S. d8 `1 Z. R2 ]4 o' |# {6 z( ?* r9 B& q, J4 ~" ~% X
16行:$UDPServerRun 514##表示开启接受模块
5 x; Q; a, j+ O7 C9 ^5 j+ D. T' O+ v7 r' V
systemctl stopfirawalld##关闭接受方防火墙
2 k3 ~( l9 w( B, z0 b3 @7 y4 c7 {5 C7 d! H" c" y( f* m
systemctl disable firewalld ##使防火墙开机不自启动 : ]7 R% Z) x0 N( Y3 Q
! [$ r9 a# d/ f' k, b
(3)发送方和接收方均清空日志文件,使用命令: > /var/log/message . _& Z1 J+ u/ F7 ~/ b* h
0 f& {$ f. C0 M+ j (4)测试:在日志的发送方运行:logger test ------> cat /var/log/message ;完成之后,会产生日志信息
) I; N7 [5 ~; \7 C( g% V% f' y$ A8 C5 r- s( s
在接受方运行:cat /var/log/message ; ! J" x) i, z0 J+ O9 B; m3 z
$ V# A8 j r t( O' }& [ 【3】示例:client虚拟机为发送方,server虚拟机为接受方;实现日志的同步- i' i O/ G: g+ l! F
d8 Q1 d+ X$ m4 \# `2 m5 n [root@client ~]# vim /etc/rsyslog.conf/ l n: j6 Y6 h2 ]
1 }1 H( h& M, Z7 f) Y
) l% q" K9 J9 w1 N% M4 X" c( y5 K0 O8 B. |) a+ @" n
6 @- s# L" R+ s8 l; Y
/ F3 z' e l3 l. Q9 ]+ P
) P4 d5 Q4 x/ M8 k% o& E- t/ z
3 G" J5 F/ ]9 @" I; i) Z; |
9 T. s; H' {, v! S5 r) u( B: |; r6 D
/ R2 J1 u' }0 p D: [8 @9 y7 b 0 Y: r$ G! R. t r1 C. R+ B! D
在服务端进行操作: 0 t7 ] j& B: b5 V+ b: \
4 O: u/ } V2 E! R% |
[root@server ~]# vim /etc/rsyslog.conf
( w# i- d& E" Z% W0 }2 _2 U+ }* t2 |
9 g1 Y, |- s. e0 o0 I
8 | M5 i8 A( `1 ~: L& G
y) U+ f$ z3 y. V" V; m
8 p: V/ Z6 C9 d7 e* ` T
) q+ Q/ F3 g$ o 注意:清空日志文件的先后顺序。
$ B3 c$ _& U' R2 e+ I5 F! Q A" Q/ @" S# _, e1 l0 ]0 W; Z( t
4.日志采集格式的设定 g' v% Q- k3 R& A9 b# P
4 \: h3 U) R/ x: J; {# y
【1】作用:从发送方同步过来的日志,不利于我们查看相关信息;所以要接收方采集的日志按我们自己的设定的规则来显示
- x m3 v. F; H' B- }- E) z& F. D, x" y
【2】设定步骤:vim /etc/rsyslog.conf ------> $template LOGFMT,"%timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n"2 {( ?! u8 ]) D% _
0 g- ^* w" u* y9 H" O ------> 在自己显示的日志文件后面,把格式添加进去:*.*/var/log/westos;LOGFMT 4 f$ @+ x3 m2 T. _* K
' [3 k1 \4 q& X* ~$ z; F 注释: %timegenerated% ##显示日志时间
$ U$ X6 g9 m$ n1 C9 a% Z! M- }; @
- I3 ~. l9 n2 {& C %FROMHOST-IP% ##显示主机IP3 W `8 t# C' K/ o& V
1 P$ v: p, I! {4 U" H- ?
%syslogtag% ##日志记录目标% Y; _# X# f M$ b# l! x: J& |
u& l, b, c1 }8 q! I" Q) }* `: r %msg% ##日志内容
3 N2 E$ \6 M9 a0 }# G' c! v5 b7 b" T* Q+ C
\n ##换行
- c2 x4 `" K' c$ Q4 Z E- f
, ^( i4 t- j( ] 【3】 示例: 在server虚拟机中设置规则,可以查看到发送方的信息/ N; L1 w8 U, C6 ]4 V# s& B4 F
5 p7 a# ]2 x$ d+ ?5 a3 R5 W
[root@server ~]# vim /etc/rsyslog.conf8 R. m J) p# I
$ a# s) J- W( [# n' H
- p6 k; ^3 Z0 x1 n1 T- |
- ]0 o2 g8 a, {" f: Y; A: D
在server主机测试结果:
5 r; o( u# y/ n& m0 _ S( Z( H/ ~6 r( X( Q& W+ P
' W. n, J! L: u& I& N) O9 Z) u3 O4 R! b: ~
$ J) V0 p. Q; m1 x- U* K% E5.日志分析和采集工具 , j: t( r9 i3 K+ \% Y
+ Z) }- W- [7 w8 ^$ c
【1】命令:journalctl##直接执行,进行日志的查看" G1 W+ E5 j5 n. p6 p8 k! d
$ X+ G! N3 ^& _ 【2】参数:-n 3 ##查看最近三条记录-perr##查看错误日志-overbose##查看日志的详细参数, a" q2 G% W/ M f2 u
& C- ~' C7 u8 o" b6 r6 D
--since##查看从什么时候开始的日志 --until##查看什么时候截止的日志& k7 d3 J! G1 v2 i: Z* Z
. u: M7 `/ I' f. M( G1 G4 V& g
【3】如何使用--- systemd-journald ---保存系统日志信息
6 b8 N6 K* ]5 Y& M( @1 t ]2 q( B6 m: X g
【4】示例: 使用-n命令来显示最近3条命令
5 _& \* k- G8 e1 Z7 e% ]( K
$ i5 v: b. o8 \5 e
/ ]( Q3 A7 z! X1 e2 u
0 Y' i r; z+ P! I
- }6 A6 Q0 U- g- _ 使用-p命令显示错误日志:. n! |2 G' [# t# o+ g
$ C# c8 n" E8 S. P6 X x8 k
; K+ m, b; S7 W+ O. b K# e
- S9 a3 _9 Q" m6 ~2 [ v
! X7 Q6 T& C) C; \1 J 使用-o verbose查看详细参数:# U, Y' n* t1 p/ c( W5 o
, n# T0 o* c- j1 J
% w |0 V. ^) R' }
0 k+ t9 N$ N2 k
1 O9 H2 L# |3 p: @( l2 f 也可以用命令:journalctl _PID=2482 _COMM=sshd 来进行精确查找:
, V- Y& A3 `- v* A4 Z
$ u) J& p N" Z( ]/ _& n. }) o
: K. Q- D" K) I/ n5 Z$ i: t, J2 `4 x: e0 C% k" s- C
: o3 v% U- i: z- p$ } 使用命令:journalctl --since "2018-07-27 12:00" --until "2018-07-19 00:00" 时间段的日志+ ~9 K4 G2 ?6 K) {( J4 \
6 Z B. D7 b& @' i
5 [6 O6 p7 w' A: w. D$ H5 p- {
9 h1 b$ O' H# F/ b8 a( H + ]: \8 g/ \8 D4 C4 `
% Q1 h% g8 Z* n" T, z0 g
7 B p# \" V0 Z1 f \9 t
补充:日志在系统的存储是暂时的,系统重启后之前的日志信息就不会存在。可以通过以下步骤实现日志的信息保存(在设置之后的留下的信息) ) @( x% M2 N# w- T
7 z% m' U- J) s+ c$ d [root@client ~]# mkdir /var/log/journal
1 n& T4 o, D$ w [root@client ~]# chgrp systemd-journal /var/log/journal/ x0 c' u/ q5 s5 F( C. A9 ^; f3 w3 V
[root@client ~]# chmod g+s /var/log/journal/ ## 把该文件的使用均指定为组信息) j, W# ?5 p" s: U
[root@client ~]# ps aux | grep systemd-journal
" x) b0 H% N2 ~# j- Y* ]! p root 364 0.0 0.2 40864 2428 ? Ss 06:05 0:00 /usr/lib/systemd/systemd-journald
, v7 L: B# N) C% N root 5298 0.0 0.0 112644 936 pts/0 R+ 12:08 0:00 grep --color=auto systemd-journal
$ O$ b6 A4 R4 R; Z& ~ [root@client ~]# killall -1 systemd-journald ##重新开启日志进程' [8 f w5 Y P' t
[root@client ~]# cd /var/log/journal/
3 l4 Z' G* D% f. y [root@client journal]# ls
F, c4 n0 V5 A6 t! d- C3 `6 b 946cb0e817ea4adb916183df8c4fc817 ##记录日志信息的id7 R1 g% P; \& B
[root@client journal]# ll ##该日志会记录7-20 12:09以后的记录- n: N$ d& i7 k0 {) |- g
total 0& j# z# n2 ~3 m% h
drwxr-sr-x 2 root systemd-journal 27 Jul 20 12:09 946cb0e817ea4adb916183df8c4fc8176 e+ y; m4 c/ |! v y& t! F# L
[root@client journal]# date
1 I+ j) C: V2 m1 O) I Fri Jul 20 12:10:17 CST 2018$ F; `% ]9 h' q. Y9 F& P5 y- t2 K
6.日志时间同步
# l1 C0 w3 D. T
$ A( m- H2 ~* ~% M- j# g( H 【1】作用:让多台虚拟机保持时间的一致。
/ W7 I7 _: V) ]& G; X7 C" k' w' u7 J j9 j& ^+ F
【2】服务名称:chronyd
/ w: A0 B# {) k
. k: n1 p4 i1 ?" Z1 W* c, y4 g 【3】步骤:(在两台虚拟机下进行)
$ V* @% ~3 I9 ?+ L* K# T/ E
" e/ |0 n1 [0 M) V' v. v (1)在服务端配置:vim /etc/chronyd
0 Q6 r4 @8 J6 o) {) A; r) Q1 o) c1 @! v& t/ N) U. {( J$ ?+ a' ?) W
22行 allow 172.25.254.0/24 ## 允许ip为172.25.254.0、子网掩码为24的主机同步时间* Z1 {3 M# ?2 B0 D3 E, ~# ?
l! Y: f% s9 ?6 t: X
28行 local stratum 10 ##表示不同步其他时间, R- A, }: A: r, u) A- z. H
& B- K, P: J) i
systemctl restart chronyd
/ H6 {& t6 g2 A& t/ O; r9 B+ ]
+ X7 d. V- ]/ t# z4 \8 L4 v3 p (2)在客户端配置:vim /etc/chronyd8 a( i- _. m% Q. Q/ Y
, w) ~" X; v* c P+ N# w
2-5行留下一行:server 172.25.254.97 ##表示要同步的主机为172.25.254.97+ {3 W! a. y, ]
. u2 {1 Z* O1 e% p) H$ h) ^! m
systemctl restart chrond ## 重启服务$ O" z/ N* X& D6 ?0 t
. T# ?- S) N3 h/ b3 h0 C& C systemctl stop firewalld ## 关闭防火墙) I/ B- P% u+ S& K# C- O
/ _8 {2 j6 P; a( X2 x (3)测试:在客户端输入:chronyc sources -v
1 n7 O8 ^) K- C" _; q% M
. \1 M) a* T+ N6 R3 l- x- ^! k1 r$ R 若结果为如下,则表示同步成功:
h! i8 I! ^& Q, ]0 F; g; h% p% {/ t+ ^7 S+ X/ q# r; |2 I
" f$ p( o& h& F& ^
3 k9 Z+ W1 B' j
注意:在做此实验前,两边的时间是不相同的(可以使用date查看);服务器端和客户端要关闭防火墙,这样可以进行数据的同步;1 e% B, P9 Q$ F0 R
- t% `' ^1 z* p0 }( G: r4 m8 P5 E
文件配置之后要重启。 , C( N% ~5 F. X+ f" _/ s# W
) u( b* W: w# i0 T: f8 b" B7.时间设置timedatectl
8 u: s+ R4 J/ c" z5 g9 a
! ]7 R1 b0 h& ] 使用timedatetcl查看系统时间3 R$ U( } R9 G' w0 r( z7 X
; s. i% }, t) @4 ~
, R& s" N* s( J3 w5 [" Y2 p1 J" Z
1 f! }& W3 }! U4 R( F& e: |! P
( \( T2 A' k" W$ V 命令timedatectl list-timezones列出所有时区 # f4 G o' I. M
1 {8 x B1 J( O3 w7 n
5 q% g- g0 t& w
! C, ^9 d5 ]- ~% X! r. I8 M( `7 F
* b/ t7 ~) a6 T/ _
使用--- timedatectl set-timezone 时区名---来修改时区 ( @/ A) L8 N$ Y' f+ N
$ m' V/ u2 J' T2 d2 u1 [
6 f* a. _ f, Y; T9 d
* \7 h" Z, }5 \( G 9 ?5 B- o' x. E2 f' \
使用---timedatectl set-time "2018-7-20 12:00:00" ---对时间设定- }) b; G+ X/ ?6 x
: C/ z+ P, C6 J+ e9 x, l& ?
" p+ L! o* t4 \, Q% n! r4 \
6 q% m1 Q7 ~; M- `
6 F, @) J! j1 Y4 M
注意:当前系统中的时间为bios时间+时区(windows下无这种计算方法);9 F- I1 Y$ K7 u, W2 ^, x9 l
7 L3 h; e* I: U. P ---timedatectl set-local-rtc 0---表示使用UTC时间
) b" \ n! ? V
. W9 |+ ~5 d! a) L% i# @ ---timedatectl set-local-rtc 1---表示使用LOCAL时间
/ e5 s* Z- V% p2 n6 g
8 U% P( Q* I! }% p0 a; W, c4 S
$ a9 O9 R3 }+ X! t$ q, h9 c6 | |
|