常见的日志文件
系统中的日志信息一般都是先存储在内存当中,然后再有rsyslog服务将对应的日志信息进行采集,然后再根据rsyslog.conf配置文件将对应的日志信息存储到对应文件当中
rsyslog.conf
在这个配置文件当中,我们可以制定这样格式的规则
日志类型.日志级别 日志的存储位置
这样的规则可以指定我们在内存中的哪些日志信息要存储到哪些位置上去。
日志类型有下面这些:
日志级别有下面这些:
比如我们可以创建 *.* /var/log/all,这样就表示我们将所有的日志信息都存入到/var/log/all文件上,当然对应的日志类型和日志级别可以自行进行选择。
日志的存储位置
日志的存储位置可以是本地,也可以是远程主机
日志的远程传输方式有三种,分别是udp ,tcp和RELP,udp的日志传输过程中的日志丢失的几率最高,tcp一般不会丢失日志,只有在一些极端的情况下会出现日志丢失,RELP是不会丢失日志。但是高可靠的日志传输通常带来的副作用就是低的日志传输速率,所以可以适当选择对应的日志传输。
udp传输:@主机IP地址
tcp传输:@@主机IP地址
RELP传输:omrelp 主机IP地址
注意:我们修改了对应的rsyslog服务的配置文件之后,我们要重启该服务才能生效。
当让如果你配置了远程服务器进行日志的同步,那么不仅我们生成的日志的主机需要进行配置,接受的主机也要进行配置
这是/etc/rsyslog.con配置文件,我们如果使用的是udp进行日志的传输,那么就需要去掉Provides UDP syslog reception这一行下面两行的注释,同样的如果你使用的是TCP的话,就将对应的注释去掉即可。去掉的第一条的注释信息代表加载对应的input message mod,也就是去掉之后接受日志的主机就可以加载对应的接受信息的模块,第二条注释代表开放对应的接受端口,这样发送日志的主机就可以通过该端口将对应的日志信息传输过来。
注意!:我们要保证两台主机的互通,同时还要保证接受对应日志信息的主机的防火墙是开放对应的端口的。
日志切割
日志文件的切割的意思是在系统运行的过程中可能会出现十分多的日志文件,如果我们仅仅设置一个日志文件作为某个服务的日志存储的地点,那么到最后这个日志文件将会变得十分的巨大,而且不利于人们的查看,于是就出现了日志的切割。日志切割是使用logrotate工具并结合crond的计划任务进行定时的日志切割,其实我觉得如果我们要自己搞一个日志切割也不是很难,其实日志切割的本质就是将日志文件加上对应的后缀名,使得下一次服务生成日志文件的时候就以为没有对应的日志文件从而新创建对应的日志文件 ,那么我们只要配合脚本就可以实现这种功能。
我们可以配置/etc目录下的logrotate.conf文件和/etc/logrotate.d/目录下的各个程序的日志管理文件。我们先看logrotate.conf文件
可以看到两行蓝色的字,
第一行的意思是没有对应包的归属的wtmp和btmp,我们将对应的日志轮询放在这个地方。
第二行的意思是系统里面一些特殊,特别的日志也可以放在这个地方。
所以这个logrotate.conf文件的就是将一些特殊的日志放在这个地方。wtmp就是last命令的来源,而btmp就是lastb命令的来源。last和lastb命令通过查询这两个文件,然后最后将登录信息显示在终端上。而系统的登录算做一个程序或者说服务吗,似乎都不太准确,所以说上面那两行指代的就是这个意思。
如果我们使用RPM或者yum安装,那么就会在/etc/logrotate.d目录下生成对应服务名的日志管理文件,它定义了我们将如何切割该服务的日志。同时当这些已经安装的服务有对应的日志生成,那么这些日志就会存放在/var/log目录下。
但是ssh服务的日志信息默认不会生成一个单独的日志文件,它的日志信息是存放在/var/log/secure文件中,作为系统安全相关日志信息一起存放在此。但是我们还是可以将ssh服务的日志文件单独拿出来配置如下:
1、我们首先编辑/etc/ssh/sshd.config文件,将图片中的AUTHPRIV修改位local1
2、然后在etc/rsyslog.conf文件中自定义日志设备,也就是在该配置文件中添加
local1.* /var/log/sshd.log
上面这一句只是打个样子,其中local1代表着我们要保存的日志的类型,也就是ssh服务的日志,后面的“*”代表我们将该服务的所有日志信息都进程存储,并将对应的信息存储在/var/log/sshd.log文件当中。
3、重启服务
日志切割文件的格式
如图这是一个日志切割文件的格式,可以看见日志切割的一些参数被包裹在两个大括号的内部,里面的参数有很多但是对我来说比较有用的有这些:
参数列表
daily,monthly,yearly:代表着日志切割的时间段
minsize:这个选项一般和上面的日志切割时间段结合,如果到达了日志切割的时间段,但是此时日志的大小没有达到minsize,那么也是不会进行日志切割的。
size:如果设置了size这个参数,那么就不会设置daily这类的参数,它代表只有日志达到了这个size之后才会进行日志切割,也就是说日志切割不是根据时间,而是根据日志文件的大小。
rotate x :这个代表每次日志切割之后存储的日志文件的最大数量,比如我一天切割一次,同时我设置rotate 4,那么第五天进行切割的时候,就会产生5个日志文件,那么根据配置就会删去一个文件。
ifempty : 这个代表即便日志文件是空的也进行切割
notifempty:这个代表如果日志文件是空的就不切割
missingok:如果日志文件不存在不进行报错
dateext:表示每次进行切割的时候,被切割后的日志文件除了包含自己的文件名之外还添加对应的时间戳
compress:代表压缩日志文件
nocompress:代表不压缩日志文件
create 0644 root root:代表新建日志文件,并设置日志文件的权限以及所属者和所属组
copytruncate: 代表清空原有的日志文件,然后将新的日志信息加入。
总结:
一般来说对应的日志文件会存放在/var/log目录下,里面不仅存储着某些服务或者程序的日志,还包括着与系统相关的日志文件。而系统的日志信息的采集是依靠rsyslog服务,如果我们将其关闭那么这该服务关闭的阶段将无法进行日志的生成。该服务在/etc目录下的rsyslog.conf是它的配置文件,在里面我们可以配置对应的日志的类型以及日志的等级,并指定某类日志信息存储的位置。日志的类型已经给出了一些与系统有关的类型,我们可以在配置文件中自行配置。同时如果是服务或者程序在使用RPM或者yum安装之后会自己将对应的日志文件安放在/var/log目录下。总的来说rsyslog.conf文件主要配置的还是与系统相关的日志文件存放内容和对应的存放地址。对于服务或者一些程序来说,它们有自己的日志系统,但是日志终归是要存放在一个地方的,这些独立的日志系统存放的位置一般是/var/log目录下。
对于日志轮询来说,它终归是一种文件操作和计划任务的产物。无论是它的配置文件,还是/etc/logrotate.d/目录下各个服务的管理文件,都是统一的格式,同时这些格式中都标明了对应的日志文件的路径,其实日志轮询并不关心日志里面的内容,它只是按照我们设置的参数去对某个文件进行周期性的操作。也就是说
Linux centos7 计划任务与日志的管理 - 快乐嘉年华 - 博客园 (cnblogs.com)
rsyslog和logrotate服务 - hftian - 博客园 (cnblogs.com)