linux系统中日志分析 是很重要的一部分,下面介绍一下简单的日志自定义配置和日志收集
1 日志配置
配置文件在/etc/rsyslog.conf中
日志分为日志类型,日志级别。
日志类型:
mail 邮件类型
cron 定时任务类型
user 用户类型
authpriv 审计类型
news 新闻类型
kern 内核数据类型
daemon 守护类型
日志级别(告警级别)
0 debug 调试级别
1 info 消息级别
2 notice 注意级别
3 warning 告警级别
4 err 错误级别
5 crit 级别
6 aler 级别
7 emerg 急救级别
可以根据自己的定义A.B 其中A是日志类型B是日志级别,配置好日志输出在那些文件中
# test
mail.err /var/log/myMailErr.log
配置完rsyslog.conf之后重启rsyslog:
service rsyslog restart
重启完之后
/var/log/myMailErr.log 就自动生成
日志文件配置好,日志文件生成之后,可以测试一下,
logger -p mail.err 'hello you mail have some error'
检查myMailErr.log 文件
2 日志收集
管理多台服务器的时候管理人员不可能登陆每一台服务器(下面就叫客户机)去查看日志,需要把每一台客户机的日志发送到服务机(管理人员的本机),进行日志收集。
先在客户机的/etc/rsyslog.conf文件里面加上*.* @@IP :514
上面IP是发送到服务机的IP,514是端口
重启service rsyslog restart
默认收集的客户机的日志都在/var/log/messages里面(以实际情况而定,也可以查看服务机对于的日志文件里面)
注意:客户机要和服务机网络互通
上面是客户机的新建的日志消息
日志消息已经发送到服务机上
3 日志优化
在服务机上的/etc/rsyslog.conf 末尾加上下面代码重启rsyslog
$template Remote,"/var/log/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log"
:fromhost-ip, !isequal, "127.0.0.1" ?Remote
优化之后每一台客户机发送过来的日志都会自动保存在以客户机网关命名的文件里面,这样就对不同的客户机日志分批收集分析。
4 日志轮循
日志轮循也叫日志切割,可以根据不同的时间进行切割,比如按天切割,按周切割,按月切割,按年切割。时间到了就自动重新建立日志文件,并以日期为后缀。也可以按照日志大小切割。
在/etc/logrotate.conf 文件中设置切割规则,
如下每天切割
/var/log/log-file {
daily
rotate 5
compress
delaycompress
missingok
notifempty
create 644 root root
postrotate
/usr/bin/killall -HUP rsyslogd
endscript
}
如下按大小切割
/var/log/myMailErr.log{
daily
rotate 5
compress
delaycompress
missingok
notifempty
create 644 root root
postrotate
/usr/bin/killall -HUP rsyslogd
endscript
}
可以修改系统时间到当天最后的几秒然后等待几秒只能哦给,来验证按天截取。按天截取系统自动执行有时候没有那么准时在下一天第一秒,所以可以手动强制切割:
logrotate -vf /etc/logrotate.conf