前言
CentOS 7系统生成的日志主要是通过systemd日志守护进程进行处理和记录的。其日志记录的内容包括系统和服务启动和关闭的信息、系统运行过程中产生的错误、警告和通知信息等等。
系统日志通常被记录在/var/log目录下,主要的日志文件有:
1. messages: 系统基本日志信息,包括系统启动、关闭、网络等信息。
2. secure: 系统认证和授权相关的日志信息,如登录、su操作、sudo操作等。
3. journalctl: 通过journalctl命令可以查看系统日志的详细信息,包括系统启动信息、服务启动信息、错误信息等。
除此之外,系统日志还包括定时任务的日志信息、yum软件包管理器的日志信息、Apache Web服务器的访问和错误日志、MySQL数据库系统的日志信息等。管理员可以根据不同的需求选择查看特定的日志文件,以了解系统的运行情况和问题。
目录
1 引言
1.1 日志的重要性
1.2 常见的系统日志
2 rsyslog日志管理
2.1 日志类型
2.2 日志优先级
2.3 自定义日志
3 logrotate日志轮转【重点!!!】
3.1 日志轮转
3.2 日志轮转实例
3.3 日志安全,操作日志的隐藏权限
Linux系统日志对管理员来说,是了解系统运行的主要途径,因此需要对Linux日志系统有个详细的了解。
Linux 系统内核和许多程序会产生各种错误信息、告警信息和其他的提示信息,这些各种信息都应该记录到日志文件中,完成这个过程的程序就是 rsyslog,rsyslog 可以根据日志的类别和优先级将日志保存到不同的文件中。
/var/log/messages:记录Linux操作系统常见的系统和服务错误信息以及系统的各种事件(包括 kernel 日志、syslog、auth 日志等)。
/var/1og/boot.log:记录了系统在引导过程中发生的事件,就是Linux系统开机自检过程显示的信息。
/var/log/lastlog:记录最后一次用户成功登陆的时间、登陆IP等信息(一般通过命令lastlog 查看)。
/var/1og/secure:Linux系统安全日志,记录用户和工作组变坏情况、用户登陆认证情况。/var/log/yum.log:记录 yum 包管理器相关的信息,如软件的安装、更新等。
/var/log/httpd/:记录 Apache 访问日志和错误日志。
/var/log/mysql/:记录 MySQL 数据库的访问日志和错误日志。
【单独讲述下/var/log/messages和/var/log/secure】
(1)/var/log/messages
使用“tail -f /var/log/messages”命令查看日志。
tail -f /var/log/messages
接下来我们重新打开个窗口,使用“systemctl stop httpd”和“systemctl start httpd”命令,查看日志情况。
systemctl stop httpd
systemctl start httpd
使用“tail -f /var/log/secure”命令查看日志,接下来我们重新打开个窗口。
tail -f /var/log/secure
测试一:
使用“useradd mortalz7”命令创建一个新用户mortalz7,同时我们使用“passwd mortalz7”命令更改用户密码。
【在此过程中我们故意输错密码一次,观察下日志的变化】
useradd mortalz7
passwd mortalz7
查看/var/1og/secure系统日志的变化
测试二:
我们使用“su mortalz7”命令切换用户到mortalz7并退出(使用“exit”命令)。
su mortalz7
同时我们查看/var/log/secure系统日志的变化
auth:pam产生的日志
authpriv:ssh,ftp等登录信息的验证信息
cron:时间任务相关
kern:内核
lpr:打印
mail:邮件
mark(syslog)-rsyslog:服务内部的信息,时间标识
news:新闻组
user:用户程序产生的相关信息
日志级别分为:(7种日志级别 代号0-7)
0 debug 有调试信息的,日志信息最多
1 info 一般信息的日志,最常用
2 notice 最具有重要性的普通条件的信息
3 warning 警告级别
4 err 错误级别,阻止某个功能或者模块不能正常工作的信息
5 crit 严重级别,阻止整个系统或者整个软件不能工作的信息
6 alert 需要立刻修改的信息
7 emerg 内核崩溃等严重信息
none 不记录任何信息
【其中warning和err常见】
rsyslog的格式:日志对象.日志级别+日志文件
. 表示大于或者等于后面指定的日志级别
.= 表示等于侯建指定的日志级别
.! 表示不要这个级别的信息
举例:
(1)*.*
第一个*表示的是日志类型,要存储哪一方面的日志;后面的.*表示的是你想要定义的什么级别。
(2)kern.err /var/log/kernel.log
err第四级别,大于错误级别写到/var/log/kernel.log(自己定义的文件)。
(3)mail.info /var/log/mail.log
所有大于等于info级别的mail邮件都写到/var/log/mail.log。
好了,了解的差不多了,最终你就可以使用vim /etc/rsyslog.conf命令开始编写啦~
编写成功后,记得重启日志服务,让本机的日志生效
systemctl restart rsyslog
首先先了解下配置文件
vim /etc/logrotate.conf
//全局配置
weekly 轮转周期默认一周轮转一次
rotate4 轮转次数 默认轮转4次(只保留四份文件,当第五份日志文件产生之后,将自动删除最旧的那份文件)
create 创建新文件
dateext 以轮转时刻的时间作为轮转文件的结尾
//局部配置
include /etc/logrotate.d
missingok 在文件不存在的时候也不报错
create 0600 root utmp
强制轮转
logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
-s 指定最后的日志轮转记录文件为/var/lib/logrotate/logrotate.status
测试日志轮转,轮转文件/var/log/yum.log
(1)配置轮转规则:vim /etc/logrotate.d/yum
vim /etc/logrotate.d/yum
notifempty表示空文件不轮转(在notifempty前面加#,使空文件也轮转)
(2)为了验证实验的成功性,我们修改下文件内容(如图)。
(3)查看:ls /var/log/yum.*,只有/var/log/yum.log
ls /var/log/yum.*
(4)使用date命令查看当前时间
date
修改日期(daily是以天来算的,不能等一天再来看效果,所以我们直接选择修改日期)
date 09301805
date后面加“月日时分”
(5)执行手动轮转命令
logrotate /etc/logrotate.conf
(6)查看:ls /var/log/yum.*
多了个日志文件,成功啦~
(1)建议测试时先把/etc/logrotate.d/syslog中messages删除(vim命令进入/etc/logrotate.d/syslog中,删除/var/log/messages一行)
vim /etc/logrotate.d/syslog
(2)删除完成后,在最下面添加如下命令:
/var/log/messages {
prerotate
chattr -a /var/log/messages
endscript
#notifempty
daily
create 0777 root root
missingok
rotate 3
postrotate
chattr +a /var/log/messages
endscript
}
添加成功后,输入“:wq”保存退出。
(3)执行手动轮转命令
logrotate /etc/logrotate.conf
运行完毕后没有报错说明编写没有问题,如果报错说明刚才/etc/logrotate.d/syslog中编写有错。(比如说missingok中没有空格或者postrotate打错字母等等。)
【为多个日志文件配置日志轮转】
vim命令进入/etc/logrotate.d/syslog中,删除所想要修改的在最下面进行添加即可(跟刚才同理)
创作不易,给个三连吧~