rsyslog日志系统

1 rsyslog日志系统
linux上,应用程序和内核都需要记录日志。负责记录应用程序的是syslogd,记录内核的则是klogd。centos 5上使用的是syslog,但由于其功能过于薄弱和单一,在centos 6和7上被rsyslog所取代。事实上rsyslog是一个服务。
日志:历史事件的相关记录。早期时就有航海日志。
记录的内容:事件发生的时间、事件内容。
日志级别:事件的关键性程序,loglevel。

1.1 rsyslog的优势
1、支持多线程。
2、能够基于UDP, TCP, SSL, TLS, RELP等协议进行远程日志传输,并且还可以机密。
3、日志可以保存至MySQL, PGSQL, Oracle等多种关系数据库中。
4、支持非常强大的过滤器,可实现过滤系统信息中的任意部分。
5、自定义输出格式。
6、适用于企业级别日志记录需求。
但中等规模站点的日志信息放在数据库中已经不合适了,可能会放在Nosql,分布式系统。比如轻量的日志平台elk:elasticsearch, logstash, kibana。
日志生成方:应用程序和内核。而且每个应用程序都可自行记录日志。这样就会造成每个应用程序之间记录日志的格式并不相同,分析起来很不方便。因此,才诞生了syslog这样一个统一的日志服务。内核也可记录日志。
1.2 配置文件
rsyslog的配置文件:/etc/rsyslog.conf
定义在RULLS中的格式:
facility.priority     target
设施.级别             何处
facility:设施,从功能或程序上对日志进行分类,并由专门的工具负责记录相应的日志信息。
auth:认证相关的
authpriv:权限,授权相关的
cron:任务计划相关的
daemon:守护进程相关的
kern:内核相关的
lpr:打印相关的
mail:邮件相关的
mark:标记相关的
news:新闻相关的
security:安全相关的,与auth相似
syslog:syslog自己的
user:用户相关的
uucp:unix to unix copy相关的
local0 - local7:用户自定义使用
priority:级别
debug:程序或系统的调试信息,最详细的记录。
info:一般信息
notice:不影响正常功能,需要注意的消息
warn, warning:可能影响系统功能,需要提醒用户的重要事件
err, error:错误信息
crit:比较严重的
alert:必须马上处理的
emerg, panic:会导致系统不可用的
指定级别的方式:
*:所有级别
none:没有级别
priority:比此级别高的(包含)所有级别的日志信息都会记录
=priority:仅记录指定级别

target:
文件路径:将日志记录于指定的文件中。在文件路径之前使用"-",表示异步写入。
用户:将日志信息通知给文件
*:所有用户
日志服务器:@SERVER
管道:| COMMAND
文本记录日志文件的格式:
事件产生的时间 主机 进程(PID): 事件
[root ~]# tail /var/log/messages
May  8 19:40:27 www kernel: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
May  8 19:56:44 www kernel: e1000: eth1 NIC Link is Down
May  9 00:00:30 www xinetd[1060]: START: telnet pid=2528 from=::ffff:172.16.250.130
特殊日志文件:
有些日志记录二进制格式,例如,两个日志文件:
成功登录系统的日志:/var/log/wtmp,查看命令:last
失败的登录的尝试:/var/log/btmp,查看命令:lastb
1
2
3
4
[root ~]# file /var/log/btmp
/var/log/btmp: DBase 3 index file
[root ~]# file /var/log/wtmp
/var/log/wtmp: data



这两个命令可以实现过滤功能
lastlog命令:显示当前系统每个用户各自最近一次的登录信息。
1.3 模块
配置文件中$ModLoad表示装载模块。
允许从udp/tcp 514端口收集日志信息:
$ModLoad imtcp
$InputTCPServerRun 514
$ModLoad imudp
$UDPServerRun 514
一般使用udp,查看rsyslog支持哪些模块:man rsyslog.conf
1.4 搞个日志服务器收集其他主机的日志信息
1、启用本机成为日志服务器
使用udp 协议514端口传输
1
2
3
[root ~]# vim /etc/rsyslog.conf
#$ModLoad imudp
#$UDPServerRun 514



2、把日志存储于mysql
a. mysql已经准备就绪,安装rsyslog-mysql
1
[root ~]# yum install rsyslog-mysql



查看生成的文件:
1
2
3
4
[root ~]# rpm -ql rsyslog-mysql
/lib64/rsyslog/ommysql.so # 就靠这个模块了
/usr/share/doc/rsyslog-mysql-5.8.10
/usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql # 创建rsyslog依赖的数据库所需的脚本。里面就是创建数据库和表的命令。



b. 创建rsyslog依赖的数据库
1
[root ~]# mysql < /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql



进入数据库查看
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
[root ~]# mysql
MariaDB [(none)]> SHOW DATABASES; # 查看库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| Syslog             |
| mysql              |
| performance_schema |
| test               |
+--------------------+
MariaDB [(none)]> use Syslog; # 此库就是脚本建立的了
MariaDB [Syslog]> SHOW tables; # 查看表
+------------------------+
| Tables_in_Syslog       |
+------------------------+
| SystemEvents           |
| SystemEventsProperties |
+------------------------+
MariaDB [Syslog]> DESC SystemEvents; # 表的结构
+--------------------+------------------+------+-----+---------+----------------+
| Field              | Type             | Null | Key | Default | Extra          |
+--------------------+------------------+------+-----+---------+----------------+
| ID                 | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| CustomerID         | bigint(20)       | YES  |     | NULL    |                |
| ReceivedAt         | datetime         | YES  |     | NULL    |                |
| DeviceReportedTime | datetime         | YES  |     | NULL    |                |
| Facility           | smallint(6)      | YES  |     | NULL    |                |
| Priority           | smallint(6)      | YES  |     | NULL    |                |
| FromHost           | varchar(60)      | YES  |     | NULL    |                |
| Message            | text             | YES  |     | NULL    |                |
| NTSeverity         | int(11)          | YES  |     | NULL    |                |
| Importance         | int(11)          | YES  |     | NULL    |                |
| EventSource        | varchar(60)      | YES  |     | NULL    |                |
| EventUser          | varchar(60)      | YES  |     | NULL    |                |
| EventCategory      | int(11)          | YES  |     | NULL    |                |
| EventID            | int(11)          | YES  |     | NULL    |                |
| EventBinaryData    | text             | YES  |     | NULL    |                |
| MaxAvailable       | int(11)          | YES  |     | NULL    |                |
| CurrUsage          | int(11)          | YES  |     | NULL    |                |
| MinUsage           | int(11)          | YES  |     | NULL    |                |
| MaxUsage           | int(11)          | YES  |     | NULL    |                |
| InfoUnitID         | int(11)          | YES  |     | NULL    |                |
| SysLogTag          | varchar(60)      | YES  |     | NULL    |                |
| EventLogType       | varchar(60)      | YES  |     | NULL    |                |
| GenericFileName    | varchar(60)      | YES  |     | NULL    |                |
| SystemID           | int(11)          | YES  |     | NULL    |                |
+--------------------+------------------+------+-----+---------+----------------+



3、配置rsyslog启用ommysql模块。在rsyslog配置文件的MODULES字段中定义。
1
2
3
[root ~]# vim /etc/rsyslog.conf 
#### MODULES ####
$ModLoad ommysql



4、定义某facility把日志记录至指定的数据库的指定表中,RULES段中定义。
1
2
#### RULES ####
*.info;mail.none;authpriv.none;cron.none  :ommysql:127.0.0.1,Syslog,rsyslog,rsyslog



5、数据库中创建rsyslog用户并授权
1
2
3
MariaDB [(none)]> GRANT ALL ON Syslog.* TO 'rsyslog'@'127.0.0.1' IDENTIFIED BY 'rsyslog';
MariaDB [(none)]> GRANT ALL ON Syslog.* TO 'rsyslog'@'localhost' IDENTIFIED BY 'rsyslog';
MariaDB [(none)]> FLUSH PRIVILEGES;



6、重启服务
1
[root ~]# service rsyslog restart



7、测试
1
2
3
[root ~]# yum install -y zsh
[root ~]# tail -1 /var/log/messages
May  9 05:44:07 www rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="924" x-info="http://www.rsyslog.com"] exiting on signal 15. # 没有yum的日志信息



进入数据库查看,测试OK
1
2
MariaDB [Syslog]> use Syslog;
MariaDB [Syslog]> SELECT * FROM SystemEvents\G




1.5 使用loganalyzer(WebGUI)来展示日志信息
由于是web工具,所以依赖lamp。lamp已然就绪,并且php没有问题。config.php是该工具的主配置文件,如果第一次配置错误,将该文件内容清空即可。
1、解压程序包
1
2
[root ~]# tar xf loganalyzer-3.6.5.tar.gz -C /vhosts/a.com/htdocs/
[root ~]# cd /vhosts/a.com/htdocs/



2、搞定一些文件
1
2
3
[root htdocs]# mv loganalyzer-3.6.5/src/ log
[root htdocs]# cd log
[root log]# cp ../loganalyzer-3.6.5/contrib/* . # 两个脚本文件



3、执行脚本
1
2
3
4
5
[root log]# chmod +x configure.sh secure.sh 
[root log]# ./configure.sh 
[root log]# ./secure.sh 
[root log]# chmod 666 config.php # 此文件就是该工具的主配置文件
[root log]# chown -R daemon.daemon ./* 将所有文件的属主属组改为httpd进程的属主



4、浏览器访问 http://172.16.45.10/log/
rsyslog日志系统_第1张图片
点击here之后,一路下一步
rsyslog日志系统_第2张图片
    就是这么个情况:  rsyslog日志系统_第3张图片

你可能感兴趣的:(linux)