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中的不必要指令和层,以最小化镜像的大小。…...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...
毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...
Chrome 浏览器前端与客户端双向通信实战
Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...
Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...
WEB3全栈开发——面试专业技能点P7前端与链上集成
一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染(SSR)与静态网站生成(SSG) 框架,由 Vercel 开发。它简化了构建生产级 React 应用的过程,并内置了很多特性: ✅ 文件系…...
2.2.2 ASPICE的需求分析
ASPICE的需求分析是汽车软件开发过程中至关重要的一环,它涉及到对需求进行详细分析、验证和确认,以确保软件产品能够满足客户和用户的需求。在ASPICE中,需求分析的关键步骤包括: 需求细化:将从需求收集阶段获得的高层需…...
