Linux日志工具之rsyslog

[TOC]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
日志:历史事件;
历史事件:时间、地点、事件;

syslog:
klogd:kernel
syslogd:system(application)

事件记录格式:
日期时间 主机 进程[pid]: 事件内容;

C/S架构:通过TCP或UDP协议的服务完成日志记录传送;

rsyslog:
rsyslog的特性:
多线程;
UDP/TCP/SSL/TLS/RELP;
存储日志信息于MySQL, PGSQL, Oracle等RDBMS;
强大的过滤器,实现过滤日志信息中的任何部分的内容;
自定义的输出格式;
……

ELK:
E: elasticsearch, L: logstash, K: kibana

rsyslog日志收集器的基本术语:
facility:设施,收束日志数据流为有限几个;
auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, security, user, uucp, syslog, local0-local7
proirity:优先级
debug, info, notice, warn(warning), err(error), crit(critical), alert, emerg(panic)

程序包:rsyslog
程序环境:
配置文件:/etc/rsyslog.conf,/etc/rsyslog.d/*.conf
主程序:/usr/sbin/rsyslogd
CentOS 6:service rsyslogs {start|stop|restart|status}
CentOS 7:/usr/lib/systemd/system/rsyslog.service

配置文件格式:
由三部分组成:
MODULES:模块配置
GLOBAL DIRECTIVES:全局配置
RULES:日志记录相关的配置

RULES:
配置格式:
facility.priority target

facility:
*: 所有的facility;
f1,f2,f3,...:指定的facility列表;

priority:
*: 所有级别;
none:没有级别;
PRIORITY:指定级别(含)以上的所有级别;
=PRIORITY:仅记录指定级别的日志信息;

target:
文件:将日志信息记录到指定的文件中;文件路径前的-表示异步写入;
用户:将日志事件通知给指定的用户;
日志服务器:@host,把日志通过网络送往指定的服务器记录,而非由本地记录;
管道: | COMMAND

配置rsyslog成为日志服务器:
#### MODULES ####
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

其它的日志文件:
/var/log/secure:系统安装日志,应该周期性分析;
/var/log/btmp:当前系统上,用户的失败尝试登录相关的日志信息,lastb命令进行查看;
/var/log/wtmp:当前系统上,用户正常 登录系统的相关日志信息,last命令可以查看;

lastlog命令:用于查看当前系统上每一个用户最近一次的登录信息;

/var/log/messages:系统日志信息;
/var/log/dmesg:系统引导过程中的日志信息;
文本查看工具查看;
也可以使用专用命令dmesg查看;

rsyslog将日志记录于MySQL中:
(1) 准备MySQL Server;
(2) 在mysql server上授权rsyslog能连接至当前服务器;
mysql> GRANT ALL ON Syslog.* TO 'USER'@'HOST' IDENTIFIED BY 'PASSWORD';
(3) 在rsyslog主机上安装mysql模块相关的程序包;
yum install rsyslog-mysql
(4) 为rsyslog创建数据库及表;
mysql -uUSERNAME -hHOST -pPASSWORD < /usr/share/doc/rsyslog-7.4.7/mysql-createDB.sql
(5) 配置rsyslog将日志保存到mysql中;
#### MODULES ####
$ModLoad ommysql

#### RULES ####
facility.priority :ommysql:DBHOST,DBNAME,DBUSER,DBUSERPASSWORD

(6) 重启rsyslog服务;

通过loganalyzer展示数据库中的日志:
(1) 准备amp或nmp组合;
# yum install httpd php php-mysql php-gd

(2) 安装LogAnalyzer:
# tar xf loganalyzer-3.6.5.tar.gz
# cp -a loganalyzer-3.6.5/src /var/www/html/loganalyzer
# cd /var/www/html/loganalyzer
# touch config.php
# chmod 666 config.php

(3) 配置loganalyzer:
systemctl start httpd.service

http://HOST/loganalyzer

MySQL Native, Syslog Fields, Monitorware

(4) 安全加强
# cd /var/www/html/loganalyzer
# chmod 644 config.php