首先,我们将描述有关Linux日志是什么,到哪儿去找它们,以及它们是如何创建的基础知识
Linux系统日志
许多有价值的日志文件都是由Linux自动地为你创建的。你可以在/var/log目录中找到它们。下面是在一个典型的Ubuntu系统中这个目录的样子:
一些最为重要的Linux系统日志包括:
/var/log/syslog或/var/log/messages存储所有的全局系统活动数据,包括开机信息。基于Debian的系统如Ubuntu在/var/log/syslog中存储它们,而基于RedHat的系统如RHEL或CentOS则在/var/log/messages中存储它们。
/var/log/auth.log或/var/log/secure存储来自可插拔认证模块(PAM)的日志,包括成功的登录,失败的登录尝试和认证方式。Ubuntu和Debian在/var/log/auth.log中存储认证信息,而RedHat和CentOS则在/var/log/secure中存储该信息。
/var/log/kern存储内核的错误和警告数据,这对于排除与定制内核相关的故障尤为实用。
/var/log/cron存储有关cron作业的信息。使用这个数据来确保你的cron作业正成功地运行着。
DigitalOcean有一个关于这些文件的完整教程,介绍了rsyslog如何在常见的发行版本如RedHat和CentOS中创建它们。
应用程序也会在这个目录中写入日志文件。例如像Apache,Nginx,MySQL等常见的服务器程序可以在这个目录中写入日志文件。其中一些日志文件由应用程序自己创建,其他的则通过syslog(具体见下文)来创建。
什么是Syslog?
Linux系统日志文件是如何创建的呢?答案是通过syslog守护程序,它在syslog套接字/dev/log上监听日志信息,然后将它们写入适当的日志文件中。
单词syslog代表几个意思,并经常被用来简称如下的几个名称之一:
Syslog守护进程—一个用来接收、处理和发送syslog信息的程序。它可以远程发送syslog到一个集中式的服务器或写入到一个本地文件。常见的例子包括rsyslogd和syslog-ng。在这种使用方式中,人们常说发送到syslog。
Syslog协议—一个指定日志如何通过网络来传送的传输协议和一个针对syslog信息(具体见下文)的数据格式的定义。它在RFC-5424中被正式定义。对于文本日志,标准的端口是514,对于加密日志,端口是6514。在这种使用方式中,人们常说通过syslog传送。
Syslog信息—syslog格式的日志信息或事件,它包括一个带有几个标准字段的消息头。在这种使用方式中,人们常说发送syslog。
Syslog信息或事件包括一个带有几个标准字段的消息头,可以使分析和路由更方便。它们包括时间戳、应用程序的名称、在系统中信息来源的分类或位置、以及事件的优先级。
下面展示的是一个包含syslog消息头的日志信息,它来自于控制着到该系统的远程登录的sshd守护进程,这个信息描述的是一次失败的登录尝试:
<34>12003-10-11T22:14:15.003Zserver1.comsshd--pam_unix(sshd:auth):authenticationfailure;logname=uid=0euid=0tty=sshruser=rhost=10.0.2.2
Syslog格式和字段
每条syslog信息包含一个带有字段的信息头,这些字段是结构化的数据,使得分析和路由事件更加容易。下面是我们使用的用来产生上面的syslog例子的格式,你可以将每个值匹配到一个特定的字段的名称上。
复制代码