购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

6.2 Linux日志系统

日志系统负责记录系统运行过程中内核产生的各种信息,并分别将它们存放到不同的日志文件中,以便系统管理员进行故障排除、异常跟踪等。RHEL 7中使用rsyslog作为日志服务程序。本节主要介绍rsyslog的知识。

6.2.1 rsyslog日志系统简介

Linux是一个多用户多任务的系统,系统每时每刻都在发生变化,需要完备的日志系统记录系统运行的状态。如果系统管理员需要了解每个用户的登录情况,就需要查看登录日志。如果开发人员要了解系统中安装的Web服务或数据库服务运行状态如何,就需要查看Web应用的日志或数据库的日志。各种情况下日志系统是不可缺少的,正如大厦管理员需要了解访问人员的信息一样,Linux提供了完善的日志系统以便完成日常的审计或业务统计需求。

Linux内核由很多子系统组成,包含网络、文件访问、内存管理等,子系统需要给用户传送一些消息,这些消息内容包括消息的来源及重要性等,所有这些子系统都要把消息传送到一个可以维护的公共消息区,于是产生了rsyslog。

syslog是一个综合的日志记录系统,主要功能是为了方便管理日志和分类存放系统日志,syslog使程序开发者从繁杂的日志文件代码中解脱出来,使管理员能更好地控制日志的记录过程。在syslog出现之前,每个程序都使用自己的日志记录策略,管理员对保存什么信息或信息存放在哪里没有控制权。每种应用(如Web服务、MySQL等)都有自己的日志。

因为在实际的日常管理中,每天的日志量都非常大,在进行排查或跟踪时,使用grep查看日志文件是件痛苦的事情。于是,syslog的替代产品rsyslog出现了,Redhat和Fedra都使用rsyslog替换了syslog。

6.2.2 rsyslog配置文件及语法

rsyslog默认配置文件为/etc/rsyslog.conf,该配置文件定义了系统中需要监听的事件和对应的日志文件的保存位置。首先看示例6-7。

【示例6-7】

每一行由两个部分组成。第一部分是一个或多个“设备”,设备后面跟一些空格字符,然后是一个“操作动作”。

1.设备

设备本身分为两个字段,之间用一个小数点“.”分隔。前一个字段表示一项服务,后一个字段是一个优先级。通过设备将不同类型的消息发送到不同的地方。在同一个rsyslog配置行上允许出现一个以上的设备,但必须用分号“;”把它们分隔开。表6.2列出了绝大多数Linux操作系统都可以识别的设备。

表6.2 Linux操作系统可以识别的设备

其中local0-local7由自定义程序使用,应用程序可以通过它做一些个性的配置。

2.优先级

优先级是选择条件的第2个字段,代表消息的紧急程度。不同的服务类型有不同的优先级,数值较大的优先级涵盖数值较小的优先级。如果优先级是warning,则实际上将warning、err、crit、alert和emerg都包含在内。优先级定义消息的紧急程度,优先级按严重程度由高到低如表6.3所示。

表6.3 Linux日志系统紧急程度层级说明

3.优先级限定符

rsyslog可以使用3种限定符对优先级进行修饰:星号(*)、等号(=)和叹号(!)。

● 星号(*)表示对应服务生成的所有日志消息都发送到操作动作指定的地点。

● 等号(=)表示只把对应服务生成的本优先级的日志消息发送到操作动作指定的地点。

● 叹号(!)表示把对应服务生成的所有日志消息都发送到操作动作指定的地点,但本优先级的消息不包括在内,类似于编程语言中“非”的用法。

4.操作动作

日志信息可以分别记录到多个文件里,还可以发送到命名管道、其他程序,甚至远程主机。常见的动作有以下几种,示例6-8列举了一些配置示例。

注意

每条消息均会经过所有规则,并不是唯一匹配的。

● file指定日志文件的绝对路径。

● terminal或print发送到串行或并行设备标志符,例如/dev/ttyS2。

● @host是远程的日志服务器。

● username发送信息到本机的指定用户终端中,前提是该用户必须已经登录到系统中。

● named pipe发送到预先使用mkfifo命令来创建的FIFO文件的绝对路径。

【示例6-8】 AlAWvXWkwov/ad2j+jcOTjzPZ74niWHqe2S5s0YygDz4pGVlmXFFltuKBmDPS2bZ

点击中间区域
呼出菜单
上一章
目录
下一章
×