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进程的属主
|
点击here之后,一路下一步 就是这么个情况:
|