Linux日志学习

前言
  Linux 中提供了异常日志,并且日志的细节是可配置的。Linux 日志都以明文形式存储,所以您不需要特殊的工具就可以搜索和阅读它们。您还可以编写脚本,来扫描这些日志,并基于它们的内容去自动执行某些功能。Linux 日志存储在 /var/log 目录中。这里有几个由系统维护的日志文件,但其他服务和程序也可能会把它们的日志放在这里。大多数日志只有 root 才可以读,不过只需要修改文件的访问权限就可以让其他人可读。

  日志文件有系统日志和内核日志监控程序sysylogd和klogd控制,在/etc/syslog.conf文件中或/ect/syslog-ng/syslog-ng.conf中配置这两个监控程序默认活动。

  日志可以分为8大类,下面按重要性从大到小列出:
  emerg(emergency,紧急), alert(警报),crit(critical,关键),err(错误),warning,notice(通知),info(信息),debug

  boot.log文件列出与监控程序启动和停止相关的信息。

  wtmp可以帮助监视登录,可以用utmpdump命令使这个文件变成可读格式。可以通过查看wtmp的内容来检查系统是否被攻击。

  /var/log/messages messages 日志是核心系统日志文件。它包含了系统启动时的引导消息,以及系统运行时的其他状态消息。IO 错误、网络错误和其他系统错误都会记录到这个文件中。其他信息,比如某个人的身份切换为 root,也在这里列出。如果服务正在运行,比如 DHCP 服务器,您可以在 messages 文件中观察它的活动。通常,/var/log/messages 是您在做故障诊断时首先要查看的文件。

  /var/log/XFree86.0.log 这个日志记录的是 Xfree86 Xwindows 服务器最后一次执行的结果。如果您在启动到图形模式时遇到了问题,一般情况从这个文件中会找到失败的原因。

  其他日志根据您的 Linux 发行版本以及您所运行的服务和应用程序的不同,/var/log 目录下还会有其他日志文件。例如,可能会有与邮件服务器、资源共享、自动任务等相关的日志。

  日志工具
  任何文本工具都可以用来处理日志文件。下面是一些特别有用的工具。

  1、dmesg
  使用 dmesg 命令可以快速查看最后一次系统引导的引导日志。通常它的内容会很多,所以您往往会希望将其通过管道传输到一个阅读器。

  dmesg | more 上面的命令将以分页的方式显示引导信息。

  2、tail
  当某些行为发生时,您会希望密切关注一个日志文件。Tail 命令设计用于显示文本文件的最后几行。使用 -f 开关,当日志增加新的内容时,tail 将继续显示新的输出。

  tail -f /var/log/messages

  上面的命令将显示 /var/log/messages 文件的最后 10 行,然后继续监控那个文件,并输出新的行为。要停止 tail -f 命令,使用 Ctrl + C 来中止进程。

  3、less 是另一个文本阅读器,不过它还允许在文件中滚动浏览以及检索信息。

  less /var/log/messages

  上面的命令将显示 /var/log/messages 文件的内容。使用“q”来停止查看文件。使用“h”来获得 less 的使用帮助。

  定制的日志
  有两个服务,或者称之为后台程序,在控制日志,分别是 klogd 和 syslogd。klogd 只处理内核消息,syslogd 处理其他系统消息,比如应用程序。您可以通过编辑 /et/syslog.conf 和 /etc/sysconfig/syslog 来配置它们的行为。您也可以查看 /etc/syslogd.conf 的 man 页面来进一步学习。本质上,软件所产生的每一条消息都提供一些信息用于确定消息是从哪里来的以及这个消息是什么。/etc/syslog.conf 文件允许您来指定如何处理那种类型的消息。您可以将它转储到消息文件,也可以将它转储到一个定制的文件。您可以将它发送到远程的主机,由远程主机来根据其自己的 syslogd 配置来处理它。远程日志是一个非常好的安全功能。通过将您的日志放置到远程系统中,您可以防止有人通过改变日志文件来掩饰其踪迹。

  下面是取自 man /etc/syslog.conf 页面中的一个定制日志的例子:

  # Kernel messages are first, stored in the kernel
# file, critical messages and higher ones also go
# to another host and to the console
#
kern.* /var/adm/kernel
kern.crit @finlandia
kern.crit /dev/console
kern.info;kern.!err /var/adm/kernel-info

  第一个规则将所有内核消息定向到 /var/adm/kernel 文件。第二个语句将所有优先级为 crit 或者更高的内核消息定向到一个名为 finlandia 的远程主机。这是有用的,因为如果主机崩溃以及磁盘错误无法恢复,您将无法读取存储的消息。如果那些消息同时在远程主机上也存在,您就依然可以找出崩溃的原因。第三个规则将这些消息定向到实际的控制台,这样,在这台机器上工作的人也可以看到它们。第四行告诉 syslogd 将所有优先级为 info 到 warning 的内核消息保存到 /var/adm/kernel-info 文件。所有优先级为 err 以及更高的消息不包括在内。像这种定制日志的能力为 Linux 环境提供了极大的灵活性与可控制性。

 

原文:http://www.linuxdiyf.com/viewarticle.php?id=54798

你可能感兴趣的:(Linux日志学习)