rsyslog日志转发

前言

Rsyslog可用于接受来自各种来源(本地和网络)的输入,转换它们,并将结果输出到不同(通过模板和filter过滤)的目的地(目录文件中)

rsyslog是一个开源工具,被广泛用于Linux系统以通过TCP/UDP协议转发或接收日 志消息。rsyslog守护进程可以被配置成两种环境,一种是配置成日志收集服务器, rsyslog进程可以从网络中收集其它主机上的日志数据,这些主机会将日志配置为发 送到另外的远程服务器。rsyslog的另外一个用法,就是可以配置为客户端,用来过 滤和发送内部日志消息到本地文件夹(如/var/log)或一台可以路由到的远程rsyslog 服务器上。

系统中的绝大多数日志文件是由 rsyslogd 服务来统一管理的,只要各个进程将信息 给予这个服务,它就会自动地把日志按照特定的格式记录到不同的日志文件中。有一部分日志不是由 rsyslogd 服务来管理的,比如 apache 、ftpd服务, 它的日志是由 Apache 软件自己产生并记录的,并没有调用 rsyslogd 服务。但是为 了便于读取,apache 日志文件的格式和系统默认日志的格式是一致的。还有就是业务微服务的日志,是通过业务代码自己记录的。

配置文件格式详解

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

authpriv.* /var/log/secure
#服务名称[连接符号]日志等级 日志记录位置

#认证相关服务.所有日志等级 记录在/var/log/secure日志中

*.*        @8.8.8.8:514

#第一个*表示日志类型,有mail,authpriv,cron等,*表示所有日志;第二个*表示日志级别,主要有info,debug,emerg等,*表示包含所有级别;即*.*表示所有日志的所有级别;

# 所有日志的所有级别通UDP协议转发到日志服务器8.8.8.8中

服务名称:

我们首先需要确定 rsyslogd 服务可以识别哪些服务的日志,也可以理解为以下这些 服务委托 rsyslogd 服务来代为管理日志。这些日志服务名称是rsyslogd服务自己定义的,并不是实际的Linux的服务。当有服务需要由rsyslogd服务来帮助管理日志时,只需要调用这些服务名称就可以实现日志的委托管理。可以使用命令 "man 3 syslog" 来查看。这些服务如表 1 所示。

连接符号:

连接符号可以被识别为以下三种。

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

日志等级:

日志记录位置:

  1. 日志文件的绝对路径。这是最常见的日志保存方法,如“/var/log/secure”就是用 来保存系统验证和授权信息日志的。
  2. 系统设备文件。如“/dev/lp0”代表第一台打印机,如果日志保存位置是打印机设备,当有日志时就会在打印机上打印。
  3. 转发给远程主机。因为可以选择使用 TCP 和 UDP 协议传输日志信息,所以有两种发送格式:如果使用“@192.168.0.210:514”,就会把日志内容使用 UDP 协议发送到192.168.0.210 的 UDP 514 端口上;如果使用“@@192.168.0.210: 514”,就会把日志内容使用 TCP 协议发送到 192.168.0.210 的 TCP 514 端口 上,其中 514 是日志服务默认端口。当然,只要 192.168.0.210 同意接收此日志,就可以把日志内容保存在日志服务器上。
  4. 忽略或丢弃日志。如果接收日志的对象是“~”,则代表这个日志不会被记录,而 被直接丢弃。如“local3.* ~”代表忽略 local3 服务类型所有的日志都不记录。

配置文件内容详解

由三部分组成:严格按照配置段位置添加配置 ;

  • MODULES:定义了模块的选修,这个部分主要用来配置模板,模板的作用是指定你希望在日志文件中保存的日志格式。

# 加载模块

$ModLoad imfile   

# 设置轮询时间周期,单位秒,即每隔10s轮训一次日志新内容

$InputFilePollInterval 10

# 工作目录,如生成状态文件

$WorkDirectory /var/log/syslog/work

# 指定监控文件路径

$InputFileName /var/log/ftpd.log

# 设置状态文件名,跟踪受监控文件那部分已经处理,当前处理到什么位置,当前于指针。

$InputFileStateFile stat-ftpd-access

# rsyslog自己指定的服务名称,当有服务需要由rsyslogd服务来帮助管理日志时,只需要调用这些服务名称就可以实现日志的委托管理

$InputFileTag ftpd-access

# 指定读取日志的级别

$InputFileSeverity info

# 设置写入状态文件的周期,单位行。即读取25000行时写入一次状态文件

$InputFilePersistStateInterval 25000

# 可以理解为日志类型local 1~7

$InputFileFacility local5

#设置日志文件中的用户属性字段的归属用户组

$PrivDropToGroup adm" 

# 启动文件监视器,以便实时读取日志文件的新消息。

$InputRunFileMonitor

 具体输入、输出模块详情请参考:

imfile: 文本文件输入模块 — Rsyslog 文档

服务端配置:

一般来说选择TCP都是OK的,除非忍受部分丢失,在意影响性能,可以改用UDP。

但是注意:如果你的消息每行大小超过了4k,只能用TCP。这是因为UDP栈大小限制的。

引用官方有关 MaxMessageSize 的描述:

#Provides UDPsyslog reception
$ModLoad imudp
$UDPServerRun 514
 
#TCP syslog
$ModLoad imtcp
$InputTCPServerRun 514

 通常情况下syslog服务端会接受来自不通客户端的日志, 那个就需要通过模版配置加以区分:

创建Remote模版,并引用,如果是来自7.7.7.7的日志,存在在/data/log/7.7.7.7/7.7.7.7_2024-07-07.log中

$template Remote,"/data/log/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log"

:fromhost-ip, isequal, "7.7.7.7" ?Remote

 配置黑白名单

$AllowedSender tcp, 192.168.30.0/24                 允许 30.0网段内的主机以tcp协议来传输

# 某些新版本的rsyslog配置格式如下

# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")
 
# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514"

注1:可能由于防火墙导致日志发送失败,可于客户端及服务器端查看514端口是否能正常使用,Centos7中使用如下命令:

    firewall-cmd –-query-port=514/udp,tcp类似

输出no,表示没有启用,则添加514端口于防火墙,tcp类似

    firewall-cmd –add-port=514/udp

注2:如: rsyslog 监听UDP 514端口,还需要设置 SELinux,否则该端口无法使用。

/etc/sysconfig/rsyslog文件中,修改

SYSLOGD_OPTIONS="-m240  -r"
其中-r表示接受外部日志的写入。

 

客户端配置:

*.*        @8.8.8.8:514

#第一个*表示日志类型,有mail,authpriv,cron等,*表示所有日志;第二个*表示日志级别,主要有info,debug,emerg等,*表示包含所有级别;即*.*表示所有日志的所有级别;

# 所有日志的所有级别通UDP协议转发到日志服务器8.8.8.8中

*.info;mail.none;authpriv.none;cron.none @@10.145.254.175:514

# 除过mail、authpriv和cron的info级别以上的日志通过TCP协议转发到10.145.254.175日志服务器上

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/780314.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

树莓派5安装冬瓜HAOS教程

原文来自瀚思彼岸和hasshome 一、安装前准备 (1)软件 1、树莓派烧录软件Imager 2、冬瓜HAOS镜像 (2)硬件 1、树莓派5 2、TF卡(SanDisk Extreme PRO 64GB U3 A2 V30 4k) 3、读卡器 4、键盘和鼠标 5、显…

550kg级大载重长航时无人机直升机技术详解

550kg级大载重长航时无人机直升机,作为一种高性能的无人机系统,具备了多项先进的技术特点,以满足高海拔、高寒等复杂环境下的应用需求。这些无人机直升机通常具备高载重、长航时、强适应性、高可靠性和良好的任务拓展性。 设备由无人直升机平…

ctfshow-web入门-文件上传(web151-web160)

目录 1、web151 2、web152 3、web153 4、web154 5、web155 6、web156 7、web157 8、web158 9、web159 10、web160 1、web151 试了下前端只能传 png 后缀的 将一句话木马改成 png 后缀,上传后用 burpsuite 抓包 绕过前端检测后,改回 php 后缀&am…

(南京观海微电子)——MOS管原理及应用区别

MOS管: 全称为金属氧化物半导体场效应管(Metal Oxide Semiconductor Field Effect Transistor),也被称为MOSFET(Metal-Oxide-Semiconductor Field-Effect Transistor)。它是一种半导体器件,常用…

[数据结构] 基于选择的排序 选择排序堆排序

标题:[数据结构] 基于选择的排序 选择排序&&堆排序 水墨不写bug (图片来源于网络) 目录 (一)选择排序 实现:(默认从小到大排序) 优化后实现方法: (二)堆排序…

latex英文转中文word,及一些latex相关工具分享

前言:想要转换latex生成的英文pdf文件为中文word文件 一、主要步骤 1、文字翻译:直接使用谷歌翻译等辅助将英文翻译成中文即可; 2、图片: 使用latex时一般保存的.png,.bmp格式图片可以直接插入word, 但是.eps或者 .p…

基于Android Studio零食工坊

目录 项目介绍 图片展示 运行环境 获取方式 项目介绍 用户 可以浏览商品 , 查询商品 , 加入购物车 , 结算商品 , 查看浏览记录 , 修改密码 , 修改个人信息 , 查询订单 管理员 能够实现商品的…

AIGC专栏12——EasyAnimateV3发布详解 支持图文生视频 最大支持960x960x144帧视频生成

AIGC专栏12——EasyAnimateV3发布详解 支持图&文生视频 最大支持960x960x144帧视频生成 学习前言项目特点生成效果相关地址汇总项目主页Huggingface体验地址Modelscope体验地址源码下载地址 EasyAnimate V3详解技术储备Diffusion Transformer (DiT)Hybrid Motion ModuleU-V…

分布式整合

一、分布式架构介绍 什么是分布式系统 分布式系统指一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。 通俗的理解,分布式系统就是一个业务拆分成多个子业务,分布在不同的服务器节点&#xff0…

测试环境:使用OpenSSL生成证书并配置Https

文章目录 需求1、安装OpenSSL1.1、安装包下载1.2、安装(以window 64位为例)1.3、配置环境变量(非必须) 2、生成证书2.1、新建文件夹2.2、生成根证书2.2.1、生成私钥2.2.2、生成根证书,并且自签名 2.3、服务端证书生成2…

JDBC的基本认识

前提 在了解和学习JDBC之前,大家 已经学习过 java语言 和数据库的基本知识了,今天这篇博客的核心,就是告诉大家 ,jdbc 是连接java编译器和数据库,是使用java对数据库进行操作的。 正文 JDBC简介 概念 JDBC的本质 1…

解决微信读书和Apple Books导入epub电子书不显示图片的问题

title: 解决微信读书和Apple Books导入epub电子书不显示图片的问题 tags: 个人成长 categories:杂谈 最近找到一本很喜欢的书的电子版的epub版,发现无论是导入微信读书,还是Apple家的Books, 都无法正常显示图片。 于是我用calibre打开epub电子书&#x…

昇思25天学习打卡营第10天 | 自然语言处理:RNN实现情感分类

1. RNN实现情感分类 1.2 概述 情感分类是自然语言处理中的经典任务,是典型的分类问题。本节使用MindSpore实现一个基于RNN网络的情感分类模型,实现如下的效果: 输入: This film is terrible 正确标签: Negative(负面) 预测标签: Negative输…

nacos-sdk-python——Python版本Nacos客户端

Nacos(Naming and Configuration Service)是阿里巴巴开源的一款动态服务发现、配置管理和服务管理平台。它主要用于解决微服务架构中服务发现和配置管理的问题,提供了一站式解决方案。以下是 Nacos 的几个关键功能: 服务发现和健康…

C++模板元编程(一)——可变参数模板

这个系列主要记录C模板元编程的常用语法 文章目录 引言语法应用函数模板可变参数的打印可变参数的最小/最大函数 类模板 参考文献 引言 在C11之前,函数模板和类模板只支持含有固定数量的模板参数。C11增强了模板功能,允许模板定义中包含任意个(包括0个)…

保研复习 | 数据结构

目录 CH1 绪论☆ 数据项、数据元素、数据结构☆ 逻辑结构和存储结构的区别☆ 顺序存储结构和链式存储结构的比较☆ 算法的重要特性☆ 算法的复杂度 CH2 线性表☆ 单链表 CH3 栈、队列和数组☆ 栈和堆是什么?☆ 栈在括号匹配中的应用☆ 栈在表达式求值中的应用☆ …

Linux中的管道符‘|‘以及SQL(DQL,DCL)

ls 指令 语法: ls [选项][目录或文件] 功能: 对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。 常用选项: -a 列出目录下的所有文件,包括以 . 开头的隐含文件。 -…

【初阶数据结构】深入解析循环队列:探索底层逻辑

🔥引言 本篇将介绍如何实现循环队列并实现过程需要注意的事项,虽然篇幅较小,但是其中逻辑还是值得引人思考的,循环队列可以采用数组或链表实现,这篇将采用数组实现循环队列 🌈个人主页:是店小二…

Webpack: Loader开发 (1)

概述 如何扩展 Webpack?有两种主流方式,一是 Loader —— 主要负责将资源内容翻译成 Webpack 能够理解、处理的 JavaScript 代码;二是 Plugin —— 深度介入 Webpack 构建过程,重塑 构建逻辑。 相对而言,Loader 的职责…

阶段三:项目开发---搭建项目前后端系统基础架构:任务11:搭建项目后台系统基础架构

任务描述 1、了解搭建民航后端框架 2、使用IDEA创建基于SpringBoot、MyBatis、MySQL、Redis的Java项目 3、以原项目为参照搭建项目所涉及到的各个业务和底层服务 4、以原项目为例,具体介绍各个目录情况并参照创建相关文件夹 任务指导 1、讲框架的选择和原理 …