文章目录

  • 前言
  • 搭建syslog服务器
  • 修改rsyslog配置
  • 自定义配置
  • 测试验证
    • Log4j2依赖
    • Log4j2配置
    • 测试接口
    • 验证
  • 日志转发
  • 参考资料

前言

本文将介绍如何搭建syslog服务器,并使用Apache Log4j2将日志数据输出到syslog服务器,同时验证syslog的转发功能。

搭建syslog服务器

在Linux系统中使用rsyslog服务进行日志服务器的搭建,通常在Linux系统中已经安装了该服务但未启动。

首先通过查看服务状态确认是否已经安装该服务,以及服务是否为运行状态。

root@westone:~# systemctl status rsyslog.service
● rsyslog.service - System Logging ServiceLoaded: loaded (/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)Active: active (running) since Tue 2023-01-10 01:39:29 UTC; 3 days ago
TriggeredBy: ● syslog.socketDocs: man:rsyslogd(8)man:rsyslog.conf(5)https://www.rsyslog.com/doc/Main PID: 921 (rsyslogd)Tasks: 10 (limit: 2196)Memory: 4.7MCPU: 401msCGroup: /system.slice/rsyslog.service└─921 /usr/sbin/rsyslogd -n -iNONE

修改rsyslog配置

syslog服务支持TCPUDP两种通讯协议,通过修改配置可以同时启用,服务的配置文件路径为/etc/rsyslog.conf,删除module和input前的注释。

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

重启服务使配置生效。

systemctl restart rsyslog.service

此时可以看到rsyslogd进程已经监听了514端口。

配置文件中默认配置了IncludeConfig目录,我们可以将自定义的配置放在/etc/rsyslog.d/目录下。

#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf

自定义配置

/etc/rsyslog.d目录下创建配置文件local0.conf,文件内容如下:

# 配置可以接收日志的网段
$AllowedSender TCP, 127.0.0.1, 192.168.137.0/24
$AllowedSender UDP, 127.0.0.1, 192.168.137.0/24# 配置日志模板
# remote-incoming-logs为自定义的日志模板名称
# 该配置表示将在`/var/log/rsyslog/`目录下按照主机名称,每天创建一个日志文件
$template remote-incoming-logs,"/var/log/rsyslog/%HOSTNAME%/%PROGRAMNAME%_%$YEAR%-%$MONTH%-%$DAY%.log"
# 过滤facility为local0的日志使用该模板
local0.* ?remote-incoming-logs# 配置远程转发
local0.*        @@192.168.137.100

完成自定义配置后,可以通过命令检查配置语法是否正确。

root@westone:/etc/rsyslog.d# rsyslogd /etc/rsyslog.d/local0.conf
usage: rsyslogd [options]
use "man rsyslogd" for details. To run rsyslog interactively, use "rsyslogd -n"
to run it in debug mode use "rsyslogd -dn"
For further information see https://www.rsyslog.com/doc/

修改配置的目标日志文件路径的用户和分组,否则在记录日志时将会出现没有权限的错误。

chown syslog:adm /var/log/rsyslog/

重启rsyslog服务使配置生效。

systemctl restart rsyslog.service

同时可以查看rsyslog服务启动时是否有错误。

journalctl -xfu rsyslog

测试验证

Log4j2依赖

基于Spring Boot开发时,需要在引入依赖时排除对默认的logback日志组件的依赖,并加入spring-boot-starter-log4j2的依赖。

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.7.5</version><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId><version>2.7.5</version>
</dependency>

Log4j2配置

log4j2.xml配置Syslog的appender,日志格式遵从RFC5424规范,并设置日志服务器的地址和端口,将facility设置为与上位

<?xml version="1.0" encoding="UTF-8" ?>
<configuration status="WARN"><appenders><Console name="CONSOLE" target="SYSTEM_OUT"><PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%thread] [%-30.30logger{30}] %msg%n"/></Console><Syslog name="SYSLOG" format="RFC5424" host="192.168.137.218" port="514" protocol="UDP" appName="test-app"facility="LOCAL0"/></appenders><loggers><root level="info"><appender-ref ref="SYSLOG"/><appender-ref ref="CONSOLE"/></root></loggers>
</configuration>

测试接口

编写一个简单的测试接口类,输出当前的系统时间,日志组件将会把内容输出到syslog服务器上。

@RestController
@Slf4j
public class HelloController {@GetMapping("/now")public String now() {String now = "Now: " + LocalDateTime.now();log.info(now);return now;}
}

验证

启动测试服务,调用测试接口,可以看到除了在控制台会输出信息,在日志服务器的/var/log/rsyslog/WST-20220825QHX目录下会生成当前日志的日志文件,其中WST-20220825QHX是测试服务所在机器的主机名。

root@westone:/var/log/rsyslog/WST-20220825QHX# ls
test-app_2023-01-13.log

日志内容与控制台输出的内容一致。

日志转发

由于我们在rsyslog配置文件中增加了转发的规则,该日志同时会以UDP协议转发到指定的服务器上,该服务器的rsyslog配置可参考上文的内容。

# 配置远程转发
local0.*        @@192.168.137.100

参考资料

  • Apache Log4j2 SyslogAppender
  • RSyslog Documentation

搭建syslog服务器+log4j2输出日志到syslog相关推荐

  1. golang日志服务器_golang 写日志到syslog

    应用程序可以通过 UNIX domain sockets, UDP or TCP,向syslog守护进程发送日志.syslog守护进程可以在远端. 这样,就可以不用单独收集应用程序的日志了. gola ...

  2. 用syslog服务器收集java日志

    初来公司时,java日志收集使用的nfs方式,将nfs server上的一块大容量磁盘挂载到所有java服务器的$catalina_home/logs目录,解决服务器本地空间不足问题: 这个方案的弊端 ...

  3. python syslog服务器_网络设备的Python Syslog服务器

    这将满足我的需要,但我似乎无法运行任何python版本的sysloghandler.我看大概5岁左右. 我正在运行Ubuntu16.04系统.一切似乎都在尝试:启动服务器.在#!/usr/bin/en ...

  4. 服务器信息管理 实例,配置信息输出到syslog服务器示例

    配置不同模块和级别的日志分别输出到不同的syslog服务器中,同时配置备份syslog服务器,实现对信息的备份. 组网需求 运行中的Device会产生大量的信息,而Device本身的存储空间相对有限, ...

  5. 在 Linux 上配置一个 syslog 服务器

    本文导航 -syslog标准基础11% -在Linux中配置Rsyslog33% -第1步: 初始化系统需求36% -第2步: 让rsyslog 后台进程生效39% -第3步:创建日志接收模板48% ...

  6. syslog与syslog服务器的配置

    1. 前言 syslog是UNIX系统中提供的一种日志记录方法(RFC3164),syslog本身是一个服务器,程序中凡是使用syslog记录的信息都会发送到该服务器,服务器根据配置决定此信息是否记录 ...

  7. 配置linux syslog服务器+配置syslog客户端

    参考文档: 1)https://linux.cn/article-5023-1.html:在 Linux 上配置一个 syslog 服务器 2)http://www.111cn.net/sys/Cen ...

  8. 将Windows日志转换为Syslog

    无论是Unix.Linux.FreeBSD.Ubuntu,还是路由器.交换机,都会产生大量的日志,而这些,一般会以syslog的形式存在.在RFC 3164中定义了syslog是一种日志协议,sysl ...

  9. 服务器导出连接日志文件,Windows文件共享日志审计功能及输出到syslog服务器

    开启文件共享日志审计 1.在文件共享的目录上右键->安全->高级->审核 2.添加,主体选择Authenticacted Users或者Everyone,勾选如下权限,然后确定 3. ...

最新文章

  1. leetcode 221. Maximal Square | 221. 最大正方形(优化的暴力解法+动态规划解法)
  2. Java字符类isUpperCase()方法与示例
  3. JVM(一)史上最佳入门指南
  4. abp执行mysql语句_在ABP模板工程中使用MySql
  5. 一起啃PRML - 1.2.1 Probability densities 概率密度
  6. Java新职篇:一维数组
  7. Java 集合系列09之 Map架构
  8. 无线射频识别的应用方案有哪些?
  9. Chrome插件开发(chrome-extension)
  10. 跟父母还是要保持一定的距离感
  11. 计算机无线网络怎么连接打印机共享打印机,电脑如何连接无线打印机?网络打印机连接方法!,又快又好...
  12. winhex可以编程c语言吗,如何用winhex解密加了密的mp4视频
  13. python shutil删除_python删除文件
  14. 虚拟机无法在更新服务器,今win10更新导致VMware workstation pro无法打开的解决方法...
  15. 数据结构:二叉树及堆排序
  16. vue请求进度条效果
  17. 苹果微信多开_苹果手机微信双开,微信多开有哪些可以推荐的?
  18. 【数据库数据恢复】linux操作系统下MYSQL数据库恢复案例
  19. Python中类函数中self是什么
  20. JSON数据构造及解析详解

热门文章

  1. 乌云安全所有资料(百度云打包)pdf
  2. 使用GPO禁用本地管理员帐户
  3. Python使用百度OCR接口进行验证码图像识别
  4. Windriver驱动开发工具使用快速入门
  5. 百度地图显示多点连线+数字标注
  6. 怎么安装VMware tools
  7. 微博抽奖贴为什么到时间了不开奖_按这6个步骤做抽奖,微博涨粉翻10倍都不止...
  8. going deeper with convolutions (Googlenet网络解读)
  9. emd分解详解一种自适应的数据处理或挖掘方法
  10. 商用计算机可信系统,可信计算机系统安全评价标准.ppt