Linux日志基础

1.介绍

Linux系统日志是记录了系统运行状态、程序运行情况以及系统事件的文件。它包含了各种级别的信息,从调试信息和错误报告到警告和系统事件等。Linux系统日志主要分为四个部分:内核日志、系统日志、安全日志和应用程序日志。

  1.     内核日志:记录了系统内核的运行状态和事件,例如系统启动和关机时间、硬件错误等。
  2.     系统日志:记录了系统服务和进程的运行情况,例如登录信息、网络连接等。
  3.     安全日志:记录了系统的安全事件,例如认证失败、攻击尝试等。
  4.     应用程序日志:记录了应用程序的运行状态和事件,例如数据库服务器的连接信息、Web服务器的请求信息等。

通过查看系统日志,管理员可以了解系统的状态和运行情况,诊断问题并进行故障排除。

2.日志文件

日志文件是重要的系统信息文件,其中记录了许多重要的系统事件,包括用户的登录信息、系统的启动信息、系统的安全信息、邮件相关信息、各种服务相关信息等。这些信息有些非常敏感,所以在 Linux 中这些日志文件只有 root 用户可以读取。

1.重要日志文件说明

在大多数 Linux 发行版中,系统日志文件通常保存在 /var/log 目录下。这个目录包含了许多不同的日志文件,每个日志文件都用于记录特定类型的日志信息。

日志文件    说明
/var/log/cron    记录与系统定时任务相关的日志
/var/log/cups/    记录打印信息的日志
/var/log/dmesg    记录了系统在开机时内核自检的信息。也可以使用 dmesg 命令直接查看内核自检信息
/var/log/btmp    记录错误登录的日志。这个文件是二进制文件,不能直接用 Vi 查看,而要使用 lastb 命令查看
/var/log/lastlog    记录系统中所有用户最后一次的登录时间的日志。这个文件也是二进制文件,不能直接用 Vi 查看。而要使用 lastlog 命令查看
/var/log/maillog    记录邮件信息的日志
/var/log/messages    它是核心系统日志文件,其中包含了系统启动时的引导信息,以及系统运行时的其他状态消息。I/O 错误、网络错误和其他系统错误都会记录到此文件中。其他信息,比如某个人的身份切换为 root,已经用户自定义安装软件的日志,也会在这里列出
/var/log/secure    记录验证和授权方面的信息,只要涉及账户和密码的程序都会记录,比如系统的登录、ssh 的登录、su 切换用户,sudo 授权,甚至添加用户和修改用户密码都会记录在这个日志文件中
/var/log/wtmp    永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样,这个文件也是二进制文件。不能直接用 Vi 查看,而要使用 last 命令查看
/var/run/utmp    记录当前已经登录的用户的信息。这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息。同样,这个文件不能直接用 Vi 查看,而要使用 w、who、users 等命令查看

2.文件格式

只要是由日志服务 rsyslogd 记录的日志文件,它们的格式就都是一样的。所以我们只要了解了日志文件的格式,就可以很轻松地看懂日志文件。

日志文件的格式包含以下 4 列:

    事件产生的时间。
    产生事件的服务器的主机名。
    产生事件的服务名或程序名。
    事件的具体信息。

例如,下面是一条典型的系统日志信息的格式:

May 12 00:00:01 hostname kernel: printk: 1 message suppressed.

其中,“May 12 00:00:01” 表示时间戳,“hostname” 表示主机名,“kernel” 表示日志源头(内核),而 “printk: 1 message suppressed.” 则表示日志内容。不同的日志级别,如 DEBUG、INFO、WARNING 和 ERROR 等,会以不同的颜色或标识显示在日志文件中,方便管理员快速定位和处理问题。

总之,rsyslogd 记录的日志文件一般采用文本格式并包含时间戳、日志级别、来源和内容等信息。

其实分析日志既是重要的系统维护工作,也是一项非常枯燥和烦琐的工作。如果我们的服务器出现了一些问题,比如系统不正常重启或关机、用户非正常登录、服务无法正常使用等,则都应该先查询日志。

实际上,只要感觉到服务器不是很正常就应该查看日志,甚至在服务器没有什么问题时也要养成定时查看系统日志的习惯。

3.配置文件

rsyslogd 服务是依赖其配置文件 /etc/rsyslog.conf 来确定哪个服务的什么等级的日志信息会被记录在哪个位置的。也就是说,日志服务的配置文件中主要定义了服务的名称、日志等级和日志记录位置。

/etc/rsyslog.conf 是 rsyslog 服务的主要配置文件,它用于指定日志消息如何被接收、处理和转发。

rsyslog.conf 文件的格式是基于模块的,并且由一系列指令和参数组成。其中,每个指令都以一个美元符号($)开头,后面跟着指令的名称和参数。下面是一个简单的 rsyslog.conf 配置文件的示例:

# This is a sample rsyslog configuration file.

# Load the kernel log module
$ModLoad imklog

# Set the default logging action to be "standard output"
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022

# Log messages from the local system
local0.* /var/log/local-messages.log

在此示例中,我们首先加载了名为 imklog 的内核日志模块。接下来,我们设置了默认的日志记录行为并指定了一些参数,例如将日志文件的权限设置为 0640 等。最后,我们指定了一条规则,该规则将所有使用 local0 设施的消息写入 /var/log/local-messages.log 文件中。

中间的命令我们不去了解,主要是理解最后一行。它的格式可以理解为服务名称[连接符号]日志等级 日志记录位置

服务名称:我们首先需要确定 rsyslogd 服务可以识别哪些服务的日志,也可以理解为以下这些服务委托 rsyslogd 服务来代为管理日志。

服务名称	说明
auth(LOG_AUTH)	安全和认证相关消息 (不推荐使用authpriv替代)
authpriv(LOG_AUTHPRIV)	安全和认证相关消息(私有的)
cron(LOG_CRON)	系统定时任务cront和at产生的日志
daemon(LOG_DAEMON)	与各个守护进程相关的曰志
ftp(LOG_FTP)	ftp守护进程产生的曰志
kern(LOG_KERN)	内核产生的曰志(不是用户进程产生的)
Iocal0-local7(LOG_LOCAL0-7)	为本地使用预留的服务
lpr(LOG_LPR)	打印产生的日志
mail(LOG_MAIL)	邮件收发信息
news(LOG_NEWS)	与新闻服务器相关的日志
syslog(LOG_SYSLOG)	存储syslogd服务产生的曰志信息(虽然服务名称已经改为rsyslogd,但是很多配置依然沿用了syslogd服务的,所以这里并没有修改服务名称)
user(LOG_USER)	用户等级类别的日志信息
uucp(LOG_UUCP)	uucp子系统的日志信息,uucp是早期Linux系统进行数据传递的协议,后来也常用在新闻组服务中。

连接符号:在这里,连接符号可以被识别为以下三种。

  1.     “.”代表只要比后面的等级高的(包含该等级)日志都记录。比如,“cron.info”代表cron服务产生的日志,只要日志等级大于等于info级别,就记录。
  2.     “.=”代表只记录所需等级的日志,其他等级的日志都不记录。比如,“*.=emerg”代表人和日志服务产生的日志,只要等级是emerg等级,就记录。这种用法极少见,了解就好。
  3.     “.!”代表不等于,也就是除该等级的日志外,其他等级的日志都记录。

日志等级:

下面是常见的日志等级列表:

  •     DEBUG:用于详细记录系统或应用程序的内部状态、变量值和事件信息,通常只在调试时使用。
  •     INFO:表示一般性的系统状态和事件信息,例如服务启动、关机、重启等,通常用于跟踪系统运行情况。
  •     NOTICE:表示正常但重要的事件信息,例如配置文件更改、用户登录、系统警报等。
  •     WARNING:表示一个非致命错误或异常发生,比如磁盘空间不足、网络连接中断等,可以引起注意但不会导致系统崩溃。
  •     ERROR:表示一个异常发生,可能会影响系统的正常运行,需要立即检查并修复。
  •     CRITICAL:表示一个严重的错误或问题发生,可能会导致系统崩溃或数据丢失,需要立即采取行动。
  •     ALERT:表示一个需要紧急处理的错误或问题发生,需要发送警报或提示,以便管理员立即采取行动。
  •     EMERGENCY:表示一个严重的系统崩溃或停机事件发生,需要立即通知所有相关人员,并进行紧急处理。
  •     *:代表所有日志等级。比如,“authpriv.*”代表amhpriv认证信息服务产生的日志,所有的日志等级都记录

这些日志等级通常根据其重要性和紧急程度排序。在实际应用中,我们可以根据需要自定义额外的日志等级,以适应特定的业务需求。

  • 20
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值