一、什么是日志文件
1. 日志文件可以记录一个事件的何时、何地、何人、何事等四大资讯,故系统有问题时务必查询登录文件。
2. 日志文件的重要性
(1)解决网络服务的问题
(2)解决系统方面的错误:
(3)过往事件记录簿
3. Linux 常见的日志文件名
/var/log/cron:
你的 crontab 排程有没有实际被进行? 进行过程有没有发生错误?你的 /etc/crontab 是否编写正确?在这个登录文件内查询看看。
/var/log/dmesg:
记录系统在启动的时候核心侦测过程所产生的各项资讯。由于CentOS 默认将启动时核心的硬件侦测过程取消显示, 因此额外将数据记录一份在这个文件中;
/var/log/lastlog:
可以记录系统上面所有的帐号最近一次登陆系统时的相关资讯。 lastlog 命令就是利用这个文件的记录资讯来显示的。
/var/log/maillog 或 /var/log/mail/*:
记录邮件的往来资讯,其实主要是记录 sendmail (SMTP 协议提供者) 与 dovecot (POP3 协议提供者) 所产生的信息啦。 SMTP 是发信所使用的通讯协议, POP3 则是收信使用的通讯协议。 sendmail 与 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/news/*, /var/log/samba/*:
不同的网络服务会使用它们自己的登录文件来记载它们自己产生的各项信息!上述的目录内则是个别服务所制订的登录文件。
4. 日志文件所需相关服务 (daemon) 与程序
syslogd:主要登录系统与网络等服务的信息;
klogd:主要登录核心产生的各项资讯;
logrotate:主要在进行登录文件的轮替功能。
二、syslogd :记录日志文件的服务
1.日志文件内容的一般格式
一般来说,系统产生的信息经过 syslog 而记录下来的数据中,每条信息均会记录底下的几个重要数据:
事件发生的日期与时间;
发生此事件的主机名称;
启动此事件的服务名称 (如 samba, xinetd 等) 或函式名称 (如 libpam ..);
该信息的实际数据内容。
Mar 14 15:38:00 www atd[18701]: pam_unix(atd:session): session opened for user root by (uid=0)
在三月14日 (Mar 14) 的下午 15:38 分,由 www 这部主机的 atd [PID 为 18701] 传来的消息,这个消息是透过 pam_unix 这个模块所提出的。信息内容为 root (uid=0) 这个帐号已经开启 atd 的活动了。
2. syslog 的配置文件:/etc/syslog.conf
syslog 针对各种服务与信息记录在某些文件的配置档就是 /etc/syslog.conf, 这个文件规定了:
什么服务 、的什么等级信息 、需要被记录在哪里(装置或文件)』
服务名称
服务类别 | 说明 |
auth (authpriv) | 主要与认证有关的机制,例如 login, ssh, su 等需要帐号/口令的咚咚; |
cron | 就是例行性工作排程 cron/at 等产生信息记录的地方; |
daemon | 与各个 daemon 有关的信息; |
kern | 就是核心 (kernel) 产生信息的地方; |
lpr | 亦即是列印相关的信息啊! |
只要与邮件收发有关的信息纪录都属於这个; | |
news | 与新闻群组服务器有关的东西; |
syslog | 就是 syslogd 这支程序本身产生的资讯啊! |
user, uucp, local0 ~ local7 | 与 Unix like 机器本身有关的一些信息。 |
信息等级
等级 | 等级名称 | 说明 |
1 | info | 仅是一些基本的信息说明而已; |
2 | notice | 比 info 还需要被注意到的一些资讯内容; |
3 | warning | 警示的信息,可能有问题,但是还不至於影响到某个 daemon 运行的资讯;基本上, info, notice, warn 这三个信息都是在告知一些基本资讯而已,应该还不至於造成一些系统运行困扰; |
4 | err | 一些重大的错误信息,例如配置档的某些配置值造成该服务服法启动的资讯说明, 通常藉由 err 的错误告知,应该可以了解到该服务无法启动的问题呢! |
5 | crit | 比 error 还要严重的错误资讯,这个 crit 是临界点 (critical) 的缩写,这个错误已经很严重了喔! |
6 | alert | 警告警告,已经很有问题的等级,比 crit 还要严重! |
7 | emerg | 疼痛等级,意指系统已经几乎要死机的状态! 很严重的错误资讯了。通常大概只有硬件出问题,导致整个核心无法顺利运行,就会出现这样的等级的信息吧! |
信息记录的文件名或装置或主机
文件的绝对路径:通常就是放在 /var/log 里头的文件啦!
打印机或其他:例如 /dev/lp0 这个打印机装置
使用者名称:显示给使用者罗!
远程主机:例如 @www.vbird.tsai 当然啦,要对方主机也能支持才行!
*:代表『目前在线上的所有人』,类似 wall 这个命令的意义!
3、日志文件服务器的配置
既然是日志文件服务器,那么我们的 Linux 主机当然会启动一个端口来监听了,那个默认的端口就是 UDP 的 514
三、日志文件的轮替(logrotate)
1. syslog 利用的是 daemon 的方式来启动的, 当有需求的时候立刻就会被运行的,但是 logrotate 却是在规定的时间到了之后才来进行登录文件的轮替, 所以这个 logrotate 程序当然就是挂在 cron 底下进行的。
2. logrotate 这个程序的参数配置文件
/etc/logrotate.conf
/etc/logrotate.d/
3. 实际测试 logrotate 的操作
[root@www ~]# logrotate [-vf] logfile
选项与参数:
-v :启动显示模式,会显示 logrotate 运行的过程喔!
-f :不论是否符合配置档的数据,强制每个登录文件都进行 rotate 的动作
4.logrotate 的配置档为 /etc/logrotate.conf ,而额外的配置则可写入 /etc/logrotate.d/* 内;