系统常见日志

常见日志文件

日志文件 说 明
/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 日志中

服务名称

尚硅谷笔记-日志管理 - 图1

尚硅谷笔记-日志管理 - 图2

连接符号

日志服务连接日志等级的格式是:

  1. 日志服务[连接符号]日志等级 日志记录位置

在这里连接符号可以识别为:

  1. “.”代表只要比后面的等级高的(包含该等级)日志都记录下来。比如:“cron.info”代表 cron 服务产生的日志,只要日志等级大于等于 info 级别,就记录
  2. “.=”代表只记录所需等级的日志,其他等级的都不记录。比如:“*.=emerg”代表任何日志服务产生的日志,只要等级是 emerg 等级就记录。这种用法及少见,了解就好
  3. “.!”代表不等于,也就是除了该等级的日志外,其他等级的日志都记录

日志等级

尚硅谷笔记-日志管理 - 图3

日志记录位置

日志记录位置就是当前日志输出到哪个日志文件中保存,当然也可以把日志输出到打印机打印,或者输出到远程日志服务器上(当然日志服务器要允许接收才行)。日志的记录位置也是固定的,我们来学习下:

  1. 日志文件的绝对路径。这是最常见的日志保存方法,如“/var/log/secure”就是保存系统验证和授权信息日志的。
  2. 系统设备文件。如“/dev/lp0”代表第一台打印机,如果日志保存位置是打印机设备的话,当有日志时就会在打印机打印(不太符合可持续发展战略哦-_-!)。
  3. 转发给远程主机。因为可以选择使用 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 同意接收此日志,就可以把日志内容保存在日志服务器上。
  4. 用户名。如“root”,就会把日志发送给 root 用户,当然 root 要在在线,否则就收不到日志信息了。发送日志给用户时,可以使用“_”代表发送给所有在线用户,如“mail._ *”就会把 mail 服务产生的所有级别的日志发送给所有在线用户。如果需要把日志发送给多个在线用户,用户名之间用“,”分隔。
  5. 忽略或丢弃日志。如果接受日志的对象是“~”,代表这个日志不会记录,而被直接丢弃。如“local3.* ~”代表忽略 local3 服务类型所有的日志都不记录

配置文件内容

  1. root@localhost ~]# vi /etc/rsyslog.conf
  2. #查看配置文件的内容
  3. #rsyslog v5 configuration file
  4. # For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
  5. # If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html
  6. *### MODULES ###
  7. #加载棋块
  8. $ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
  9. #加载imixsock模块,为本地系统登录提供支持
  10. $ModLoad imklog # provides kernel logging support (previously done by rklogd)
  11. #加载imklog模块,为内核登录提供支持
  12. #$ModLoad immark # provides --MARK-- message capability
  13. #加载immark模块,提供标记信息的能力
  14. # Provides UDP syslog reception
  15. #$ModLoad imudp
  16. #SUDPServerRun 514
  17. #加载UPD模块,允许使用UDP的514端口接收采用UDP协议转发的日志
  18. # Provides TCP syslog reception
  19. #$ModLoad imtcp
  20. #$InputTCPServerRun 514
  21. #加栽TCP摸块,允许使用TCP的514编口接收采用TCP协议转发的日志
  22. #### GLOBAL DIRECTIVES ####
  23. #定义全局设置
  24. #Use default timestamp format
  25. #ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat #定义曰志的时间使用默认的时间戳格式
  26. #File syncing capability is disabled by default. This feature is usually not required,
  27. #not useful and an extreme performance hit
  28. #$ActionFileEnableSync on
  29. #文件同步功能。默认没有开启,是注释的
  30. #Include all config files in /etc/rsyslog.d/
  31. $IncludeConfig /etc/rsyslog.d/*.conf
  32. #包含/etx/tsyslog.d/目录中所有的".conf"子配置文件。也就是说,这个目录中的所有子配置文件也同时生效
  33. #### RULES ####
  34. #日志文件保存规则
  35. #Log all kernel messages to the console.
  36. #Logging much else clutters up the screen.
  37. #kern.* /dev/console
  38. #kern服务.所有曰志级别 保存在/dev/console
  39. #这个日志默认没有开启,如果需要,则取消注释
  40. #Log anything (except mail) of level info or higher.
  41. #Don't log private authentication messages!
  42. *.info;mail.none;authpriv.none;cron.none /var/log/messages
  43. #所有服务.info以上级到的日志保存在/var/log/messages日志文件中
  44. #mail, authpriv^ cron的B志不记录在/var/log/messages曰志文件中,因为它们部有自己的曰志文件
  45. #所以/var/log/messages日志是最重要的系统日志文件,需要经常查看
  46. #The authpriv file has restricted access.
  47. authpriv.* /var/log/secure
  48. #用户认证服务所有级别的日志保存在/vai/1og/secure日志文件中
  49. #Log all the mail messages in one place.
  50. mail.* -/var/log/maillog
  51. #mail服务的所有级别的日志保存在/var/log/maillog 日志文件中
  52. #"-"的含义是日志先在内存中保存.当曰志足够多之后.再向文件中保存
  53. # Log cron stuff
  54. cron.* /var/log/cron
  55. #计対任务的所有日志保存在/var/log/cron日志文件中
  56. # Everybody gets emergency messages
  57. #所有日志服务的疼痛等级日志对所有在线用户广播
  58. #Save news errors of level crit and higher in a special file. uucp,news.crit /var/log/spooler
  59. #uucp和news曰志服务的crit以上级别的日志保存在/var/log/sppoler曰志文件中
  60. #Save boot messages also to boot.log
  61. local7.* /var/log/boot.log
  62. #loacl7 日志服务的所有日志写入/var/log/boot.log 日志文件中 #会把开机时的检测信息在显示到屏幕的同时写入/var/log/boot.log 日志文件中
  63. # ### begin forwarding rule ###
  64. #定义转发规到
  65. #The statement between the begin ... end define a SINGLE forwarding
  66. #rule. They belong together, do NOT split them. If you create multiple
  67. # forwarding rules, duplicate the whole block!
  68. # Remote Logging (we use TCP for reliable delivery)
  69. #
  70. # An on-disk queue is created for this action. If the remote host is
  71. # 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
  72. #$ActionQueueMaxDiskSpace 1g # 1gb space limit (use as much as possible)
  73. #$ActionQueueSaveOnShutdown on # save messages to disk on shutdown
  74. #$ActionQueueType LinkedList t run asynchronously
  75. #$ActionResumeRetryCount -1 # infinite retries if host is down
  76. # remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional #*•* @6remote-host:514
  77. # ### end of the forwarding rule ##

定义自己的日志

尚硅谷笔记-日志管理 - 图4

尚硅谷笔记-日志管理 - 图5

日志轮替

命名规则

日志轮替最主要的作用就是把旧的日志文件移动并改名,同时建立新的空日志文件,当旧日志文件超出保存的范围之后,就会进行删除。那么旧的日志文件改名之后,如何命名呢?主要依靠/etc/logrotate.conf 配置文件中“dateext”参数:

  1. 如果配置文件中拥有“dateext”参数,那么日志会用日期来作为日志文件的后缀,例如 secure-20180605”。这样的话日志文件名不会重叠,所以也就不需要日志文件的改名,只需要保存指定的日志个数,删除多余的日志文件即可。
  2. 如果配置文件中没有“dateext”参数,那么日志文件就需要进行改名了。当第一次进行日志轮替时,当前的“secure”日志会自动改名为“secure.1”,然后新建“secure”日志,用来保存新的日志。当第二次进行日志轮替时,“secure.1”会自动改名为“secure.2”,当前的“secure”日志会自动改名为“secure.1”,然后也会新建“secure”日志,用来保存新的日志,以此类推。

/etc/logrotate.conf

  1. [root@labhost ~]# cat /etc/logrotate.conf
  2. # see "man logrotate" for details
  3. # rotate log files weekly
  4. #每周rotate log文件一次
  5. weekly
  6. # keep 4 weeks worth of backlogs:保存最近4周的log日志,因为上面是每周rotate一次
  7. rotate 4
  8. # create new (empty) log files after rotating old ones
  9. #rotate老日志文件之后,创建一个新的空日志文件
  10. create
  11. # use date as a suffix of the rotated file
  12. #rotate的文件以日期格式为后缀,比如:access_log-20200422,如果不加这个选项,rotate的格式为:access_log.1,access_log.2等等。
  13. dateext
  14. # uncomment this if you want your log files compressed:如果想压缩rotate后的文件,把下面compress前面的#号去掉就可以了。
  15. #compress
  16. # RPM packages drop log rotation information into this directory
  17. #RPM包的日志rotation配置信息,建议放到/etc/logrotate.d这个文件夹下,实现自定义控制log文件rotate
  18. include /etc/logrotate.d
  19. # no packages own wtmp and btmp -- we'll rotate them here:wtmp和btmp这两个不属于任何package,我们就把rotate的规则写到这里
  20. /var/log/wtmp {
  21. monthly #每个月执行一次rotate
  22. create 0664 root utmp #创建空文件,权限是664, 所属用户名 所属用户组
  23. minsize 1M #日志文件大小超过1M才执行rotate,否则跳过
  24. rotate 1 #rotate时,只保留一份rotate文件
  25. }
  26. /var/log/btmp {
  27. missingok
  28. monthly
  29. create 0600 root utmp
  30. rotate 1
  31. }
  32. # 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).

尚硅谷笔记-日志管理 - 图6

把自己的日志加入轮替

使用RPM包方式安装服务的日志会自动的加入logrotate轮替,一般不需要你介入。

而使用源码包方式安装服务的日志,需要手工把该服务的日志加入到logrotate.conf配置文件中。

所以源码包方式安装服务的日志和手动指定的日志,是需要自己手动加入logrotate日志轮替。

1、方式

有两个方法:

第一种方法是直接在/etc/logrotate.conf配置文件中写入该日志的轮替策略,从而把日志加入logrotate轮替。

第二种方法是在/etc/logrotate.d/目录中新建立该日志的轮替文件,在该轮替文件中写入正确的轮替策略,因为该目录中的文件都会被”include”到主配置文件中,所以也可以把日志加入轮替。

推荐第二种方法,因为系统中需要轮替的日志非常多,如果全都直接写入/etc/logrotate.conf配置文件,那么这个文件的可管理性就会非常差,不利于此文件的维护。

采用第二种方式实现,如下:

尚硅谷笔记-日志管理 - 图7

logrotate 命令

尚硅谷笔记-日志管理 - 图8

尚硅谷笔记-日志管理 - 图9