浅析Linux日志文件


当我们的Linux系统出现不明原因的问题时,我们可以通过查看一下日志文件来发现问题。
日志文件对于Linux极为重要,它是记录系统活动信息的几个文件,例如:何时、何地(来源IP)、何人(服务器名称)、做了什么操作(信息登录)。简单来说就是记录系统在什么时候由于哪个进程做了什么样的操作时,发生了何种事件。
可以帮我们:
1.解决系统方面的错误;
2.解决网络服务的问题;
3.过往事件记录簿;
但是随着时间的增长,日志文件无论是种类还是数量都越来越多,这就需要我们进行分类存储,定时切割、删除等操作以便于日后的归档和查询。
这就需要一个工具(logrotate)帮助我们自动对日志进行轮循切割,压缩,删除旧的日志文件。

日志文件

日志文件就是记录系统活动信息的几个文件,例如:何时、何地(来源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:主要在进行日志的轮循功能

日志文件的轮循(logrotate)

不同于rsyslogd使用daemon的方式启动,即当有需求时才会立刻被执行,logrotate是在规定时间到了之后才来进行日志文件的轮循。所以这个logrotate程序是挂在cron下面进行的例如/etc/cron.daily/logrotate就是记录了每天要进行的日志文件轮循工作。

logrotate的配置文件

logrotate参数文件在:

/etc/logrotate.conf
/etc/logrotate.d/

其中logrotate.conf是主要的参数文件,而logrotate.d/里面的文件会被主动地读入到logrotate.conf中。
logrotate的主要功能就是将现有的日志文件重新命名以做备份,然后重新建立一个空文件来记录信息,执行流程如下图:
logratate流程示意

由于磁盘空间容量越来越大,管理员又担心日志文件数据有可能丢失,因此,可能会有最近的日志文件轮循后的文件名加上了日期参数并源源不断保存到电脑上。这个其实是可以自定义设置的。

下面看一下配置文件/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中修改。这样将不同轮循设置单独放在一个文件中,十分方便且合理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值