首页 > 系统相关 >linux-Rsyslog自定义配置json模板

linux-Rsyslog自定义配置json模板

时间:2024-07-12 16:10:40浏览次数:9  
标签:remote template 自定义 json Rsyslog 日志 type 模板 string

配置日志接收模板和转发

参考:https://www.cnblogs.com/xwupiaomiao/p/17565418.html

自定义模板配置文件

在主配置文件中添加(rsyslog.conf)

include(file=“/etc/rsyslog.d/*.conf” mode=“optional”)

方案一

在/etc/rsyslog.d/下创建一个配置文件 ct3a1.conf

#日志模板  
#type类型有:list,subtree,string,plugin四种、list最常用,string也可以
#string="%jsonmesg%	 -->接收的日志转为json格式(系统自带)
template(name="tpl_remote" type="string"
string="%jsonmesg%\n"	
)

#日志规则设置、规则名(模板名):remote 	
ruleset(name="remote"){
  #action动作:数据处理 -->type定义了处理数据所使用的模块	omfile模块、file=日志写入的文件路径
  action(type="omfile" file="/var/log/remote.log" template="tpl_remote") #接收的日志统一存储在/var/log/remote.log	\手动创建文件
  #type="omfwd":类型转发、将接收的日志(tpl_remote模板)转发到target=主机、port=端口、protocol=协议
  action(type="omfwd" target="127.0.0.1" port="10052" protocol="tcp" template="tpl_remote") #转发到三区A网接收程序

  stop	#相当于&~:表示到这里就停不往下执行了,在老版本语法里写为“&~”
}

#开启端口监听
# udp 514
module(load="imudp") # needs to be done just once
input(type="imudp" port="514" ruleset="remote" )

# tcp 514
module(load="imtcp" MaxSessions="1000" )
input(type="imtcp" port="514" ruleset="remote" )

# relp 2514				#需要安装组件
module(load="imrelp")
input(type="imrelp" port="2514" ruleset="remote")

方案二:

接收指定ip过来的日志
这个日志模板再本机监听514和2514端口的报文、将接收的信息以json格式保存在/var/log/remote/%FROMHOST-IP%/%YEAR%-%MONTH%-%DAY%/%HOUR%-%MINUTE%.log

#日志类型模板  
#数据格式化:template(自定义路径/文件名也是这个)
#type类型有:list,subtree,string,plugin四种、list最常用,string也可以
#string="%jsonmesg%	 -->接收的日志转为json格式(系统自带)
template(name="tpl_remote" type="string"
string="%jsonmesg%\n"	
)

#定义日志路径模板:日志文件保存的路径名、注意 $ 不能少
$template DIRPATH, "/var/log/remote/%$FROMHOST-IP%/%$YEAR%-%$MONTH%-%$DAY%/%$HOUR%-%$MINUTE%.log"

#template前不能有注释
$template RSYSLOG, "/var/log/rsyslog/%$FROMHOST-IP%/%$YEAR%-%$MONTH%-%$DAY%/%$HOUR%-%$MINUTE%.log"


# 定义规则集
ruleset(name="remote") {
    # 只接收来自特定IP地址的日志
    if ($fromhost-ip == '192.168.1.10') then {
        # 接下来的动作只针对匹配的日志
        action(
        type="omfile"
        FileOwner="eapp"    #改变日志文件权限属主 
        FileGroup="eapp"    #改变日志文件权限属组
        FileCreateMode="0644" # 创建文件时的权限
        DirCreateMode="0755"  # 创建目录时的权限
        dynaFile="DIRPATH"	#日志文件路径、使用名为DIRPATH 的模板template 
        template="tpl_remote"
    	)
        # 如果需要,可以在这里添加其他动作,比如转发日志等
        # ...
    }
    # 如果不匹配,停止处理并丢弃或保存到其它目录
    else {
      action(
           type="omfile"
           FileOwner="eapp"    #改变日志文件权限属主 
           FileGroup="eapp"    #改变日志文件权限属组
           FileCreateMode="0644" # 创建文件时的权限
           DirCreateMode="0755"  # 创建目录时的权限
           dynaFile="RSYSLOG"	#日志文件路径、使用名为DIRPATH 的模板template 
           template="tpl_remote"
     )
}
    
    stop
}

#开启端口监听
# udp 514
module(load="imudp") # needs to be done just once
input(type="imudp" port="514" ruleset="remote" )

# tcp 514
module(load="imtcp" MaxSessions="1000" )
input(type="imtcp" port="514" ruleset="remote" )

# relp 2514				#需要安装组件
module(load="imrelp")
input(type="imrelp" port="2514" ruleset="remote")

方案三:

接收全部

template(name="tpl_remote" type="string"
string="%jsonmesg%\n"
)

#日志文件保存的路径名、注意 $ 不能少
$template DIRPATH, "/var/log/remote/%$FROMHOST-IP%/%$YEAR%-%$MONTH%-%$DAY%/%$HOUR%-%$MINUTE%.log"

# 日志规则设置、规则名(模板名):remote
ruleset(name="remote"){
    # action动作:数据处理 -->type定义了处理数据所使用的模块 omfile模块
    # 使用dynaFile特性来按分钟和日期切割日志文件
    action(
        type="omfile"
        FileOwner="eapp"    #改变日志文件权限属主 
        FileGroup="eapp"    #改变日志文件权限属组
        FileCreateMode="0644" # 创建文件时的权限
        DirCreateMode="0755"  # 创建目录时的权限
        dynaFile="DIRPATH"	#日志文件路径、使用名为DIRPATH 的模板template 
        template="tpl_remote"
    )

    # type="omfwd":类型转发、将接收的日志(tpl_remote模板)转发到target=主机、port=端口、protocol=协议
    #action(type="omfwd" target="127.0.0.1" port="10052" protocol="tcp" template="tpl_remote") # 转发到三区A网接收程序

    stop # 相当于&~:代表抛弃数据不进行下一步处理,在老版本语法里写为“&~”
}

标签:remote,template,自定义,json,Rsyslog,日志,type,模板,string
From: https://www.cnblogs.com/littlecc/p/18298599

相关文章

  • rsyslog配置(服务端、客户端)-UDP-TCP转发-imfile自定义应用程序的日志推送
    ##概念#Syslog服务器可以用作一个网络中的日志监控中心,所有能够通过网络来发送日志的设施(包含了Linux或Windows服务器,路由器,交换机以及其他主机)都可以把日志发送给它。通过设置一个syslog服务器,可以将不同设施/主机发送的日志,过滤和合并到一个独立的位置,这样使得你更容易地查......
  • rsyslog配置(服务端、客户端)-relp协议转发
    rpm下载:https://centos.pkgs.org/7/centos-x86_64/RELP转发方式场景:日志服务器接收user.notice输出级别的日志,当然可以配置成任何其他级别。在日志服务器我们做了配置:user.notice/var/log/remote-operation.log。在client端,我们通过logger命令发送日志,其默认输出级别就是use......
  • 【日常记录-Java】自定义进程池
    Author:赵志乾Date:2024-07-12Declaration:AllRightReserved!!!1.简介    服务器上有些进程需要池化管理,使用SpringBoot构建Web服务提供管理api,内部使用自定义的进程池维护已启动的进程;    核心点: 进程池管理的进程都会使用系统的一个端口对外提供服务; ......
  • 演示:【Avalonia-Controls】Avalonia皮肤,主题,自定义控件,数据库,系统模块资源库
    一、目的:分享一个Avalonia皮肤,主题,自定义控件,数据库,系统模块资源库开源地址:GitHub-HeBianGu/Avalonia-Controls:Avalonia控件库Nuget包地址:NuGetGallery|PackagesmatchingHeBianGu.AvaloniaUI.演示视频地址:【Avalonia-Controls】Avalonia工具组件皮肤库v1.0.0_......
  • 最新AI一站式系统源码-ChatGPT商业版系统源码,支持自定义AI智能体应用、AI绘画、AI视频
     一、前言人工智能语言模型和AI绘画在多个领域都有广泛的应用.....SparkAi创作系统是一款基于ChatGPT和Midjourney开发的智能问答和绘画系统,提供一站式AIB/C端解决方案,涵盖AI大模型提问、AI绘画、AI视频、文档分析、图像识别和理解、TTS&语音识别、AI换脸等多项功能。......
  • Linux jq 命令讲解与实战操作(json字符串解析工具)
    Linuxjq命令讲解与实战操作(json字符串解析工具)大数据老司机2023-08-0914:23 一、概述jq 是一个强大的命令行工具,用于处理 JSON 格式的数据。它可以帮助你查询、过滤、修改和处理 JSON 数据,使得在命令行环境下处理 JSON 变得非常方便。GitHub地......
  • 多线程中自定义线程池与shiro导致的权限错乱问题解决
    importorg.apache.shiro.SecurityUtils;importorg.apache.shiro.subject.Subject;importorg.apache.shiro.util.ThreadContext;importjava.util.concurrent.*;publicclassShiroAwareThreadPoolExecutorextendsThreadPoolExecutor{publicShiroAwareThread......
  • 自定义PageHelper分页工具
    今天写了一个需要用到分页查询的需求大概是这样的有一张项目表和一张报警表如下:项目表:报警表:现在我就是要根据这个项目名称,报警类型和报警时间来查询报警列表.项目可以模糊查询,看似是很简单的一个需求,但是我遇到了一个问题我的大概思路就是先用项目名称去项目表......
  • java 生成mapbox-gl 可以直接使用的雪碧图,包含对应json,图片大小无限制自动适配
    1、文件路径配置sprite-path:/home/mapplate/sprite/2、实现类packagecom.shgis.service.impl;/***CreatedbyAdministratoron2021/10/9.*/importcom.alibaba.fastjson.JSONObject;importcom.shgis.config.FileProperties;importcom.shgis.entity.Ebuf......
  • PHP请求示例商品详情数据(属性规格sku详情图等)示例,json格式
    在PHP中请求商品详情数据(包括属性、规格、SKU详情、图片等)通常涉及向一个API发送HTTP请求,然后解析返回的JSON格式数据。以下是一个示例流程,包括如何发送请求和如何处理返回的JSON数据。1.发送HTTPGET请求首先,你需要知道API的URL,以及是否需要任何认证(如API密钥、OAuth令牌等......