Linux中日志(rsyslog)分析及管理和日志转储(logrotate)功能
知识要点
- 日志的作用
- rsyslog服务介绍
- 日志文件的存放位置
- 常见日志文件内容介绍
- 用户验证相关日志
- 常用日志操作命令
- 日志管理策略
-
日志转储功能(logrotate)
日志的作用 - 用于记录系统、程序运行中发生的各种事件
-
通过阅读日志,有助于诊断和解决系统故障
日志文件的分类 - 内核及系统日志
- 由系统服务rsyslog统一进行管理,日志格式基本相似
- 用户日志
- 记录系统用户登录及退出系统的相关信息
- 程序日志
- 由各种应用程序独立管理的日志文件,记录格式不统一
rsyslog系统日志
由系统服务 rsyslog统一管理
- 软件包:rsyslog-5.8.10-8
- 主要程序:/sbin/rsyslogd
-
配置文件:/etc/rsyslog.conf
配置文件:/etc/rsyslog.conf语法 - 日志设备(类型).(连接符号)日志级别 日志处理方式(action)
-
日志设备(可以理解为日志类型):
日志级别
NONE: 什么都不记录
EMERG(紧急):会导致主机系统不可用的情况
ALERT(警告):必须马上采取措施解决的问题
CRIT(严重):比较严重的情况
ERR(错误):运行出现错误
WARNING(提醒):可能会影响系统功能的事件
NOTICE(注意):不会影响系统但值得注意
INFO(信息):一般信息
DEBUG(调试):程序或系统调试信息等
从下到上,级别从低到高,记录的信息越来越少
连接符号
. :记录大于等于后面的级别日志
.=:只记录等于后面的级别日志
.!=:只记录不等于后面的级别日志
日志处理方式
本地文件:通常就是文件的绝对路径
打印机:例如 /dev/lp0 这个打印机装置
用户名称:显示给用户
远程主机:例如 @202.100.100.1
*:所有在线的用户
系统日志保存位置
默认位于:/var/log 目录下
主要日志文件介绍
内核及公共消息日志:/var/log/messages
计划任务日志:/var/log/cron
系统引导日志:/var/log/dmesg
邮件系统日志:/var/log/maillog
由相应的应用程序独立进行管理
- Web服务:/var/log/httpd/
- access_log、error_log
- 代理服务:/var/log/squid/
- access.log、cache.log、squid.out、store.log
-
FTP服务:/var/log/xferlog
……
分析工具
文本查看、grep过滤检索、Webmin管理套件中查看
awk、sed等文本过滤、格式化编辑工具
Webalizer、Awstats等专用日志分析工具
保存了用户登录、退出系统等相关信息
/var/log/lastlog:最近的用户登录事件
/var/log/wtmp:用户登录、注销及系统开、关机事件
/var/run/utmp:当前登录的每个用户的详细信息
/var/log/secure:与用户验证相关的安全性事件
用户登录分析
who、w、users、last、ac、lastlog
主动记录日志工具
logger:从命令行直接向系统日志文件写入一行信息
日志管理策略 - 及时作好备份和归档
- 控制日志访问权限
- 日志中可能会包含各类敏感信息,如账户、口令等
- 集中管理日志
- 使用日志服务器便于日志的统一收集、整理和分析
- 杜绝日志信息的意外丢失、恶意篡改或删除
日志设置的一般步骤
1、修改/etc/rsyslog.conf文件,在最后加一行,内容如下:
日志设备.日志级别 存储位置
2、重启rsyslog服务
service rsyslog restart
测试
在客户机通过logger添加日志
在服务器上查看日志
日志转储功能
-
系统时时刻刻都在产生日志,如果不及时清理,很快就会填满硬盘,但如果要手工清理,又很麻烦。这种情况下,logrotate
这个程序很好的完成这个任务。 -
logrotate
用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。我们可以根据日志文件的大小,也可以根据天数来转储,这个过程一般通过crond进程来执行,logrotate还可以用于压缩日志文件
logrotate的主配置文件:/etc/logrotate.conf
主要参数:
Logrotate的次要配置文件:/etc/logrotate.d/* -
每个文件代表一种日志的配置
一般对次要配置文件进行修改 在这个目录 /etc/logrotate.d/创建文件
下面为配置文件的一般格式:[[email protected] ~]# cat /etc/logrotate.d/syslog /var/log/messages #要转储的文件 { #转储的一些参数 daily #每天 size 20M #每20M转储一次 rotate 3 #保留三份转储文件 postrotate 需要执行的命令 endscript }
日志转储
logrotate -v /etc/logrotate.conf
-f:强制转储
使用这个命令可以立即使转储文件达到条件进行转储
注意事项:
若转储一次后就不在转储,需要在配置文件中加上要执行的命令 service rsyslog restart 重启rsyslog服务
若未能转储:需要关掉selinux
selinux是一个Linux安全子系统
修改/etc/selinux/config 文件
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=enforcing 把这一行改为 SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
重启生效