日志分析管理(rsyslog)及日志记录发送(logger)及日志集中管理和转储(logrotate)
注意:关闭selinux(执行rsyslog、logger、logrotate时都关闭selinux)在/etc/selinux/config中设置, 修改SELINUX为disabled,重启 reboot(一定要重启虚拟机)可以使用getenforce来查看如果是disabled表示是关闭的[root@rhel1 ~]# getenforceDisabled关闭...
注意:
- 关闭selinux(执行rsyslog、logger、logrotate时都关闭selinux)
在/etc/selinux/config
中设置, 修改SELINUX为disabled , 重启 reboot(一定要重启虚拟机)
可以使用getenforce
来查看如果是disabled
表示是关闭的
[root@rhel1 ~]# getenforce
Disabled
- 关闭防火墙(转储时,服务器一定要关闭防火墙)
service iptables stop
rsyslog:
rsyslog系统日志由系统服务rsyslog统一管理
用 rpm -q rsyslog
来查看安装,rsyslogd -v
查看版本
主要程序:/sbin/rsyslogd
、配置文件:/etc/rsyslog.conf
配置文件语法:日志设备(类型).日志级别 日志处理方式
例如:local2.info /opt/local.log
意思就是将local2的日志级别大于等于info的日志都写入/opt/local.log
中
配置文件里面除了注释和空格之外的内容如下:(格式如下)
[root@rhel1 ~]# vi /etc/rsyslog.conf
[root@rhel1 ~]# grep -v ^# /etc/rsyslog.conf |grep -v ^$
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imklog # provides kernel logging support (previously done by rklogd)
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig /etc/rsyslog.d/*.conf
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
*.emerg *
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
日志级别:
NONE: 什么都不记录
EMERG(紧急):会导致主机系统不可用的情况
ALERT(警告):必须马上采取措施解决的问题
CRIT(严重):比较严重的情况
ERR(错误):运行出现错误
WARNING(提醒):可能会影响系统功能的事件
NOTICE(注意):不会影响系统但值得注意
INFO(信息):一般信息
DEBUG(调试):程序或系统调试信息等
从下到上,级别从低到高,记录的信息越来越少
连接符号
. :记录大于等于后面的级别日志
.=:只记录等于后面的级别日志
.!=:只记录不等于后面的级别日志
日志处理方式
本地文件:通常就是文件的绝对路径
打印机:例如 /dev/lp0 这个打印机装置
用户名称:显示给用户
远程主机:例如 @202.100.100.1
*:所有在线的用户
logger:
从命令行直接向系统日志文件写入一行信息
[root@rhel1 ~]# echo "test log" | logger -it "test" -p authpriv.info
[root@rhel1 ~]# tail -1 /var/log/secure
Apr 2 20:33:50 rhel1 test[3139]: test log
logger发送(记录)日志,rsyslog根据规则来处理。比如 echo "test log" | logger -it "test" -p authpriv.info
意思就是logger将test log
发送出去,rsyslog根据/etc/rsyslog.conf
中的规则来判断将test log
如何处理,
authpriv.info
,表示将test log
添加到/var/log/secure
文件中。于是在/var/log/secure
文件中就能查看到这一行内容
日志集中管理及logrotate:
集中管理日志(客户机的日志消息发送给服务器的日志文件中)
前提条件: 两台机器都有rsyslog,服务器的防火墙是关闭的,两台机器的selinux是关闭的。
如下:
(我的主机名为为rhel1、IP为172.16.8.9的机器为客户机,主机名rhel2、IP为172.16.8.10的机器为服务器)
客户机配置:
- 修改规则,在规则最后一行加上一行
*.* @172.16.8.10
[root@rhel1 ~]# vi /etc/rsyslog.conf
...........................................
#### RULES ####
............................................
# Save boot messages also to boot.log
local7.* /var/log/boot.log
*.* @172.16.8.10
..............................................
- 然后重启rsyslog服务(一定要重启)
[root@rhel1 ~]# service rsyslog restart
Shutting down system logger: [ OK ]
Starting system logger: [ OK ]
服务器配置:
- 修改配置文件
/etc/rsyslog.conf
把以下两行注释取消
$ModLoad imudp
$UDPServerRun 514
- 配置规则,在规则最后一行加上一行
*.* /opt/all.log
[root@rhel2 ~]# vi /etc/rsyslog.conf
.....................................................................
#### RULES ####
......................................................................
# Save boot messages also to boot.log
local7.* /var/log/boot.log
*.* /opt/all.log
..........................................................................
- 重启rsyslog服务 (一定要重启)
[root@rhel2 ~]# service rsyslog restart
Shutting down system logger: [ OK ]
Starting system logger: [ OK ]
日志的转储功能:当日志到达一定大小,进行转储
比如:a.log 到达100MB时进行mv a.log a.log_日期,touch a.log(接下来日志又写进a.log中去)
logrotate主要配置文件:/etc/logrotate.conf
主要参数:
daily 、weekly、monthly、yearly等-----多久转储一次
rotate count -----旧日志保留多少份
size size ------日志到达多少大小开始转储
create 600 -----可以设置权限
prerotate 、 endscript 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
次要配置文件:/etc/logrotate.d
不同的日志文件可以通过不同的次要配置文件来写转储的规则
创建 /etc/logrotate.d/
下的文件
(注意(很重要):转储完后自动重启rsyslog,否则,日志还是写入旧 的日志文件中去)
转储操作:
在服务器端操作
- 创建
/etc/logrotate.d/
下的文件
[root@rhel2 ~]# vi /etc/logrotate.d/log_all
/opt/all.log{ #表示转储哪个文件
daily #表示多久转储一次
size 5k #表示达到多大进行转储
rotate 2 #表示旧日志保留几份
prerotate
service rsyslog restart
endscript
}
- 重启rsyslog服务
[root@rhel2 ~]# service rsyslog restart
Shutting down system logger: [ OK ]
Starting system logger: [ OK ]
- 手工进行转储
(为了演示,所以手工进行)
[root@rhel2 ~]# logrotate /etc/logrotate.conf
[root@rhel2 ~]#
当/opt/all.log
到达5k时会进行转储
[root@rhel2 ~]# ll -h /opt/all.log
-rw------- 1 root root 5.6K Apr 2 20:45 /opt/all.log
转储文件带日期。
[root@rhel2 ~]# ll /opt/
total 16
-rw------- 1 root root 0 Apr 2 20:46 all.log
-rw------- 1 root root 6070 Apr 2 20:46 all.log-20190402
为了测试只保留2份旧日志,下面我修改时间来验证
[root@rhel2 ~]# date -s "2019-04-03 10:00:00"
Wed Apr 3 10:00:00 CST 2019
增加/opt/all.log
文件内容,到它重新大于5k,再查看是否转储
[root@rhel2 ~]# ll -h /opt/
total 28K
-rw------- 1 root root 8.2K Apr 3 10:07 all.log
-rw------- 1 root root 7.7K Apr 3 10:05 all.log-20190402
[root@rhel2 logrotate.d]# logrotate /etc/logrotate.conf
[root@rhel2 logrotate.d]#
[root@rhel2 ~]# ll /opt/
total 28
-rw------- 1 root root 0 Apr 3 10:08 all.log
-rw------- 1 root root 7849 Apr 3 10:05 all.log-20190402
-rw------- 1 root root 8800 Apr 3 10:08 all.log-20190403
再修改时间。再查看
[root@rhel2 ~]# date -s "2019-04-04 10:00:00"
Thu Apr 4 10:00:00 CST 2019
使/opt/all.log
文件内容增加,直到大于5k,查看转储情况
[root@rhel2 ~]# ll -h /opt/
total 36K
-rw------- 1 root root 7.0K Apr 4 10:02 all.log
-rw------- 1 root root 7.7K Apr 3 10:05 all.log-20190402
-rw------- 1 root root 11K Apr 4 10:01 all.log-20190403
转储
[root@rhel2 logrotate.d]# logrotate /etc/logrotate.conf
Shutting down system logger: [ OK ]
Starting system logger: [ OK ]
[root@rhel2 logrotate.d]#
查看转储情况:
(如下,发现时间为20190402的日志文件没有了,换成了最新的两份日志文件,所以说也实现了只保留两份旧日志文件)
[root@rhel2 ~]# ll -h /opt/
total 28K
-rw------- 1 root root 0 Apr 4 10:02 all.log
-rw------- 1 root root 11K Apr 4 10:01 all.log-20190403
-rw------- 1 root root 7.4K Apr 4 10:02 all.log-20190404
更多推荐
所有评论(0)