Linux日志分析基本过程
日志分析
一般来说,系统产生的讯息经过记录下来的数据中,每条讯息均会记录底下的几个重要数据:
-
事件发生的日期与时间; 发生此事件的主机名; 启动此事件的服务名称 (如 systemd, CROND 等) 或指令与函式名称 (如 su, login…); 该讯息的实际数据内容。 以/var/log/cron为例 /var/log/boot.log: 开机的时候系统核心会去侦测与启动硬件,接下来开始各种核心支持的功能启动等。这些流程都会记录在 /var/log/boot.log 里面哩! 不过这个文件只会存在这次开机启动的信息,前次开机的信息并不会被保留下来! /var/log/cron: 还记得第十五章例行性工作排程吧?你的 crontab 排程有没有实际被进行? 进行过程有没有发生错误? 你的 /etc/crontab 是否撰写正确?在这个登录档内查询看看。 /var/log/dmesg: 记录系统在开机的时候核心侦测过程所产生的各项信息。由于 CentOS 默认将开机时核心的硬件侦测过程 取消显示, 因此额外将数据记录一份在这个文件中; /var/log/lastlog: 可以记录系统上面所有的账号最近一次登入系统时的相关信息。第十三章讲到的 lastlog 指令就是利用这个 文件的记录信息来显示的。 /var/log/maillog 或 /var/log/mail/*: 记录邮件的往来信息,其实主要是记录 postfix (SMTP 协议提供者) 与 dovecot (POP3 协议提供者) 所产生 的讯息啦。 SMTP 是发信所使用的通讯协议, POP3 则是收信使用的通讯协议。 postfix 与 dovecot 则分 别是两套达成通讯协议的软件。 /var/log/messages: 这个文件相当的重要,几乎系统发生的错误讯息 (或者是重要的信息) 都会记录在这个文件中; 如果系统 发生莫名的错误时,这个文件是一定要查阅的登录档之一。 /var/log/secure: 基本上,只要牵涉到『需要输入账号密码』的软件,那么当登入时 (不管登入正确或错误) 都会被记录在此 文件中。 包括系统的 login 程序、图形接口登入所使用的 gdm 程序、 su, sudo 等程序、还有网络联机的 ssh, telnet 等程序, 登入信息都会被记载在这里; /var/log/wtmp, /var/log/faillog: 这两个文件可以记录正确登入系统者的帐户信息 (wtmp) 与错误登入时所使用的帐户信息 (faillog) ! 我们 在第十章谈到的 last 就是读取 wtmp 来显示的, 这对于追踪一般账号者的使用行为很有帮助! /var/log/httpd/, /var/log/samba/: 不同的网络服务会使用它们自己的登录文件来记载它们自己产生的各项讯息!上述的目录内则是个别服务 所制订的登录档。
rsyslogd 针对各种服务与讯息记录在某些文件的配置文件就是 /etc/rsyslog.conf, 这个文件 规定了(1)服务类别(2)等级信息 (3)需要被记录在哪里(设备或者文件)
. :代表『比后面还要严重的等级 (含该等级) 都被记录下来』的意思,例如: mail.info 代表只要是 mail 的信息,而且该信息等级严重于 info (含 info 本身)时,就会被记录下来的意思。 *:代表『目前在在线的所有人』,类似 wall 这个指令的意义! rsyslogd和rsyslog.service区别
日志轮询
logrotate.conf 才是主要的参数文件,至于 logrotate.d 是一个目录, 该目录里面的所有文件都会被主动的读入 /etc/logrotate.conf 当中来进行。 我们也可以编辑/etc/logrotate.d/目录下的文件来自定义轮询
