系统常见日志
常见日志文件
| 日志文件 | 说 明 |
|---|---|
| /var/log/cron | 记录与系统定时任务相关的曰志 |
| /var/log/cups/ | 记录打印信息的曰志 |
| /var/log/dmesg | 记录了系统在开机时内核自检的信总。也可以使用dmesg命令直接查看内核自检信息 |
| /var/log/btmp | 记录错误登陆的日志。这个文件是二进制文件,不能直接用Vi查看,而要使用lastb命令查看。 |
| /var/log/lasllog | 记录系统中所有用户最后一次的登录时间的曰志。这个文件也是二进制文件.不能直接用Vi 查看。而要使用lastlog命令查看 |
| /var/Iog/mailog | 记录邮件信息的曰志 |
| /var/log/messages | 它是核心系统日志文件,其中包含了系统启动时的引导信息,以及系统运行时的其他状态消息。I/O 错误、网络错误和其他系统错误都会记录到此文件中。其他信息,比如某个人的身份切换为 root,已经用户自定义安装软件的日志,也会在这里列出。 |
| /var/log/secure | 记录验证和授权方面的倍息,只要涉及账户和密码的程序都会记录,比如系统的登录、ssh的登录、su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中 |
| /var/log/wtmp | 永久记录所有用户的登陆、注销信息,同时记录系统的后动、重启、关机事件。同样,这个文件也是二进制文件.不能直接用Vi查看,而要使用last命令查看 |
| /var/tun/ulmp | 记录当前已经登录的用户的信息。这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息。同样,这个文件不能直接用Vi查看,而要使用w、who、users等命令查看 |
除系统默认的日志之外,采用 RPM 包方式安装的系统服务也会默认把日志记录在 /var/log/ 目录中(源码包安装的服务日志存放在源码包指定的目录中)。不过这些日志不是由 rsyslogd 服务来记录和管理的,而是各个服务使用自己的日志管理文档来记录自身的日志。以下介绍的日志目录在你的 Linux 上不一定存在,只有安装了相应的服务,日志才会出现。
| 日志文件 | 说明 |
|---|---|
| /var/log/httpd/ | RPM包安装的apache取务的默认日志目录 |
| /var/log/mail/ | RPM包安装的邮件服务的额外日志因录 |
| /var/log/samba/ | RPM色安装的Samba服务的日志目录 |
| /var/log/sssd/ | 守护进程安全服务目录 |
配置文件 /etc/rsyslog.conf
配置文件格式
authpriv.* /var/log/secure
服务名称[连接符号]日志等级 日志记录位置
认证相关服务.所有日志等级 记录在/var/log/secure 日志中
服务名称


连接符号
日志服务连接日志等级的格式是:
日志服务[连接符号]日志等级 日志记录位置
在这里连接符号可以识别为:
“.”代表只要比后面的等级高的(包含该等级)日志都记录下来。比如:“cron.info”代表 cron 服务产生的日志,只要日志等级大于等于 info 级别,就记录“.=”代表只记录所需等级的日志,其他等级的都不记录。比如:“*.=emerg”代表任何日志服务产生的日志,只要等级是 emerg 等级就记录。这种用法及少见,了解就好“.!”代表不等于,也就是除了该等级的日志外,其他等级的日志都记录
日志等级

日志记录位置
日志记录位置就是当前日志输出到哪个日志文件中保存,当然也可以把日志输出到打印机打印,或者输出到远程日志服务器上(当然日志服务器要允许接收才行)。日志的记录位置也是固定的,我们来学习下:
日志文件的绝对路径。这是最常见的日志保存方法,如“/var/log/secure”就是保存系统验证和授权信息日志的。系统设备文件。如“/dev/lp0”代表第一台打印机,如果日志保存位置是打印机设备的话,当有日志时就会在打印机打印(不太符合可持续发展战略哦-_-!)。转发给远程主机。因为可以选择使用 TCP 协议和 UDP 协议传输日志信息,所以有两种发送格式。如使用“@192.168.0.210:514”,就会把日志内容使用 UDP 协议发送到192.168.0.210 的 UDP 514 端口上;如果使用“@@192.168.0.210:514”就会把日志内容使用 TCP 协议发送到 192.168.0.210 的 TCP 514 端口上,其中 514 是日志服务默认端口。当然只要 192.168.0.210 同意接收此日志,就可以把日志内容保存在日志服务器上。用户名。如“root”,就会把日志发送给 root 用户,当然 root 要在在线,否则就收不到日志信息了。发送日志给用户时,可以使用“_”代表发送给所有在线用户,如“mail._ *”就会把 mail 服务产生的所有级别的日志发送给所有在线用户。如果需要把日志发送给多个在线用户,用户名之间用“,”分隔。忽略或丢弃日志。如果接受日志的对象是“~”,代表这个日志不会记录,而被直接丢弃。如“local3.* ~”代表忽略 local3 服务类型所有的日志都不记录
配置文件内容
root@localhost ~]# vi /etc/rsyslog.conf#查看配置文件的内容#rsyslog v5 configuration file# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html*### MODULES ####加载棋块$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)#加载imixsock模块,为本地系统登录提供支持$ModLoad imklog # provides kernel logging support (previously done by rklogd)#加载imklog模块,为内核登录提供支持#$ModLoad immark # provides --MARK-- message capability#加载immark模块,提供标记信息的能力# Provides UDP syslog reception#$ModLoad imudp#SUDPServerRun 514#加载UPD模块,允许使用UDP的514端口接收采用UDP协议转发的日志# Provides TCP syslog reception#$ModLoad imtcp#$InputTCPServerRun 514#加栽TCP摸块,允许使用TCP的514编口接收采用TCP协议转发的日志#### GLOBAL DIRECTIVES #####定义全局设置#Use default timestamp format#ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat #定义曰志的时间使用默认的时间戳格式#File syncing capability is disabled by default. This feature is usually not required,#not useful and an extreme performance hit#$ActionFileEnableSync on#文件同步功能。默认没有开启,是注释的#Include all config files in /etc/rsyslog.d/$IncludeConfig /etc/rsyslog.d/*.conf#包含/etx/tsyslog.d/目录中所有的".conf"子配置文件。也就是说,这个目录中的所有子配置文件也同时生效#### RULES #####日志文件保存规则#Log all kernel messages to the console.#Logging much else clutters up the screen.#kern.* /dev/console#kern服务.所有曰志级别 保存在/dev/console#这个日志默认没有开启,如果需要,则取消注释#Log anything (except mail) of level info or higher.#Don't log private authentication messages!*.info;mail.none;authpriv.none;cron.none /var/log/messages#所有服务.info以上级到的日志保存在/var/log/messages日志文件中#mail, authpriv^ cron的B志不记录在/var/log/messages曰志文件中,因为它们部有自己的曰志文件#所以/var/log/messages日志是最重要的系统日志文件,需要经常查看#The authpriv file has restricted access.authpriv.* /var/log/secure#用户认证服务所有级别的日志保存在/vai/1og/secure日志文件中#Log all the mail messages in one place.mail.* -/var/log/maillog#mail服务的所有级别的日志保存在/var/log/maillog 日志文件中#"-"的含义是日志先在内存中保存.当曰志足够多之后.再向文件中保存# Log cron stuffcron.* /var/log/cron#计対任务的所有日志保存在/var/log/cron日志文件中# Everybody gets emergency messages#所有日志服务的疼痛等级日志对所有在线用户广播#Save news errors of level crit and higher in a special file. uucp,news.crit /var/log/spooler#uucp和news曰志服务的crit以上级别的日志保存在/var/log/sppoler曰志文件中#Save boot messages also to boot.loglocal7.* /var/log/boot.log#loacl7 日志服务的所有日志写入/var/log/boot.log 日志文件中 #会把开机时的检测信息在显示到屏幕的同时写入/var/log/boot.log 日志文件中# ### begin forwarding rule ####定义转发规到#The statement between the begin ... end define a SINGLE forwarding#rule. They belong together, do NOT split them. If you create multiple# forwarding rules, duplicate the whole block!# Remote Logging (we use TCP for reliable delivery)## An on-disk queue is created for this action. If the remote host is# down, messages are spooled to disk and sent when it is up again. #SWorkDirectory /var/lib/rsyslog # where to place spool files #$ActionQueueFileName fwdRulel # unique name prefix for spool files#$ActionQueueMaxDiskSpace 1g # 1gb space limit (use as much as possible)#$ActionQueueSaveOnShutdown on # save messages to disk on shutdown#$ActionQueueType LinkedList t run asynchronously#$ActionResumeRetryCount -1 # infinite retries if host is down# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional #*•* @6remote-host:514# ### end of the forwarding rule ##
定义自己的日志


日志轮替
命名规则
日志轮替最主要的作用就是把旧的日志文件移动并改名,同时建立新的空日志文件,当旧日志文件超出保存的范围之后,就会进行删除。那么旧的日志文件改名之后,如何命名呢?主要依靠/etc/logrotate.conf 配置文件中“dateext”参数:
如果配置文件中拥有“dateext”参数,那么日志会用日期来作为日志文件的后缀,例如 “secure-20180605”。这样的话日志文件名不会重叠,所以也就不需要日志文件的改名,只需要保存指定的日志个数,删除多余的日志文件即可。如果配置文件中没有“dateext”参数,那么日志文件就需要进行改名了。当第一次进行日志轮替时,当前的“secure”日志会自动改名为“secure.1”,然后新建“secure”日志,用来保存新的日志。当第二次进行日志轮替时,“secure.1”会自动改名为“secure.2”,当前的“secure”日志会自动改名为“secure.1”,然后也会新建“secure”日志,用来保存新的日志,以此类推。
/etc/logrotate.conf
[root@labhost ~]# cat /etc/logrotate.conf# see "man logrotate" for details# rotate log files weekly#每周rotate log文件一次weekly# keep 4 weeks worth of backlogs:保存最近4周的log日志,因为上面是每周rotate一次rotate 4# create new (empty) log files after rotating old ones#rotate老日志文件之后,创建一个新的空日志文件create# use date as a suffix of the rotated file#rotate的文件以日期格式为后缀,比如:access_log-20200422,如果不加这个选项,rotate的格式为:access_log.1,access_log.2等等。dateext# uncomment this if you want your log files compressed:如果想压缩rotate后的文件,把下面compress前面的#号去掉就可以了。#compress# RPM packages drop log rotation information into this directory#RPM包的日志rotation配置信息,建议放到/etc/logrotate.d这个文件夹下,实现自定义控制log文件rotateinclude /etc/logrotate.d# no packages own wtmp and btmp -- we'll rotate them here:wtmp和btmp这两个不属于任何package,我们就把rotate的规则写到这里/var/log/wtmp {monthly #每个月执行一次rotatecreate 0664 root utmp #创建空文件,权限是664, 所属用户名 所属用户组minsize 1M #日志文件大小超过1M才执行rotate,否则跳过rotate 1 #rotate时,只保留一份rotate文件}/var/log/btmp {missingokmonthlycreate 0600 root utmprotate 1}# system-specific logs may be also be configured here.#其它系统日志也可以在这里配置rotate规则
logrotate配置文件参数
| 配置参数 | 功能说明 |
|---|---|
| compress | 通过gzip 压缩转储以后的日志 |
| nocompress | 不需要压缩时,用这个参数 |
| copytruncate | 用于还在打开中的日志文件,把当前日志备份并截断;是先拷贝再清空的方式,拷贝和清空之间有一个时间差,可能会丢失部分日志数据。 |
| nocopytruncate | 备份日志文件但是不截断 |
| create mode owner group | 转储文件,使用指定的文件模式创建新的日志文件。轮转时指定创建新文件的属性,如create 0777 nobody nobody |
| nocreate | 不建立新的日志文件 |
| delaycompress | 和 compress 一起使用时,转储的日志文件到下一次转储时才压缩 |
| nodelaycompress | 覆盖 delaycompress 选项,转储同时压缩 |
| errors address | 专储时的错误信息发送到指定的Email 地址 |
| ifempty | 即使是空文件也转储,这个是 logrotate 的缺省选项。 |
| notifempty | 如果是空文件的话,不转储 |
| mail address | 把转储的日志文件发送到指定的E-mail 地址 |
| nomail | 转储时不发送日志文件 |
| olddir directory | 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统 |
| noolddir | 转储后的日志文件和当前日志文件放在同一个目录下 |
| prerotate/endscript | 在logrotate转储之前需要执行的指令,例如修改文件的属性等动作;这两个关键字必须单独成行; |
| postrotate/endscript | 在logrotate转储之后需要执行的指令,例如重新启动 (kill -HUP) 某个服务!必须独立成行; |
| daily | 指定转储周期为每天 |
| weekly | 指定转储周期为每周 |
| monthly | 指定转储周期为每月 |
| rotate count | 指定日志文件删除之前转储的个数,0 指没有备份,5 指保留5个备份 |
| tabootext [+] list 让logrotate | 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和 ~ |
| size | size当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及KB (sizek)或者MB (sizem). |
| missingok | 如果日志丢失,不报错继续滚动下一个日志 |
| notifempty | 当日志文件为空时,不进行轮转 |
| sharedscripts | 运行postrotate脚本,作用是在所有日志都轮转后统一执行一次脚本。如果没有配置这个,那么每个日志轮转后都会执行一次脚本 |
| dateext | 使用当期日期作为命名格式 |
| dateformat .%s | 配合dateext使用,紧跟在下一行出现,定义文件切割后的文件名,必须配合dateext使用,只支持 %Y %m %d %s 这四个参数 |
| size(或minsize) log-size | 当日志文件到达指定的大小时才转储,log-size能指定bytes(缺省)及KB (sizek)或MB(sizem). |

把自己的日志加入轮替
使用RPM包方式安装服务的日志会自动的加入logrotate轮替,一般不需要你介入。
而使用源码包方式安装服务的日志,需要手工把该服务的日志加入到logrotate.conf配置文件中。
所以源码包方式安装服务的日志和手动指定的日志,是需要自己手动加入logrotate日志轮替。
1、方式
有两个方法:
第一种方法是直接在/etc/logrotate.conf配置文件中写入该日志的轮替策略,从而把日志加入logrotate轮替。
第二种方法是在/etc/logrotate.d/目录中新建立该日志的轮替文件,在该轮替文件中写入正确的轮替策略,因为该目录中的文件都会被”include”到主配置文件中,所以也可以把日志加入轮替。
推荐第二种方法,因为系统中需要轮替的日志非常多,如果全都直接写入/etc/logrotate.conf配置文件,那么这个文件的可管理性就会非常差,不利于此文件的维护。
采用第二种方式实现,如下:

logrotate 命令


