日志配置
程序包:rsyslog
rpm -ql rsyslog
centos6
/etc/logrotate.d/syslog
/etc/pki/rsyslog
/etc/rc.d/init.d/rsyslog
/etc/rsyslog.conf
/etc/rsyslog.d
/etc/sysconfig/rsyslog
/lib64/rsyslog
/sbin/rsyslogd/
/usr/share/doc/rsyslog-5.8.10
/usr/share/man/man5/rsyslog.conf.5.gz
/usr/share/man/man8/rsyslogd.8.gz
/var/lib/rsyslog
centos7
/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/sbin/rsyslogd
/usr/share/doc/rsyslog-7.4.7
/usr/share/man/man5/rsyslog.conf.5.gz
/usr/share/man/man8/rsyslogd.8.gz
/var/lib/rsyslog
主程序:
rsyslogd
配置文件:
/etc/rsyslog.conf
/etc/rsyslog.d/*.conf
库文件:
/lib64/rsyslog/*.so
配置文件的格式:
1》由三部分组成
MODULES: 相关模块配置
GLOBAL DIRECTIVES: 全局配置
RULES: 日志记录相关的规则配置
2》规则rules的配置格式:
facility.priority;facility.priority target
设施 . 级别 位置
3》facility:
*: 所有的facility
facility1,facility2,.... : 指定的facility列表
4》priority:
*: 所有级别的日志信息
none: 没有级别,即不记录
priority_name: (8中级别之一)指定级别(含)以上的所有级别的日志信息
=priority_name: (8中级别之一)仅记录指定级别的日志信息
5》facility和priority中间可以使用一些符号来表示特殊意义:
. 点号表示比后面还要高的等级(含)都要被记录下来
.= 表示所有需要的等级就是后面所接的等级,其他的不要
.! 代表不等于后面多接的等级,即除了这个等级外的都将记录
6》target:
日志信息发送的位置。
1)文件路径:通常在/var/log/ ,文件路径前的 - 表示异步写入。
2)用户:将日志事件通知给指定的用户,* 表示登录的所有用户。
3)日志服务器:@server_host ,把日志送往至指定的远程服务器记录。注意,服务器必须要监听tcp或udp的514端口上的服务。其中@host表示使用udp的协议,@@host表示使用tcp的协议。
4)管道: | COMMAND,转发给其他命令处理。
配置日志服务器
1》把本地配置为日志服务器,可以打开配置文件/etc/rsyslog.conf中的指定模块,让其监听在514端口上。
vim /etc/rsyslog.conf
#### MODULES ####
12 # Provides UDP syslog reception
13 $ModLoad imudp
14 $UDPServerRun 514
15
16 # Provides TCP syslog reception
17 $ModLoad imtcp
18 $InputTCPServerRun 514
2》打开后重启rsyslog服务器生效
service rsyslog restart
ss -ntul|grep 514
3》在应用服务器
vim /etc/rsyslog.conf
local2.* @@192.168.25.107
日志切割存储的功能组件:logrotate
1》介绍
logrotate 程序是一个日志文件管理工具,用来把旧的日志文件删除,并创建新的日志文件,称为日志转储或滚动。
可以根据日志文件的大小,也可以根据其天数来转储。
logrotate是结合cron定期的对日志文件进行处理,主要是通过/etc/cron.daily/logrotate程序来处理。
2》logrotate的配置文件:
/etc/logrotate.conf
/etc/logrotate.d/
3》/etc/logrotate.conf配置主要参数说明
compress 通过gzip 压缩转储以后的日志
nocompress 不需要压缩时,用这个参数
copytruncate 用于还在打开中的日志文件,把当前日志备份并截断
nocopytruncate 备份日志文件但是不截断
create mode owner group 转储文件,使用指定的文件模式创建新的日志文件
nocreate 不建立新的日志文件
delaycompress 和 compress 一起使用时,转储的日志文件到下一次转储时才压缩
nodelaycompress 覆盖 delaycompress 选项,转储并压缩
errors address 专储时的错误信息发送到指定的Email 地址
ifempty 即使是空文件也转储,是缺省选项。
notifempty 如果是空文件的话,不转储
mail address 把转储的日志文件发送到指定的E-mail 地址
nomail 转储时不发送日志文件
olddir directory 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
noolddir 转储后的日志文件和当前日志文件放在同一个目录下
prerotate/endscript 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
postrotate/endscript 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行
daily 指定转储周期为每天
weekly 指定转储周期为每周
monthly 指定转储周期为每月
size 指定日志超过多大时,就执行日志转储
rotate count 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
Missingok 如果日志不存在,提示错误
Nomissingok 如果日志不存在,继续下一次日志,不提示错误
weekly 默认每周对登录文件进行一次切割
rotate 4 保留多少个登录文件,默认为4个
create 由于登录文件被更名,因此创建一个新的来继续记录
dateext
#compress 被更动的登录文件是否需要压缩
include /etc/logrotate.d 将这个目录的所有文件都读取进来
/var/log/wtmp { 仅针对/var/log/wtmp所配置的参数
monthly 每个月移除,取代每周
create 0664 root utmp 指定新建文件的权限与所属账号、群组
minsize 1M 文件容量超过1M后才进行切割
rotate 1 仅保留一个,即仅有wtmp.1保留而已
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
rsyslog将日志记录于mysql中
1》准备MySQL Server
2》在mysql server 上授权rsyslog 能连接至当前服务器
mysql> GRANT ALL ON Syslog.* TO \'loguser\'@\'%\' IDENTIFIED BY \'xm1234\';
3》在rsyslog 服务器和mysql server上安装mysql 模块相关的程序包
yum install rsyslog-mysql
4》为rsyslog 创建数据库及表;
mysql -uroot -pxm1234 < /usr/share/doc/rsyslog-7.4.7/mysql-createDB.sql
5》配置rsyslog 将日志保存到mysql中
vim /etc/rsyslog.conf
#### MODULES ####
$ModLoad ommysql
#### RULES ####
facility.priority :ommysql:DBHOST,DBNAME,DBUSER, PASSWORD
示例
local2.* :ommysql:192.168.213.128,Syslog,loguser,xm1234
systemctl status rsyslog.service
systemctl restart rsyslog.service
6》测试
在rsyslog服务器上
logger -p local2.info "haha"
在mysql服务器上
mysql -uroot -pxm1234
use Syslog ;
show tables;
select count(*) from SystemEvents;
select * from SystemEvents \\G;
通过loganalyzer 展示数据库中的日志
1》在rsyslog 服务器上准备lamp 或lnmp 组合
yum install httpd php php-mysql php-gd
2》安装LogAnalyzer
tar xf loganalyzer-4.1.5.tar.gz
cp -a loganalyzer-4.1.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
4》安全加强
cd /var/www/html/loganalyzer
chmod 644 config.php