|
原文链接
介绍
Linux系统管理员经常需要查看日志文件用于故障诊断。事实上,这是任何系统管理员都将做的第一件事。在本教程中,我们将看看Linux日志记录机制。
默认文件位置
默认的日志文件位置:在Linux默认位置是/var/log日志文件。 您可以用一个简单的ls - l /var/log命令查看日志文件的目录列表。
[root@TestLinux ~]/# ls -l /var/log
查看文档内容
下面是一些常见的日志文件,他们都在默认的log路径下面
• wtmp
• utmp
• dmesg
• messages
• maillog or mail.log
• spooler
• auth.log or secure
wtmp和utmp文件跟踪用户登录的系统。你不能直接读取这些文件的内容,必须使用特定的命令。下面我们将使用一些命令做演示。 去看谁最近登录了本机器,下面有个centos执行的例子。
[root@TestLinux ~]/# who
root tty1 2013-12-09 10:44
root pts/0 2013-12-09 10:29 (10.0.2.2)
sysadmin pts/1 2013-12-09 10:31 (10.0.2.2)
joeblog pts/2 2013-12-09 10:39 (10.0.2.2)
最后一个命令告诉我们登录用户的历史:
[root@TestLinux ~]/# last | grep sysadmin
sysadmin pts/1 10.0.2.2 Mon Dec 9 10:31 still logged in
sysadmin pts/0 10.0.2.2 Fri Nov 29 15:42 - crash (00:01)
sysadmin pts/0 10.0.2.2 Thu Nov 28 17:06 - 17:13 (00:06)
sysadmin pts/0 10.0.2.2 Thu Nov 28 16:17 - 17:05 (00:48)
sysadmin pts/0 10.0.2.2 Thu Nov 28 09:29 - crash (06:04)
sysadmin pts/0 10.0.2.2 Wed Nov 27 16:37 - down (00:29)
sysadmin tty1 Wed Nov 27 14:05 - down (00:36)
sysadmin tty1 Wed Nov 27 13:49 - 14:04 (00:15)
在这个例子中,我试图找到登录用户sysadmin的历史,我们发现有2个实例是系统崩溃。
如果想要找到重启的历史,可以运行以下命令。
[root@TestLinux ~]/# last reboot
The result may look like this
reboot system boot 2.6.32-358.el6.x Mon Dec 9 10:27 - 10:47 (00:19)
reboot system boot 2.6.32-358.el6.x Fri Dec 6 16:37 - 10:47 (2+18:10)
reboot system boot 2.6.32-358.el6.x Fri Dec 6 16:28 - 16:36 (00:08) reboot system boot 2.6.32-358.el6.x Fri Dec 6 11:06 - 16:36 (05:29)
reboot system boot 2.6.32-358.el6.x Mon Dec 2 17:00 - 16:36 (3+23:36)
reboot system boot 2.6.32-358.el6.x Fri Nov 29 16:01 - 16:36 (7+00:34)
reboot system boot 2.6.32-358.el6.x Fri Nov 29 15:43 - 16:36 (7+00:53)
...
...
wtmp begins Fri Nov 15 16:11:54 2013
去查看最后使用系统使用lastlog的历史日志
[root@TestLinux ~]/# lastlog
In my system, the output looked like this:
Username Port From Latest
root tty1 Mon Dec 9 10:44:30 +1100 2013
bin **Never logged in**
daemon **Never logged in**
adm **Never logged in**
lp **Never logged in**
sync **Never logged in**
shutdown **Never logged in**
halt **Never logged in**
mail **Never logged in**
uucp **Never logged in**
operator **Never logged in**
games **Never logged in**
gopher **Never logged in**
ftp **Never logged in**
nobody **Never logged in**
vcsa **Never logged in**
saslauth **Never logged in**
postfix **Never logged in**
sshd **Never logged in**
sysadmin pts/1 10.0.2.2 Mon Dec 9 10:31:50 +1100 2013
dbus **Never logged in**
joeblog pts/2 10.0.2.2 Mon Dec 9 10:39:24 +1100 2013
对于其他一些日志文件,我们可以通过head和tail命令去获取想要的内容。 如下面的例子,我可以的到日志的最后10行。
debian@debian:~$ sudo tail /var/log/messages
输出
Dec 16 01:21:08 debian kernel: [ 9.584074] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
Dec 16 01:21:08 debian kernel: [ 9.584074] Bluetooth: BNEP filters: protocol multicast
Dec 16 01:21:08 debian kernel: [ 9.648220] Bridge firewalling registered
Dec 16 01:21:08 debian kernel: [ 9.696728] Bluetooth: SCO (Voice Link) ver 0.6
Dec 16 01:21:08 debian kernel: [ 9.696728] Bluetooth: SCO socket layer initialized
Dec 16 01:21:08 debian kernel: [ 9.832215] lp: driver loaded but no devices found
Dec 16 01:21:08 debian kernel: [ 9.868897] ppdev: user-space parallel port driver
Dec 16 01:21:11 debian kernel: [ 12.748833] [drm] Initialized drm 1.1.0 20060810
Dec 16 01:21:11 debian kernel: [ 12.754412] pci 0000:00:02.0: PCI INT A -> Link[LNKB] -> GSI 11 (level, low) -> IRQ 11
Dec 16 01:21:11 debian kernel: [ 12.754412] [drm] Initialized vboxvideo 1.0.0 20090303 for 0000:00:02.
Syslog守护进程
日志的核心机制是rsyslog守护进程,这个服务负责各个部分的的日志信息的收集和传递。它还可以日志消息转发到另一个Linux服务器。
rsyslog配置文件
此守护进程会从rsyslog.conf文件获取配置信息,这个文件一般默认在/etc下面。这个配置文件会告诉rsylog守护进程哪里去存储日志。这里是一个CentOS rsyslog摘录。配置文件:
/# rsyslog v5 configuration file
...
...
/# Include all config files in /etc/rsyslog.d/
IncludeConfig /etc/rsyslog.d/*.conf
/#/#/#/# RULES /#/#/#/#
/# Log all kernel messages to the console.
/# Logging much else clutters up the screen.
/#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
/# The authpriv file has restricted access.
authpriv.* /var/log/secure
/# Log all the mail messages in one place.
mail.* -/var/log/maillog
/# Log cron stuff
cron.* /var/log/cron
/# Everybody gets emergency messages
*.emerg *
/# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
/# Save boot messages also to boot.log
local7.* /var/log/boot.log
...
...
要理解其中的含义,让我们来了解下不同设备的类型,下面是一个列表。
auth or authpriv: 消息来自授权和安全相关的事件
kern:来自内核的消息。 mail:来自邮件系统的消息
cron:cron守护进程相关信息
daemon:消息来自守护进程
news:消息来自网络新闻子系统
lpr:打印相关的日志消息
user:日志消息来自用户程序
local0 local7:留给当地使用
这里是升序的优先级列表:
• debug: 来源于项目的调试信息。 •
• info: 简单的信息消息——不需要干预 •
• notice: 可能需要关注的条件 •
• warn:警告 •
• err: 错误 •
• crit: 临界条件 •
• alert: 条件是需要立即干预 •
• emerg: 紧急情况 •
现在让我们考虑下面的从文件中取出的行。
cron.* /var/log/cron
这只是告诉rsyslog守护进程保存来自cron守护进程所有信息于一个名为/var/log/cron.的中,asterix后(*)点(.)意味着消息的优先级将被记录。同样,如果设施被指定为包含星号,它意味着所有的来源。
在其默认形式,当只有一个优先级指定点后,这意味着所有事件等于或大于优先级将被困。所以下面的指令引起的任何消息来自邮件子系统警告或更高的优先级被记录在一个特定的文件/var/log下:
mail.warn /var/log/mail.warn
使用一个等号(=)点在(.)后会导致唯一指定的优先级被记录
mail.=info /var/log/mail.info
同样,如果我们想从陷阱邮件子系统除了信息消息,该规范将像下面这样
mail.!info /var/log/mail.info
当一个动作被标记为包含星号(*),这意味着所有用户。在我的CentOS rsyslog这个条目。conf文件是准确地说像下面一样。
/# Everybody gets emergency messages
*.emerg
:
尝试去看看自己的配置文件表达的意思,下面是我的debian配置文件:
…………………………
原文链接:https://www.pppcloud.cn/community_courseInfo.html?id=600023 |
|