一。 日志简介
Linux保存了系统中所发生事件的详细记录,这些记录称作日志文件或消息文件。可以查阅日志文件来确定系统当前状态,观察入侵者踪迹,寻找某特定程序(或事件)相关的数据。centos6使用rsyslog替代syslog记录日志
rsyslog的日志文件位于 /etc/rsyslog.conf 文件中 #开头为注释 主要包括几大部分:
#### MODULES #### 表示系统加载的模块
$ModLoad imuxsock 表示加载imuxsock模块 模块文件位于 /lib64/rsyslog/目录下
其中下面几行注释的部分 用于通过udp或者tcp接受远程消息 端口是514(默认注释也就是不开启)
# 提供udp接受消息
#$ModLoad imudp
#$UDPServerRun 514
# 提供TCP接受消息
#$ModLoad imtcp
#$InputTCPServerRun 514
#### GLOBAL DIRECTIVES #### 全局规则设定
$WorkDirectory /var/lib/rsyslog 工作目录
$IncludeConfig /etc/rsyslog.d/*.conf 包含 /etc/rsyslog.d下所有conf结尾的配置文件
#### RULES #### 用于配置哪种日志使用哪种级别 记录在哪些位置
语法 :facility.priority target
facility表示产生日志的设备 有以下这些值
关键字 值 解释
kern 0 内核信息,首先通过klogd传递
user 1 由用户程序生成的信息
mail 2 与电子邮件有关的信息
daemon 3 与inetd守护进程有关的信息
auth 4 由pam_pwdb报告的认证活动
syslog 5 由syslog生成的信息
lpr 6 与打印服务有关的信息
news 7 来自新闻服务器的信息
uucp 8 由uucp生成的信息(uucp = unix to unix copy)
cron 9 与cron和at有关的信息
authpriv 10 包括私有信息(如用户名)在内的认证活动
ftp 11 与FTP有关的信息
12-15 系统保留
local0 ~ local7 16-23 由自定义程序使用,例如使用local5做为ssh功能
mark rsyslog内部功能,用于生成时间戳
* 通配符代表除了mark以外的所有功能
priority 表示优先级 设置优先级后 所有低于该优先级的日志都输出到target中
关键字 值 解释
emerg 0 系统不可用
alert 1 需要立即被修改的条件
crit 2 (临界)阻止某些工具或子系统功能实现的错误条件
err 3 阻止工具或某些子系统部分功能实现的错误条件
warning 4 预警信息
notice 5 具有重要性的普通条件
info 6 提供信息的消息
debug 7 不包含函数条件或问题的其他信息
none (屏蔽所有来自指定设备的消息)没有优先级,通常用于排错
* 除了none之外的所有级别
facility部分可以是用逗号(,)分隔的多个设备,而多个seletor之间也可以通过分号(;)组合在一起。注意多个组合在一起的选择符,后面的会覆盖前面的,这样就允许从模式中排除一些优先级。默认将对指定级别以及更严重级别的消息进行操作,但是可以通过2个操作符进行修改。等于操作符(=)表示仅对这个级别的消息进行操作,不等操作符(!)表示忽略这个级别以及更严重级别的消息。这两个操作符可以同时使用,不过”!”必须出现在”=”的前面
比如 就表示uucp和news的crit消息 都记录在/var/log/spooler中
uucp,news.crit /var/log/spooler
比如(所有设备的info消息 除了mail和authpric和cron外 都记录在/var/log/messages)
*.info;mail.none;authpriv.none;cron.none /var/log/messages
target:将日志记录于指定的目标地点有以下几种选择:
普通文件:使用文件的绝对路径来指明日志文件所在的位置,例如:/var/log/cron。
终端设备:终端可以是/dev/tty0~/dev/tty6,也可以为/dev/console。
用户列表:例如动作为“root hackbutter”,将消息写入到用户root与hackbutter的计算机屏幕上。
远程主机:将信息发往网络中的其他主机的rsyslog守护进程,格式为“@hostname”。
在target前使用“-”表示异步写入。比如
mail.* -/var/log/maillog
查看其中 一个target文件内容
[root@node1 ~]# more /var/log/messages
Nov 19 17:45:01 localhost rsyslogd: [origin software="rsyslogd" swVersion="7.4.7" x-pid="787" x-info="http://www.rsyslog.com"] rsyslogd was HUPed
Nov 19 17:50:31 node1 dhclient[1182]: DHCPREQUEST on eno16777736 to 192.168.58.254 port 67 (xid=0x117d9a59)
Nov 19 17:50:31 node1 dhclient[1182]: DHCPACK from 192.168.58.254 (xid=0x117d9a59)
Nov 19 17:50:31 node1 NetworkManager[856]: <info> address 192.168.58.147
其中记录日志文件的内容为(记录: 时间,地点,人物,事件):
时间 主机名 进程名[进程id]:日志的内容
二。rsyslog安装
rsyslog的官网是: http://www.rsyslog.com
默认centos6以上都已经安装了rsyslog 确认是否安装
[root@node1 ~]# rpm -qa | grep rsyslog
rsyslog-7.4.7-12.el7.x86_64
如果没有安装
yum -y install rsyslog
查看 rsyslog安装的所有文件
[root@node1 ~]# rpm -ql rsyslog
/etc/logrotate.d/syslog
/etc/pki/rsyslog
/etc/rsyslog.conf
/etc/rsyslog.d
/etc/sysconfig/rsyslog
/usr/bin/rsyslog-recover-qi.pl
/usr/lib/systemd/system/rsyslog.service
/usr/lib64/rsyslog
/usr/lib64/rsyslog/imdiag.so
/usr/lib64/rsyslog/imfile.so
/usr/lib64/rsyslog/imjournal.so
/usr/lib64/rsyslog/imklog.so
/usr/lib64/rsyslog/immark.so
/usr/lib64/rsyslog/impstats.so
/usr/lib64/rsyslog/imptcp.so
/usr/lib64/rsyslog/imtcp.so
/usr/lib64/rsyslog/imudp.so
/usr/lib64/rsyslog/imuxsock.so
/usr/lib64/rsyslog/lmnet.so
/usr/lib64/rsyslog/lmnetstrms.so
/usr/lib64/rsyslog/lmnsd_ptcp.so
/usr/lib64/rsyslog/lmregexp.so
/usr/lib64/rsyslog/lmstrmsrv.so
/usr/lib64/rsyslog/lmtcpclt.so
/usr/lib64/rsyslog/lmtcpsrv.so
/usr/lib64/rsyslog/lmzlibw.so
/usr/lib64/rsyslog/mmanon.so
/usr/lib64/rsyslog/mmcount.so
/usr/lib64/rsyslog/omjournal.so
/usr/lib64/rsyslog/ommail.so
/usr/lib64/rsyslog/omprog.so
/usr/lib64/rsyslog/omruleset.so
/usr/lib64/rsyslog/omstdout.so
/usr/lib64/rsyslog/omtesting.so
/usr/lib64/rsyslog/omuxsock.so
/usr/lib64/rsyslog/pmaixforwardedfrom.so
/usr/lib64/rsyslog/pmcisconames.so
/usr/lib64/rsyslog/pmlastmsg.so
/usr/lib64/rsyslog/pmrfc3164sd.so
/usr/lib64/rsyslog/pmsnare.so
/usr/sbin/rsyslogd
/usr/share/doc/rsyslog-7.4.7
/usr/share/doc/rsyslog-7.4.7/AUTHORS
/usr/share/doc/rsyslog-7.4.7/COPYING
/usr/share/doc/rsyslog-7.4.7/COPYING.ASL20
/usr/share/doc/rsyslog-7.4.7/COPYING.LESSER
/usr/share/doc/rsyslog-7.4.7/ChangeLog
/usr/share/man/man5/rsyslog.conf.5.gz
/usr/share/man/man8/rsyslogd.8.gz
/var/lib/rsyslog
三。rsyslog作为日志服务器
模拟环境
node1(192.168.58.147) 日志接受服务器
node2(192.168.58.149) 日志产生服务器 模拟将登陆149日志推送到node1日志服务器
1》node1配置:
编辑/etc/rsyslog.conf:(将下面两行的注释#去掉)
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
重启 rsyslog服务(检查514端口是否开始)
[root@node1 rsyslog.d]# ^C
[root@node1 rsyslog.d]# systemctl restart rsyslog
[root@node1 rsyslog.d]# netstat -nlp | grep rsyslog
udp 0 0 0.0.0.0:514 0.0.0.0:* 2693/rsyslogd
udp6 0 0 :::514 :::* 2693/rsyslogd
关闭防火墙
[root@node1 rsyslog.d]# chkconfig firewalld off;
Note: Forwarding request to 'systemctl disable firewalld.service'.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
[root@node1 rsyslog.d]# service firewalld stop
Redirecting to /bin/systemctl stop firewalld.service
[root@node1 rsyslog.d]# iptables --flush
关闭selinux(将配置文件 SELINUX=disabled 禁用)
[root@node1 rsyslog.d]# find / -name selinux
/etc/sysconfig/selinux
/etc/selinux
/usr/lib64/python2.7/site-packages/selinux
/usr/share/selinux
/usr/src/kernels/3.10.0-514.26.2.el7.x86_64/include/config/security/selinux
/usr/src/kernels/3.10.0-514.26.2.el7.x86_64/scripts/selinux
/usr/src/kernels/3.10.0-514.26.2.el7.x86_64/security/selinux
[root@node1 rsyslog.d]# more /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
2》node2配置:
关闭防火墙和selinux 同上
修改 /etc/rsyslog.conf(原有基础上添加一行 输出到 @日志接受服务器 可以是ip也可以是主机名):
# The authpriv file has restricted access.
authpriv.* /var/log/secure
authpriv.* @192.168.58.147
重启日志服务
systemctl restart rsyslog
测试 在 147上 监控 /var/log/secure文件
[root@node1 rsyslog.d]# tail -f /var/log/secure
尝试在 149上
su - root
147(node1)输出两条日志(明显node2就是149)
Nov 21 19:09:23 node2 polkitd[954]: Unregistered Authentication Agent for unix-process:2683:339485 (system bus name :1.21, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8) (disconnected from bus)
Nov 21 19:10:14 node2 su: pam_unix(su-l:session): session opened for user root by root(uid=0)
四。日志rotate
系统的日志文件会随着使用天数和发生事件的增加在自动增长,对于服务器来说,如果没有一种机制限制这种增长,那么会有大部分的硬盘被消耗掉,linux系统设计了一种方式来解决这个问题:日志轮替。
日志轮替就是使用一个程序名为/usr/sbin/logrotate程序根据配置文件的设定,使用同名的空的日志文件替换现有的日志文件,被替换掉的日志文件,被改名后放置或删除掉。
logrotate本身于rsyslog无关 只是一种文件检测工具 通过cron定期检查文件的大小和创建时间 通过设置一些策略来清除或者备份日志
查看程序和相关文件
[root@node1 ~]# rpm -qa | grep logr
logrotate-3.8.6-6.el7.x86_64
[root@node1 ~]# rpm -ql logrotate
/etc/cron.daily/logrotate
/etc/logrotate.conf
/etc/logrotate.d
/usr/sbin/logrotate
/usr/share/doc/logrotate-3.8.6
/usr/share/doc/logrotate-3.8.6/CHANGES
/usr/share/doc/logrotate-3.8.6/COPYING
/usr/share/man/man5/logrotate.conf.5.gz
/usr/share/man/man8/logrotate.8.gz
/var/lib/logrotate.status
主配置文件/etc/logrotate.conf打开该配置文件解释:
[root@node1 ~]# more /etc/logrotate.conf
# 可以使用 man logrotate 查看该日志文件信息
# 设置每周轮替一次日志 daily表示每天 hourly 每小时
weekly
# 备份的日志 保持4个轮替周期 比如上面设置的weekly 表示备份的日志保留4周 4周将删除 配置hourly 四个小时后删除
rotate 4
# 当旧的日志文件达到轮替的要求是 创建一个新的空的日志文件
# create语法 create mode owner group 也就是 create 权限 文件拥有者 文件拥有组
create
# 使用日志作为轮替备份文件后缀
dateext
# 轮替后的日志文件是否被压缩 默认压缩格式gzip
# compresscmd指定压缩命令默认gzip
# uncompresscmd 表示解压缩的命令 默认是 gunzip
#compress
# 除了当前配置文件 还会加载该目录下的所有配置文件 该目录下有配置文件 该目录下的配置覆盖当前文件
include /etc/logrotate.d
# 指定/var/log/wtmp 这个日志文件的轮替规则
/var/log/wtmp {
monthly #每月自动轮替
create 0664 root utmp
minsize 1M #表示在轮替时间到达时 如果达到了最小size才发生轮替 比如 轮替时间时hourly 1个小时后 达到了1M就轮替 没达到就不轮替
maxsize 10M #表示不管是否到达轮替时间 只要大小超过10M 就发生轮替
rotate 1
}
/var/log/btmp {
missingok #如果日志文件不存在或者丢失 不报错 nomissingok是默认值 表示日志丢失 报错
monthly
create 0600 root utmp
rotate 1
}
# 系统相关日志应该被配置在这里 应用相关日志应该被配置在/etc/logrotate.d下
查看 /etc/logrotate.d 默认有一些轮替日志 比如httpd或者yum的
[root@node1 ~]# cd /etc/logrotate.d
[root@node1 logrotate.d]# ll
total 32
-rw-r--r--. 1 root root 178 Nov 23 2015 chrony
-rw-r--r-- 1 root root 194 Apr 12 2017 httpd
-rw-r--r-- 1 root root 893 Aug 4 11:28 mariadb
-rw-r--r--. 1 root root 136 Jun 9 2014 ppp
-rw-r--r--. 1 root root 224 Sep 7 2015 syslog
-rw-r--r--. 1 root root 188 Mar 31 2016 vsftpd
-rw-r--r--. 1 root root 100 Jun 15 2015 wpa_supplicant
-rw-r--r--. 1 root root 100 Dec 3 2015 yum
查看httpd的配置
[root@node1 logrotate.d]# more httpd
/var/log/httpd/*log {
missingok
notifempty #如果到达轮替时间 日志文件是空 不轮替
sharedscripts #prerotate 在日志文件被轮替之前执行的指定脚本 and postrotate 在日志文件被轮替之后指定执行的脚本
配置了这两个参数只要 /var/log/httpd/*log log结尾的日志发生轮替 指定脚本都会运行 配置 sharedscripts
#只会在该日志组中某个文件第一次发生轮替时执行 而且仅仅只执行一次
delaycompress #延迟压缩到下一个日志周期 可能在轮替时 程序还在继续写入到这个文件 可以稍微延迟
postrotate #发生轮替之后执行的脚本
/bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
endscript #所有定义脚本 比如postrotate之后都应该有一个endscipt表示结尾
}
自定义一个日志轮替配置文件 假设有个日志文件在 /var/log/mytest.log 配置文件 mytest 位于/etc/logrotate.d
[root@node1 logrotate.d]# cd /etc/logrotate.d && cat << EOF > mytest
> /var/log/mytest.log {
> hourly
> missingok
> compress
> minsize 1K
> maxsize 5K
> notifempty
> rotate 5
> }
> EOF
[1] 4045
[1]+ Done cd /etc/logrotate.d
查看文件内容
[root@node1 logrotate.d]# more mytest
/var/log/mytest.log {
hourly
missingok
compress
minsize 1K
maxsize 5K
notifempty
rotate 5
}
添加测试日志文件 添加一个随机大文件
产生随机字符串的大文件 bs单次写入字节数 count写入次数 写入10M
dd if=/dev/urandom of=/var/log/mytest.log count=1 bs=10485760
如果想产生空的
dd if=/dev/zero of=my_new_file count=102400 bs=1024
重新加载配置文件
logrotate /etc/logrotate.conf
如果你想强制轮替 可以使用
logrotate -vf /etc/logrotate.conf
等待一个一个小时之后 或者直接强制 logrotate -vf /etc/logrotate.conf 查看日志文件发现多了一个备份
五。日志存储到数据库
1》安装rsyslog-mysql记录日志到数据库
有时日志文件需要存储在关系型数据 并且通过第三方软件进行日志 分析 可以使用 rsyslog的mysql模块
查看所有模块中是否存在mysql 默认是没有
[root@node1 logrotate.d]# rpm -ql rsyslog
/etc/logrotate.d/syslog
/etc/pki/rsyslog
/etc/rsyslog.conf
/etc/rsyslog.d
/etc/sysconfig/rsyslog
/usr/bin/rsyslog-recover-qi.pl
/usr/lib/systemd/system/rsyslog.service
/usr/lib64/rsyslog
/usr/lib64/rsyslog/imdiag.so
/usr/lib64/rsyslog/imfile.so
/usr/lib64/rsyslog/imjournal.so
/usr/lib64/rsyslog/imklog.so
/usr/lib64/rsyslog/immark.so
/usr/lib64/rsyslog/impstats.so
/usr/lib64/rsyslog/imptcp.so
/usr/lib64/rsyslog/imtcp.so
/usr/lib64/rsyslog/imudp.so
/usr/lib64/rsyslog/imuxsock.so
/usr/lib64/rsyslog/lmnet.so
/usr/lib64/rsyslog/lmnetstrms.so
/usr/lib64/rsyslog/lmnsd_ptcp.so
/usr/lib64/rsyslog/lmregexp.so
/usr/lib64/rsyslog/lmstrmsrv.so
/usr/lib64/rsyslog/lmtcpclt.so
/usr/lib64/rsyslog/lmtcpsrv.so
/usr/lib64/rsyslog/lmzlibw.so
/usr/lib64/rsyslog/mmanon.so
/usr/lib64/rsyslog/mmcount.so
/usr/lib64/rsyslog/omjournal.so
/usr/lib64/rsyslog/ommail.so
/usr/lib64/rsyslog/omprog.so
/usr/lib64/rsyslog/omruleset.so
/usr/lib64/rsyslog/omstdout.so
/usr/lib64/rsyslog/omtesting.so
/usr/lib64/rsyslog/omuxsock.so
/usr/lib64/rsyslog/pmaixforwardedfrom.so
/usr/lib64/rsyslog/pmcisconames.so
/usr/lib64/rsyslog/pmlastmsg.so
/usr/lib64/rsyslog/pmrfc3164sd.so
/usr/lib64/rsyslog/pmsnare.so
安装rsyslog-mysql
yum install rsyslog-mysql –y
安装完成后查看
[root@node1 logrotate.d]# rpm -ql rsyslog-mysql
/usr/lib64/rsyslog/ommysql.so
/usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql
本机安装mariadb
yum -y install mariadb && service mariadb start
前面安装rsyslog-mysql时 看到安装了一个 mysql-createDb.sql脚本 登录mysql执行该脚本
查看该脚本
[root@node1 logrotate.d]# more /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql
CREATE DATABASE Syslog;
USE Syslog;
CREATE TABLE SystemEvents
(
ID int unsigned not null auto_increment primary key,
CustomerID bigint,
ReceivedAt datetime NULL,
DeviceReportedTime datetime NULL,
Facility smallint NULL,
Priority smallint NULL,
FromHost varchar(60) NULL,
Message text,
NTSeverity int NULL,
Importance int NULL,
EventSource varchar(60),
EventUser varchar(60) NULL,
EventCategory int NULL,
EventID int NULL,
EventBinaryData text NULL,
MaxAvailable int NULL,
CurrUsage int NULL,
MinUsage int NULL,
MaxUsage int NULL,
InfoUnitID int NULL ,
SysLogTag varchar(60),
EventLogType varchar(60),
GenericFileName VarChar(60),
SystemID int NULL
);
CREATE TABLE SystemEventsProperties
(
ID int unsigned not null auto_increment primary key,
SystemEventID int NULL ,
ParamName varchar(255) NULL ,
ParamValue text NULL
);
导入该sql
[root@node1 logrotate.d]# mysql -uroot -proot
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 16
Server version: 5.5.56-MariaDB MariaDB Server
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> source /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql
Query OK, 1 row affected (0.00 sec)
Database changed
Query OK, 0 rows affected (0.20 sec)
Query OK, 0 rows affected (0.33 sec)
MariaDB [Syslog]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| Syslog |
| db1 |
| db2 |
| db4 |
| mysql |
| performance_schema |
| test |
+--------------------+
8 rows in set (0.00 sec)
MariaDB [Syslog]> use Syslog;
Database changed
MariaDB [Syslog]> show tables;
+------------------------+
| Tables_in_Syslog |
+------------------------+
| SystemEvents |
| SystemEventsProperties |
+------------------------+
2 rows in set (0.00 sec)
修改 /etc/rsyslog.conf
MODULES部分修改
$ModLoad ommysql
udp远程接受也开启
$ModLoad imudp
$UDPServerRun 514
RULES部分添加
#所有设备的所有日志级别 使用ommysql 接下来四个参数数 ip 数据库名 用户名和密码
*.* :ommysql:localhost,Syslog,root,root
重启 rsyslog
service rsyslog restart
尝试在 node1和node2上
su – root切换登录 查看mysql数据库表
MariaDB [Syslog]> select * from Syslog.SystemEvents;
+----+------------+---------------------+---------------------+----------+----------+----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------+------------+-------------+-----------+---------------+---------+-----------------+--------------+-----------+----------+----------+------------+---------------+--------------+-----------------+----------+
| ID | CustomerID | ReceivedAt | DeviceReportedTime | Facility | Priority | FromHost | Message | NTSeverity | Importance | EventSource | EventUser | EventCategory | EventID | EventBinaryData | MaxAvailable | CurrUsage | MinUsage | MaxUsage | InfoUnitID | SysLogTag | EventLogType | GenericFileName | SystemID |
+----+------------+---------------------+---------------------+----------+----------+----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------+------------+-------------+-----------+---------------+---------+-----------------+--------------+-----------+----------+----------+------------+---------------+--------------+-----------------+----------+
| 1 | NULL | 2017-11-22 04:52:30 | 2017-11-22 04:52:30 | 5 | 6 | node1 | [origin software="rsyslogd" swVersion="8.24.0" x-pid="12601" x-info="http://www.rsyslog.com"] exiting on signal 15. | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 1 | rsyslogd: | NULL | NULL | NULL |
| 3 | NULL | 2017-11-22 04:52:30 | 2017-11-22 04:52:30 | 3 | 6 | node1 | Stopping System Logging Service... | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 1 | systemd: | NULL | NULL | NULL |
| 5 | NULL | 2017-11-22 04:52:30 | 2017-11-22 04:52:30 | 3 | 6 | node1 | Starting System Logging Service... | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 1 | systemd: | NULL | NULL | NULL |
| 7 | NULL | 2017-11-22 04:52:30 | 2017-11-22 04:52:30 | 5 | 6 | node1 | [origin software="rsyslogd" swVersion="8.24.0" x-pid="13158" x-info="http://www.rsyslog.com"] start | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 1 | rsyslogd: | NULL | NULL | NULL |
| 9 | NULL | 2017-11-22 04:52:30 | 2017-11-22 04:52:30 | 10 | 5 | node1 | Unregistered Authentication Agent for unix-process:13142:3838239 (system bus name :1.96, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8) (disconnected from bus) | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 1 | polkitd[992]: | NULL | NULL | NULL |
| 11 | NULL | 2017-11-22 04:52:30 | 2017-11-22 04:52:30 | 3 | 6 | node1 | Started System Logging Service. | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 1 | systemd: | NULL | NULL | NULL |
| 13 | NULL | 2017-11-22 04:52:47 | 2017-11-22 04:52:57 | 10 | 6 | node2 | reverse mapping checking getaddrinfo for bogon [192.168.58.1] failed - POSSIBLE BREAK-IN ATTEMPT! | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 1 | sshd[3947]: | NULL | NULL | NULL |
| 15 | NULL | 2017-11-22 04:52:47 | 2017-11-22 04:52:57 | 10 | 6 | node2 | Accepted password for root from 192.168.58.1 port 49910 ssh2 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 1 | sshd[3947]: | NULL | NULL | NULL |
| 17 | NULL | 2017-11-22 04:52:47 | 2017-11-22 04:52:57 | 10 | 6 | node2 | pam_unix(sshd:session): session opened for user root by (uid=0) | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 1 | sshd[3947]: | NULL | NULL | NULL |
+----+------------+---------------------+---------------------+----------+----------+----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------+------------+-------------+-----------+---------------+---------+-----------------+--------------+-----------+----------+----------+------------+---------------+--------------+-----------------+----------+
9 rows in set (0.00 sec)
node1和node2都存在登录日志 写入
2》使用
loganalyzer
进行web日志监控
loganalyzer是 一款用于监控 rsyslog日志的web管理工具 官网 http://loganalyzer.adiscon.com/ 所有版本的下载地址是:http://loganalyzer.adiscon.com/downloads/ 找到最新版本 这里我用 3.6.6-v3版本 下载应用包
解压 进入解压目录/src
tar zxvf loganalyzer-3.6.6.tar.gz && cd loganalyzer-3.6.6/src && ll
可以看到该程序 使用 php编写 需要搭建php环境
安装httpd
yum -y install httpd
安装php
yum -y install php php_mysql
运行httpd
service httpd start
httpd的应用默认安装在 /var/www/html下 该目录下创建一个 log目录 将 loganalyzer/src下所有文件拷贝到这个目录
cp -r ~/loganalyzer-3.6.6/src/* /var/www/html/log/
访问 http://192.168.58.147/log/ 提示出错 没有安装 点击here去安装
点击后进入第一步 点击next
进入该页面会提示错误 缺少config.php 权限要 666
缺少这个文件就创建这个文件(/root/loganalyzer-3.6.6/contrib/configure.sh脚本下就是这两句 直接执行即可)
[root@node1 log]# pwd
/var/www/html/log
[root@node1 log]# touch config.php
[root@node1 log]# chmod 666 config.php
recheck后 验证通过进入下一步 配置数据库的信息(Table prefix可以填也可以不填 图上没有 我实际是默认logcon_ 不动它)
点击下一步 表示连接成功 创建一些表 如果这一部分空白 说明第三步到第四部连接不上数据库 后来我检查httpd日志
/var/log/httpd/error_log看到这样一行
[Wed Nov 22 06:25:16.513148 2017] [:error] [pid 13699] [client 192.168.58.1:33194] PHP Fatal error: Call to undefined function mysql_connect() in /var/www/html/log/install.php on line 374, referer: http://192.168.58.147/log/install.php?step=3
没有定义mysql_connect函数 可能是php-mysql没有安装
yum -y install php-mysql
即可
第五步检查 并创建表
第六步 创建 loganalyzer的内部管理账号
第七步 配置日志的来源 这里我们选择mysql 将之前 rsyslog-mysql产生的日志数据库和表配置上
第八步 点击finish 完成安装 进入主页面
常用操作 可以搜索 可以点击日志查看详情 点击菜单栏第三个 Statistics 统计报表 会出现错误
提示错误是:
JpGraph Error: 25001 This PHP installation is not configured with the GD library 安装php-gd
yum -y install php-gd
重启 httpd
service httpd restart
此时可以正常查看
其他操作 就不演示了