日志文件就是记录系统活动信息的几个文件,例如:何时、何地(来源IP)、何人(服务器名称)、做了什么操作(信息登录)。简单来说就是记录系统在什么时候由于哪个进程做了什么样的操作时,发生了何种事件。
1.解决系统方面的错误;
2.解决网络服务的问题;
3.过往事件记录簿;
日志文件的权限通常是设置为仅有root才能读取。
/var/log/boot.log:开机启动检测与启动硬件,启动内核支持功能的记录都记录在这里,但是只会记录本次。
/var/log/dmesg:记录系统再开机的时候内核检查过程中所产生的各项信息;
/var/log/lastlog:记录系统上面所有账号最近一次登录系统的相关信息;
/var/log/mailog或/var/log/mail/*:记录通讯邮件信息的往来;
/var/log/messages:这个文件很重要,几乎系统发生的错误信息都会记录在这个文件中,一般除了莫名其妙的错误,就一定会查一下这个文件;
/var/log/secure:牵涉到需要输入账号密码的软件时,那么当登录时都会被记录到此文件中。
/var/log/httpd/,/var/log/samba/:不同的网络服务会使用他们自己的日志文件来记录他们自己产生的各种信息。
日志文件的一般格式
apport.log -应用程序崩溃记录
apt/ -用apt-get安装卸载软件的信息
auth.log -用户登录及身份认证日志
boot.log -包含系统启动时的日志。
btmp -记录所有失败启动信息
message/ -常规日志信息
alternatives.log-更新替代信息都记录在这个文件中
samba/ -包含由samba存储的信息。
wtmp -包含登录信息。使用wtmp可以找出谁正在登陆进入系统,谁使用命令显示这个文件或信息等。
xorg.*.log -来自X的日志信息。
user.log -所有用户级日志
ufw -ufw防火墙日志
gufw -gufw防火墙日志
Consolekit - 记录控制台信息
cpus - 涉及所有打印信息的日志
dist-upgrade - dist-upgrade这种更新方式的信息
fontconfig.log -与字体配置有关的log。
fsck - 文件系统日志
faillog -包含用户登录失败信息。此外,错误登录命令也会记录在本文件中。
dmesg -包含内核缓冲信息(kernel ringbuffer)。在系统启动时,显示屏幕上的与硬件有关的信息
dpkg.log - 包括安装或dpkg命令清除软件包的日志。
debug -调试日志信息
daemon.log -运行squid,ntpd等其他日志消息
faillog - 包含用户登录失败信息。此外,错误登录命令也会记录在本文件中。
kern.log –包含内核产生的日志,有助于在定制内核时解决问题。
lastlog —记录所有用户的最近信息。这不是一个ASCII文件,因此需要用lastlog命令查看内容。
faillog –包含用户登录失败信息。此外,错误登录命令也会记录在本文件中。
mail/ – 这个子目录包含邮件服务器的额外日志。
mail.err -类似于上面的
日志文件产生的方式一般有两种:
1.由软件开发商自行定义写入的文件与相关格式,如WWW软件apache就是这样处理。
2.由Linux发行版提供的日志文件管理服务进行统一管理,将信息丢给这个服务后,它会分门别类地将各种信息放置到相关的日志文件中。
systemd-journald.service:最主要的信息收受者,由systemd提供;
rsystem.service:主要登录系统于网络等服务的信息;
logrotate:主要在进行日志的轮循功能
不同于rsyslogd使用daemon的方式启动,即当有需求时才会立刻被执行,logrotate是在规定时间到了之后才来进行日志文件的轮循。所以这个logrotate程序是挂在cron下面进行的例如/etc/cron.daily/logrotate就是记录了每天要进行的日志文件轮循工作。
logrotate参数文件在:
/etc/logrotate.conf
/etc/logrotate.d/
其中logrotate.conf是主要的参数文件,而logrotate.d/里面的文件会被主动地读入到logrotate.conf中。
logrotate的主要功能就是将现有的日志文件重新命名以做备份,然后重新建立一个空文件来记录信息,执行流程如下图:
由于磁盘空间容量越来越大,管理员又担心日志文件数据有可能丢失,因此,可能会有最近的日志文件轮循后的文件名加上了日期参数并源源不断保存到电脑上。这个其实是可以自定义设置的。
下面看一下配置文件/etc/logroate.conf
# see "man logrotate" for details(详见手册)
# rotate log files weekly(默认每周会进行一次轮循工作)
weekly
# keep 4 weeks worth of backlogs(默认保持四个有效记录)
rotate 4
# create new (empty) log files after rotating old ones(日志更名后,建立新的来存储)
create
# uncomment this if you want your log files compressed(如果要压缩日志文件,请取消注释)
#compress
# packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp, or btmp -- we'll rotate them here(没有包拥有wtmp或btmp——我们将在这里轮循它们)
/var/log/wtmp {
missingok # 如果日志文件丢失,不要显示错误;
monthly # 每个月依次
create 0664 root utmp # 指定新建文件的权限与所属账号、组
rotate 1 # 仅保留一个,也就是说只有一个wtmp.1保留
}
# system-specific logs may be configured here(可以配置特定于系统的日志)
/etc/logrotate.d/apport
/var/log/apport.log {
daily # 每日更新
rotate 7 # 保存7个备份
delaycompress # 不进行压缩
compress # delaycompress 和 compress 一起使用时,转储的日志文件到下一次转储时才压缩
notifempty # 如果是空文件的话,不转储
missingok # 如果日志文件丢失,不要显示错误;
}
从文件设置我们可以看出,/etc/logrotate.d/其实就是/etc/logrotate.conf规划出来的目录,以便于我们进行特定轮循设置的修改而不至于每次修改时都在/etc/logrotate.conf中修改。这样将不同轮循设置单独放在一个文件中,十分方便且合理。