Linux日志服务rsyslog深度解析(上)

🐇明明跟你说过:个人主页
🏅个人专栏:《Linux :从菜鸟到飞鸟的逆袭》🏅
🔖行路有良友,便是天堂🔖
目录
一、引言
1、日志在Linux系统中的作用
2、rsyslog历史背景
3、rsyslog与syslogd的比较
二、rsyslog基础知识
1、rsyslog的安装与配置基础
2、rsyslog的组件架构
一、引言
1、日志在Linux系统中的作用
1. 系统监控和管理
- 系统健康检查:日志文件记录了系统的启动过程、内核消息、硬件事件等,可以帮助管理员了解系统的健康状况。
- 资源使用监控:日志文件可以记录CPU、内存、磁盘和网络等资源的使用情况,帮助管理员监控系统性能。
2. 故障排查和调试
- 错误排查:当系统或应用程序发生错误时,日志文件中通常会记录错误信息和堆栈跟踪,这些信息对故障排查和调试非常有帮助。
- 行为回溯:通过查看日志文件,可以了解系统或应用程序在特定时间段内的行为,帮助找出问题的根源。
3. 安全监控
- 入侵检测:日志文件可以记录系统的登录尝试、权限变更和异常操作等,有助于检测和防范潜在的入侵行为。
- 审计和合规:日志文件可以用于审计和合规检查,确保系统操作符合安全策略和法规要求。
4. 性能分析和优化
- 性能瓶颈分析:通过分析日志文件中的性能数据,可以找出系统或应用程序的性能瓶颈,进行相应的优化。
- 趋势分析:日志文件中的数据可以用于分析系统性能的历史趋势,帮助预测未来的性能需求和瓶颈。

2、rsyslog历史背景
rsyslog 是一个开源的日志处理工具,广泛用于UNIX和Linux系统中。它起源于经典的syslog,并在此基础上进行了大量的扩展和改进。
1. syslog的起源
- syslog协议:最早由Eric Allman在1980年代为BSD Unix开发。syslog协议提供了一个标准化的日志记录机制,用于记录系统事件和应用程序消息。
- syslog守护进程:是最早的系统日志记录工具之一,负责接收和处理来自系统和应用程序的日志消息。
2. syslog的局限性
随着时间的推移,经典的syslog守护进程暴露出了一些局限性,包括:
- 扩展性不足:syslog的设计较为简单,难以满足现代系统复杂的日志处理需求。
- 性能问题:在处理大量日志消息时,syslog的性能和效率较低。
- 灵活性不足:缺乏高级的过滤、格式化和转发功能,难以适应多样化的日志处理场景。
3. rsyslog的诞生
- 起源:rsyslog由Rainer Gerhards在2004年开始开发,旨在解决经典syslog的局限性。
- 开源发布:rsyslog在2007年作为开源项目发布,迅速得到了社区的广泛关注和使用。
4. rsyslog的特点和改进
rsyslog在经典syslog的基础上进行了大量改进,具有以下主要特点:
- 高性能:通过多线程和异步处理机制,极大地提高了日志处理的性能和效率。
- 模块化设计:采用模块化架构,支持通过插件扩展功能,包括多种输入、输出和处理模块。
- 高级过滤和处理:支持复杂的过滤规则和日志消息的格式化处理,满足多样化的日志处理需求。
- 可靠性:提供可靠的日志传输机制,确保日志消息不会丢失。
- 支持多种协议:支持包括UDP、TCP、RELp在内的多种网络协议,增强了日志消息的传输能力。
- 丰富的输出选项:支持将日志消息发送到文件、数据库、远程服务器等多种目标。
5. 发展历程
- 2004年:Rainer Gerhards开始开发rsyslog。
- 2007年:rsyslog作为开源项目发布,逐步取代经典syslog守护进程。
- 2008年:加入了对RELp(Reliable Event Logging Protocol)的支持,提高了日志传输的可靠性。
- 2010年:引入了对零消息队列(ZeroMQ)的支持,进一步提升了并发处理能力。
- 2011年:加入了对 Elasticsearch、Redis 等现代存储系统的支持。
- 2012年以后:持续进行功能扩展和性能优化,逐步成为Linux系统中最常用的日志处理工具之一。

3、rsyslog与syslogd的比较
syslogd 是最早的 UNIX 和 Linux 系统日志守护进程之一,它提供了一种简单而有效的方式来记录和管理系统和应用程序的日志。
rsyslog 和 syslogd 是两个用于日志管理的守护进程,尽管它们有共同的历史渊源,但在功能和特性上有显著的差异。
1. 性能和扩展性
syslogd:
- 性能:设计简单,适合处理中小规模的日志量。
- 扩展性:扩展性有限,难以处理大量并发日志消息。
rsyslog:
- 性能:支持多线程和异步处理,能够高效地处理大量日志消息。
- 扩展性:模块化设计,允许通过插件进行功能扩展,能够适应大规模和高并发的日志处理需求。
2. 配置灵活性
syslogd:
- 配置文件:配置文件格式相对简单,但功能有限。
- 灵活性:缺乏高级的过滤和处理功能,配置灵活性较低。
rsyslog:
- 配置文件:支持复杂的配置文件格式,允许进行精细的日志过滤、格式化和路由。
- 灵活性:提供强大的配置选项,支持复杂的日志处理需求。
3. 支持的输入和输出
syslogd:
- 输入:主要支持标准的syslog协议(UDP)。
- 输出:主要支持将日志消息写入文件或发送到远程syslog服务器。
rsyslog:
- 输入:支持多种输入来源,包括文件、网络(UDP、TCP、RELp)、数据库、消息队列等。
- 输出:支持多种输出目标,包括文件、数据库、远程服务器、消息队列、Elasticsearch等。
4. 可靠性
syslogd:
- 可靠性:使用UDP传输日志消息,传输不可靠,可能丢失日志消息。
rsyslog:
- 可靠性:支持多种可靠的传输协议(如TCP、RELp),提供可靠的日志传输机制,确保日志消息不丢失。
5. 日志处理功能
syslogd:
- 处理功能:基本的日志记录和转发功能,缺乏高级的处理能力。
rsyslog:
- 处理功能:支持复杂的日志处理规则,包括条件过滤、消息修改、格式化、转发等,功能强大。
6. 安全性
syslogd:
- 安全性:基本的安全性特性,缺乏现代化的安全机制。
rsyslog:
- 安全性:支持TLS加密传输,增强了日志消息传输的安全性;提供更细粒度的访问控制和安全配置选项。
7. 社区支持和更新
syslogd:
- 社区支持:作为传统的日志守护进程,社区支持和开发更新较少。
rsyslog:
- 社区支持:活跃的开源社区,持续的功能更新和改进,广泛的文档和用户支持。
rsyslog 和 syslogd 各有特点:
- syslogd:适合于简单的日志记录需求,小规模系统使用。
- rsyslog:功能强大,适合处理大规模、高并发的日志需求,支持复杂的日志处理规则和多种传输协议,提供高性能和高可靠性。

二、rsyslog基础知识
1、rsyslog的安装与配置基础
安装 rsyslog
在大多数 Linux 发行版中,rsyslog 都可以通过包管理器进行安装。
在 Debian/Ubuntu 系统上:
sudo apt update
sudo apt install rsyslog
在 Red Hat/CentOS 系统上:
sudo yum update
sudo yum install rsyslog
在 Fedora 系统上:
sudo dnf update
sudo dnf install rsyslog
启动和启用 rsyslog 服务
安装完成后,可以通过以下命令启动和启用 rsyslog 服务:
sudo systemctl start rsyslog
sudo systemctl enable rsyslog
配置 rsyslog
rsyslog 的主配置文件通常位于 /etc/rsyslog.conf,而具体的配置文件则位于 /etc/rsyslog.d/ 目录下。配置文件使用一种简单的规则语言,可以指定日志消息的来源、过滤条件和输出目标。配置文件示例
以下是一个基本的 rsyslog 配置文件示例:
# 加载输入模块
module(load="imuxsock") # 本地 Unix socket 输入
module(load="imklog") # 内核日志输入# 日志格式模板
template(name="TraditionalFormat" type="string" string="%TIMESTAMP% %HOSTNAME% %syslogtag%%msg%\n")# 日志过滤和输出
authpriv.* /var/log/secure
mail.* -/var/log/mail
cron.* /var/log/cron# 记录所有日志到 /var/log/messages,排除 mail, authpriv 和 cron 日志
*.info;mail.none;authpriv.none;cron.none /var/log/messages# 记录紧急日志到所有用户终端
*.emerg :omusrmsg:*# 将日志消息转发到远程服务器
*.* @192.168.1.100:514
配置详解
- 模块加载:加载必要的输入模块,如本地 Unix socket (imuxsock) 和内核日志输入模块 (imklog)。
- 模板:定义日志消息的格式。
- 日志过滤和输出:指定不同类型的日志消息的处理规则和输出目标。
- 远程日志转发:将所有日志消息转发到远程服务器(IP 地址:192.168.1.100,端口:514)。

2、rsyslog的组件架构
rsyslog 是一个高度模块化和可扩展的系统日志处理工具,其组件架构使其能够灵活地处理、过滤和转发日志消息。以下是 rsyslog 的主要组件及其架构的详细介绍:
1. 输入模块(Input Modules)
输入模块负责接收各种来源的日志消息。常用的输入模块包括:
- imuxsock:从 Unix 域套接字接收本地日志消息。
- imklog:从内核日志缓冲区接收内核日志消息。
- imudp:通过 UDP 协议接收日志消息。
- imtcp:通过 TCP 协议接收日志消息。
- imfile:从文件中读取日志消息。
2. 过滤和解析器(Parsers and Filters)
过滤器和解析器用于处理和解析接收到的日志消息,并根据预定义的规则过滤日志。常见的过滤器和解析器包括:
- RainerScript:rsyslog 的内置脚本语言,用于复杂的日志处理和过滤。
- Syslog parser:解析标准的 syslog 消息格式。
- JSON parser:解析 JSON 格式的日志消息。
- Filter conditions:基于消息内容、来源等条件进行日志过滤。
3. 输出模块(Output Modules)
输出模块负责将处理后的日志消息转发到指定的目标位置。常用的输出模块包括:
- omfile:将日志消息写入文件。
- omudp:通过 UDP 协议发送日志消息。
- omtcp:通过 TCP 协议发送日志消息。
- omelasticsearch:将日志消息发送到 Elasticsearch。
- ommysql:将日志消息写入 MySQL 数据库。
- omkafka:将日志消息发送到 Kafka 主题。

4. 缓冲与队列(Buffers and Queues)
为了提高性能和可靠性,rsyslog 支持异步操作和消息队列。队列用于缓冲日志消息,避免在高负载或网络故障时丢失日志。常见的队列类型包括:
- 内存队列:将消息存储在内存中,适用于低延迟需求的场景。
- 磁盘队列:将消息存储在磁盘上,适用于高可靠性需求的场景。
5. 模板(Templates)
- 模板用于定义日志消息的输出格式。用户可以自定义日志格式,以便与特定的日志收集系统或数据库兼容。模板支持多种格式化选项和变量。
6. 安全与加密(Security and Encryption)
rsyslog 支持 TLS/SSL 加密,以确保日志消息在传输过程中的安全性。相关模块包括:
- imtcp + TLS:通过 TLS 加密的 TCP 连接接收日志消息。
- omfwd + TLS:通过 TLS 加密的 TCP/UDP 连接发送日志消息。

💕💕💕每一次的分享都是一次成长的旅程,感谢您的陪伴和关注。希望这些关于Linux的文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺
🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!!
相关文章:
Linux日志服务rsyslog深度解析(上)
🐇明明跟你说过:个人主页 🏅个人专栏:《Linux :从菜鸟到飞鸟的逆袭》🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、日志在Linux系统中的作用 2、rsyslog历史背景 …...
python的df.describe()函数
一、初识describe()函数 在数据分析和处理的过程中,我们经常需要了解数据的基本统计信息,如均值、标准差、最小值、最大值等。pandas库中的describe()函数为我们提供了这样的功能,它可以快速生成数据集的描述性统计信息。 二、describe()函数的基本用法 describe()函数是pan…...
Feign的介绍与说明
Feign是Spring Cloud提供的一个声明式、模板化的HTTP客户端,旨在使编写Java HTTP客户端变得更容易。它的设计目标是让Web服务调用变得更加简单,无论是在本地还是在远程。使用Feign,开发者可以像调用本地服务一样调用远程服务,提供…...
【Linux】用户和组的管理、综合实训
目录 实训1:用户的管理 实训2:组的管理 实训3:综合实训 实训1:用户的管理 (1)创建一个新用户userl,设置其主目录为/home/user 1。 (2)查看/etc/passwd 文件的最后一行,看看是如何记录的。 (3)查看文件/etc/shadow文件的最后一…...
B=2W,奈奎斯特极限定理详解
一直没搞明白奈奎斯特极限定理的含义,网上搜了很久也没得到答案。最近深思几天后,终于有了点心得。顺便吐槽一下,csdn的提问栏目,有很多人用chatgpt秒回这个事,实在是解决不了问题,有时候人的问题大多数都是…...
【Pytorch 】Dataset 和Dataloader制作数据集
文章目录 Dataset 和 Dataloader定义Dataset定义Dataloader综合案例1 导入两个列表到Dataset综合案例2 导入 excel 到Dataset综合案例3 导入图片到Dataset导入官方数据集Dataset 和 Dataloader Dataset指定了数据集包含了什么,可以是自定义数据集,也可以是以及官方数据集Data…...
[Algorithm][动态规划][两个数组的DP][正则表达式匹配][交错字符串][两个字符串的最小ASCII删除和][最长重复子数组]详细讲解
目录 1.正则表达式匹配1.题目链接2.算法原理详解3.代码实现 2.交错字符串1.题目链接2.算法原理详解3.代码实现 3.两个字符串的最小ASCII删除和1.题目链接2.算法原理详解3.代码实现 4.最长重复子数组1.题目链接2.算法原理详解3.代码实现 1.正则表达式匹配 1.题目链接 正则表达…...
Ffmpeg安装和简单使用
Ffmpeg安装 下载并解压 进入官网 (https://ffmpeg.org/download.html),选择 Window 然后再打开的页面中下滑找到 release builds,点击 zip 文件下载 环境变量配置 下载好之后解压,找到 bin 文件夹,里面有3个 .exe 文件 然后复制…...
29、matlab算数运算汇总2:加、减、乘、除、幂、四舍五入
1、乘法:times, .* 语法 C A.*B 通过将对应的元素相乘来将数组 A 和 B 相乘。 C times(A,B) 是执行 A.*B 的替代方法, 1)将两个向量相乘 代码及运算 A [1 0 3]; B [2 3 7]; C A.*BC 2 0 212) 将两个数组相乘 代码及运算 A [1 0 3;…...
<Rust><iced>基于rust使用iced库构建GUI实例:动态改变主题色
前言 本专栏是Rust实例应用。 环境配置 平台:windows 软件:vscode 语言:rust 库:iced、iced_aw 概述 本篇构建了这样的一个实例,可以动态修改UI的主题,通过菜单栏来选择预设的自定义主题和官方主题&#…...
k8s——安全机制
一、安全机制说明 Kubernetes作为一个分布式集群的管理工具,保证集群的安全性是其一个重要的任务。API Server是集群内部各个组件通信的中介, 也是外部控制的入口。所以Kubernetes的安全机制基本就是围绕保护API Server来设计的。 比如 kubectl 如果想…...
Linux驱动应用编程(三)UART串口
本文目录 前述一、手册查看二、命令行调试串口1. 查看设备节点2. 使用stty命令设置串口3. 查看串口配置信息4. 调试串口 三、代码编写1. 常用API2. 例程线程优化 前述 在开始实验前,请一定要检查测试好所需硬件是否使用正常,不然调试过程中出现的问题&am…...
【设计模式深度剖析】【4】【行为型】【策略模式】
文章目录 策略模式定义英文原话直译 角色类图策略接口Strategy:具体策略类上下文类Context测试类 策略模式的应用策略模式的优点策略模式的缺点策略模式的使用场景 策略模式 策略模式(Strategy Pattern) Strategy策略也称作Policy政策。 想…...
opencv dnn模块 示例(26) 目标检测 object_detection 之 yolov10
文章目录 1、yolov10简要介绍1.1、双标签分配策略1.2、架构改进1.3、性能1.4、预训练模型1.5、网络有关层说明 2、测试2.1、官方测试2.2、opencv dnn2.2.1、仅运行到内部"NMS"步骤之前的层2.2.2、完整代码2.2.2、完整实现所有层 2.3、onnxruntime测试2.4、tensorrt 1…...
【python进阶】python图形化编程之美--tkinter模块初探
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
discuz点微同城源码34.7+全套插件+小程序前端
discuz点微同城源码34.7全套插件小程序前后端 模板挺好看的 带全套插件 自己耐心点配置一下插件 可以H5可以小程序...
ActiveMQ 介绍、下载、安装和控制台
ActiveMQ 介绍 Apache ActiveMQ 是一款非常成熟且功能全面的开源消息中间件,由Apache软件基金会维护。它遵循 Java Message Service (JMS) 规范,这意味着它提供了一组标准的 API,允许 Java 应用程序以一种标准化的方式发送和接收消息。 以下…...
MacOS M系列芯片一键配置多个不同版本的JDK
第一步:下载JDK。 官网下载地址:Java Archive | Oracle 选择自己想要下载的版本,一般来说下载一个jdk8和一个jdk11就够用了。 M系列芯片选择这两个,第一个是压缩包,第二个是dmg可以安装的。 第二步:编辑…...
源码文章上传无忧,论坛小程序支持
前言 在数字化时代,知识的分享与传播显得愈发重要。为了满足广大创作者和求知者的需求,我们推出了全新的论坛小程序,不仅支持文章、源码、链接等多样化内容的上传,还实现了付费观看功能,为创作者们提供了一个展示才华…...
Docker面试整理-如何优化Docker容器的性能?
优化Docker容器的性能可以从多个方面入手,以下是一些建议: 选择合适的基础镜像:使用轻量级的基础镜像,如基于Alpine Linux的镜像,可以减少镜像的大小和启动时间。避免使用过于庞大的操作系统镜像。优化Dockerfile:减少Dockerfile中的不必要指令和层,以最小化镜像的大小。…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...
【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...
热烈祝贺埃文科技正式加入可信数据空间发展联盟
2025年4月29日,在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上,可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞,强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...
