系统日志管理
日志文件的分类(日志保存在/var/log下)
内核及系统日志
由系统服务syslog统一进行管理
/var/log/messages 内核及公共消息日志 /var/log/cron 计划任务日志 /var/log/dmesg 系统引导日志 /var/log/maillog 邮件系统日志 /var/log/secure 记录与访问限制相关日志
用户日志
记录系统用户登录及退出系统的相关信息
/var/log/lastlog 最近的用户登录事件 /var/log/wtmp 用户登录、注销及系统开关机 /var/log/btmp 失败的用户登陆事件 /var/run/utmp 当前登录的每个用户详细信息
程序日志
由各种应用程序独立管理的日志文件,记录格式不统一
Web服务的access_log、error_log
Squid代理服务的access.log、cache.log
FTP服务的Xferlog
用户日志分析
users
who 比w更加简洁
w 查看当前登陆的用户
last 最近系统登陆情况
lastb 最近系统登陆失败的情况
系统及内核日志格式
时间标签 主机名 子系统名称 消息
syslogd管理日志:5版本
配置文件:/etc/syslog.conf
格式如下
服务类别.日志级别 日志消息发送位置
配置文件定义格式为:
facility.priority action
facility,可以理解为日志的来源或设备目前常用的facility有以下几种:
auth # 认证相关的
authpriv # 权限,授权相关的
cron # 任务计划相关的
daemon # 守护进程相关的
kern # 内核相关的
lpr # 打印相关的
mail # 邮件相关的
mark # 标记相关的
news # 新闻相关的
security # 安全相关的,与auth 类似
syslog # syslog自己的
user # 用户相关的
uucp # unix to unix cp 相关的
local0 到 local7 # 用户自定义使用
* # *表示所有的facility
priority(log level)日志的级别,一般有以下几种级别(从低到高)
debug # 程序或系统的调试信息 info # 一般信息 notice # 不影响正常功能,需要注意的消息 warning/warn # 可能影响系统功能,需要提醒用户的重要事件 err/error # 错误信息 crit # 比较严重的 alert # 必须马上处理的 emerg/panic # 会导致系统不可用的 * # 表示所有的日志级别 none # 跟* 相反,表示啥也没有
日志消息的级别
0 EMERG(紧急) 会导致主机系统不可用的情况
1 ALERT(警告) 必须马上采取措施解决的问题
2 CRIT(严重) 比较严重的情况
3 ERR(错误) 运行出现错误
4 WARNING(提醒) 可能会影响系统功能的事件
5 NOTICE(注意) 不会影响系统但值得注意
6 INFO(信息) 一般信息
7 DEBUG(调试) 程序或系统调试信息等
表示消息类别,例如:
auth、authpriv、cron、daemon、kern、lpr、mail、syslog、user
action(动作)日志记录的位置
系统上的绝对路径 # 普通文件 如: /var/log/xxx | # 管道 通过管道送给其他的命令处理 终端 # 终端 如:/dev/console @HOST # 远程主机 如: @10.0.0.1 用户 # 系统用户 如: root * # 登录到系统上的所有用户,一般emerg级别的日志是这样定义的
定义格式例子:
mail.info /var/log/mail.log # 表示将mail相关的,级别为info及 # info以上级别的信息记录到/var/log/mail.log文件中 auth.=info @10.0.0.1 # 表示将auth相关的,基本为info的信息记录到10.0.0.1主机上去 # 前提是10.0.0.1要能接收其他主机发来的日志信息 user.!=error # 表示记录user相关的,不包括error级别的信息 user.!error # 与user.error相反 *.info # 表示记录所有的日志信息的info级别 mail.* # 表示记录mail相关的所有级别的信息 *.* # 你懂的. cron.info;mail.info # 多个日志来源可以用";" 隔开 cron,mail.info # 与cron.info;mail.info 是一个意思 mail.*;mail.!=info # 表示记录mail相关的所有级别的信息,但是不包括info级别的
rsyslog管理日志:6版本
配置文件:/etc/rsyslog.conf
格式如下
服务类别.日志级别 日志消息发送位置
日志消息的级别
0 EMERG(紧急) 会导致主机系统不可用的情况 1 ALERT(警告) 必须马上采取措施解决的问题 2 CRIT(严重) 比较严重的情况 3 ERR(错误) 运行出现错误 4 WARNING(提醒) 可能会影响系统功能的事件 5 NOTICE(注意) 不会影响系统但值得注意 6 INFO(信息) 一般信息 7 DEBUG(调试) 程序或系统调试信息等
连接符号
. 记录大于等于此等级 .= 只记录等于此等级的信息 .! 不等于此等级,也就是记录此等级之外的信息
表示消息类别,例如:
auth、authpriv、cron、daemon、kern、lpr、mail、syslog、user
配置文件定义格式为:
facility.priority action
facility,可以理解为日志的来源或设备目前常用的facility有以下几种:
auth # 认证相关的
authpriv # 权限,授权相关的
cron # 任务计划相关的
daemon # 守护进程相关的
kern # 内核相关的
lpr # 打印相关的
mail # 邮件相关的
mark # 标记相关的
news # 新闻相关的
security # 安全相关的,与auth 类似
syslog # syslog自己的
user # 用户相关的
uucp # unix to unix cp 相关的
local0 到 local7 # 用户自定义使用
* # *表示所有的facility
priority(log level)日志的级别,一般有以下几种级别(从低到高)
debug # 程序或系统的调试信息 info # 一般信息 notice # 不影响正常功能,需要注意的消息 warning/warn # 可能影响系统功能,需要提醒用户的重要事件 err/error # 错误信息 crit # 比较严重的 alert # 必须马上处理的 emerg/panic # 会导致系统不可用的 * # 表示所有的日志级别 none # 跟* 相反,表示啥也没有
action(动作)日志记录的位置
系统上的绝对路径 # 普通文件 如: /var/log/xxx | # 管道 通过管道送给其他的命令处理 终端 # 终端 如:/dev/console @HOST # 远程主机 如: @10.0.0.1 用户 # 系统用户 如: root * # 登录到系统上的所有用户,一般emerg级别的日志是这样定义的
定义格式例子:
mail.info /var/log/mail.log # 表示将mail相关的,级别为info及 # info以上级别的信息记录到/var/log/mail.log文件中 auth.=info @10.0.0.1 # 表示将auth相关的,基本为info的信息记录到10.0.0.1主机上去 # 前提是10.0.0.1要能接收其他主机发来的日志信息 user.!=error # 表示记录user相关的,不包括error级别的信息 user.!error # 与user.error相反 *.info # 表示记录所有的日志信息的info级别 mail.* # 表示记录mail相关的所有级别的信息 *.* # 你懂的. cron.info;mail.info # 多个日志来源可以用";" 隔开 cron,mail.info # 与cron.info;mail.info 是一个意思 mail.*;mail.!=info # 表示记录mail相关的所有级别的信息,但是不包括info级别的
日志的管理策略
一般化措施
重要日志做好备份/延长保存期限
控制日志的访问权限
集中管理日志
方便消息的统一收集、整理和分析
避免日志的意外丢失、防恶意篡改记录
logrotate日志轮转
logrotate轮转
减小日志大小,降低分析难度
丢弃过期日志节省空间
结合cron每天执行
软件包
logrotate
主配置文件/etc/logrotate.conf(daily, weekly, monthly, or yearly)
weekly 轮转频率,默认每周 rotate 4 保留4个轮转备份 create 执行轮转后创建新文件 #compress 是否压缩日志 dateext 以年月日时间取代后缀1 2 3 ... include /etc/logrotate.d 包含此目录下的配置 /var/log/wtmp { 启用轮转的日志文件 monthly 每月轮转一次 missingok 丢失不提示 notifempty 如果为空则不轮转 minsize 1M 日志达到1MB才开始轮转 create 0664 root utmp 建新文件并设权限 rotate 1 只保留一个备份 }
轮询完会生成一个空的message文件
如何轮询:
1.假如以星期为轮询周期。如果系统有一个message文件,过了一周后会生成一个空的message文件和message1(原来的message),第二周就会生成message2文件(message1改为message2),依次类推
logrotate 手工执行轮转
-v 启动显示模式
-f 强制rotate
/var/lib/logrotate.status
** size生效的话,会忽略轮转频率 ** 轮转频率生效的话,会忽略size ** 配置的顺序:后生效的会覆盖之前的语句