点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!
基本概述
rsyslog是一个强大的日志管理工具,用于收集、处理和转发来自各种来源的日志消息。
它是syslog协议的扩展和实现,提供了比传统syslog更多的功能和更高的性能。Rsyslog支持多种日志输入源,包括本地文件系统、网络协议(如UDP、TCP)、系统日志接口等,并可以将日志消息输出到本地文件系统、远程服务器、数据库等多种目的地。
安装rsyslog
在Linux中安装rsyslog的步骤如下:
2.1 安装rsyslog
基于Debian的系统:sudo apt install rsyslog
对于基于Red Hat的系统:sudo yum install rsyslog
2.2 启动和启用rsyslog服务
启动rsyslog服务:sudo systemctl start rsyslog(或sudo service rsyslog start,取决于系统)。
启用rsyslog服务以便在系统启动时自动启动:sudo systemctl enable rsyslog(或sudo chkconfig rsyslog on,取决于系统)。
2.3 检查rsyslog服务状态
使用命令sudo systemctl status rsyslog来检查rsyslog服务的运行状态。
配置rsyslog
rsyslog的主配置文件通常位于/etc/rsyslog.conf,子配置位于/etc/rsyslog.d/目录下的配置文件。rsyslog的配置文件由多个部分组成,包括模块加载、全局指令、模板定义、规则设置等。
3.1 模块加载
在配置文件的开始部分,通常会加载所需的输入、输出和解析模块。
例如:

3.2 全局指令
全局指令用于设置rsyslog服务的基本操作参数和行为。
例如:

3.3 模板定义
模板用于定义日志消息的格式。可以创建自定义模板来满足特定的日志格式需求。
1)模板定义语法

name:模板的名称。
type:模板的类型(string、list、subtree、plugin)。
String:对于string类型的模板,这里定义了消息的格式字符串(模板内容)。

上面的模板日志打印格式为:
RFC3339格式的时间戳 发送日志消息的主机名 产生日志的程序或进程(标签) 日志消息的实际内容 换行符。
2)模板内容定义
在定义模板内容时,可以使用多种属性来指定日志消息中应包含的信息。
以下是一些常用的属性及其含义:
%property%
属性替换符用于从日志消息中提取特定信息,并将其插入到格式字符串中。
%timestamp%
日志消息的时间戳。
%HOSTNAME%
产生日志消息的主机名。
%syslogtag%
日志消息的标签,通常与产生日志的程序或进程相关。
%msg%
日志消息的正文内容。
%fromhost%
如果日志消息是从远程主机转发的,则显示远程主机的主机名。
%programname%
产生日志消息的程序名。
%syslogfacility%
日志消息的设施(facility)代码,用于标识日志消息的来源类型(如auth、cron等)。
%syslogfacility-text%
日志消息的设施文本描述。
%syslogseverity%
日志消息的优先级(severity)代码,用于标识日志消息的严重程度(如debug、info、warning等)。
%syslogseverity-text%
日志消息的优先级文本描述。
规则设置
规则部分定义了日志消息的处理方式。每条规则都由一个选择器和一个或多个动作组成。选择器用于匹配特定的日志消息,而动作则定义了当消息匹配时应该执行的操作。
4.1 rsyslog日志类型
Rsyslog支持多种日志类型,这些类型用于区分不同类型的日志消息。以下是一些常见的日志类型:
日志类型 | 描述 |
auth | 安全和认证相关的消息,如登录尝试等。 |
authpriv | 私有的安全和认证相关消息,如SSH、FTP等服务的登录验证信息。 |
cron | 与系统定时任务(如crontab)相关的消息。 |
daemon | 与守护进程相关的消息,守护进程是在后台运行的进程。 |
kern | 内核产生的消息,如内核崩溃、硬件相关的事件等。 |
lpr | 打印服务产生的消息。 |
邮件服务产生的消息,如邮件发送、接收等。 | |
mark | Rsyslog服务内部的时间标识消息。 |
news | 与新闻服务器相关的消息。 |
syslog | Rsyslog服务自身产生的消息。 |
user | 用户等级类别的消息,如用户程序产生的日志。 |
uucp | 与UUCP(Unix-to-Unix Copy Program)相关的消息,UUCP是一种早期的Unix系统间数据传输协议。 |
local0-local7 | 本地使用的预留服务,用户可以根据自己的需求自定义这些日志类型。 |
4.2 rsyslog日志等级
日志等级 | 数字代号 | 描述 |
emerg | 0 | 内核崩溃等严重情况,系统不可用。 |
alert | 1 | 需要立刻修改的信息,如系统严重损坏。 |
crit | 2 | 非常严重的状况,阻止整个系统或软件正常工作。 |
err | 3 | 错误信息,阻止某个功能或模块正常工作。 |
warning | 4 | 警告信息,表示可能出现问题但系统仍能正常工作。 |
notice | 5 | 稍微需要注意的信息,表示正常但重要的条件。 |
info | 6 | 一般信息的日志,最常用,表示系统正常运行的信息。 |
debug | 7 | 调试信息,包含最多的日志信息,主要用于开发人员调试。 |
4.3 使用示例

rsyslog还提供了许多其他配置选项,如日志轮转、过滤、远程转发等。这些选项可以通过编辑配置文件来实现。
例如:
要实现日志轮转,可以使用logrotate工具与rsyslog配合使用。
要实现日志过滤,可以在规则中使用条件语句来匹配特定的日志消息。
要实现远程转发,可以配置rsyslog将日志消息发送到远程服务器。

本文作者:李易明(上海新炬中北团队)
本文来源:“IT那活儿”公众号
