加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
    • Part 01●  rsyslog介绍 ●
    • Part 02●  rsyslog转发 ●
    • Part 03●  rsyslog加密 ●
    • Part 04●  应用场景 ●
    • Part 05●  总结 ●
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

五分钟技术趣谈 | 浅谈rsyslog日志服务及应用

2023/12/15
3953
阅读需 16 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

作者:徐炜峰,单位:中国移动智慧家庭运营中心

在现代计算和网络环境中,日志管理变得至关重要,尤其是在企业日志管理、应用故障排除以及安全事件监控中。无论是在企业内部的服务器集群中,还是在公有云中的分布式应用系统中,分析日志数据对于监控、故障排除、性能优化和安全性都至关重要。而 rsyslog作为一个功能强大的开源工具,因其可靠性、灵活性和可扩展性而成为许多组织和开发人员的首选。

Part 01●  rsyslog介绍 

1.1 rsyslog日志服务简介

rsyslog (rocket-fast system for log)是基于syslog协议完成系统日志的处理转发,它是一个极速的日志处理系统,性能可以达到每秒百万级别。它提供高性能、极好的安全功能和模块化设计

特性:

①高性能:rsyslog采用了高效的线程模型和异步处理机制,能够快速而稳定地处理大量的日志数据。

②灵活强大:rsyslog支持多种输入和输出模块,可以与各种设备和系统集成,例如syslog、tcp、udp、tls等。同时,rsyslog还支持多种过滤和处理规则,可以根据需求定制化日志的存储、转发和处理方式。

③可扩展性:rsyslog具有良好的可扩展性,可以根据需求进行定制开发和插件扩展,满足不同场景下的日志管理需求。

④安全性:rsyslog支持加密传输和认证机制,保证日志数据的安全性和完整性。

图1 rsyslog架构图

如图1所示,rsyslog的消息流是从输入模块->预处理模块->主队列->过滤模块- >执行队列->输出模块。

1.2 rsyslog基本配置

rsyslog引入了facility(设施)的概念,也就是 rsyslog服务进程所要接收日志的各代理,这些代理负责收集对应的日志信息;常用的日志设施有如下几种:

auth , authpriv , cron , daemon , kern , lpr , mail , news , syslog , user, ftp , uucp , security, local0 ~ local7 ;另外系统日志还有priority优先级概念,可用的优先级包含 debug (7) , info (6) , notice (5) , warning (4) , err (3) , crit (2) , alert (1) , emerg (0) ,如图2所示:

图2 rsyslog的设施/优先级图

基于设施/优先级的过滤器是最常用的方法,语法如下:FACILITY.PRIORITY,如图3所示,为rsyslog的默认规则。

图3 rsyslog默认rules图

基础格式,即最简单的配置格式,没有任何多余的功能,配置中默认的内容即为此格式。

# 邮件的所有信息存在/var/log/maillog;这里有一个“-”符号表示是使用异步的方式记录mail.*                                   -/var/log/maillog# 邮件的错误信息转发到server.example.com,使用tcp连接(@@)mail.error                                @@server.example.com

高级格式,支持更多模块,更多参数,更多选项,并且允许对日志格式,内容等进行自定义修改的格式。

# 邮件的所有信息存在/var/log/maillog;这里有一个“-”符号表示是使用异步的方式记录mail.* action(type="omfile" File="/var/log/maillog")# 邮件的错误信息转发到server.example.com,使用tcp连接(@@)mail.error  action(type="omfwd" Target="server.example.com" Port="10514" Protocol="tcp")

rsyslog.conf中还包括用于指定日志的输入、输出、过滤、格式化等操作,以下是rsyslog.conf配置文件的详解:

1.2.1 输入模块配置

rsyslog.conf文件中的输入模块用于指定从哪些源获取日志信息,包括本地日志、远程日志、系统日志等。常用的输入模块包括:

imuxsock: 用于从Unix域套接字读取本地日志信息。

imudp: 用于从UDP协议接收远程日志信息。

imtcp: 用于从TCP协议接收远程日志信息。

imiournal: 用于从systemd-iournald服务读取系统日志信息。

1.2.2 过滤模块配置

rsyslog.conf文件中的过滤模块用于根据规则过滤日志信息,只保留符合条件的日志信息。常用的过滤模块包括:

if: 用于根据条件过滤日志信息。

regex: 用于根据正则表达式过滤日志信息。

property: 用于根据属性过滤日志信息。

1.2.3 输出模块配置

rsyslog.conf文件中的输出模块用于指定将日志信息输出到哪些目标,包括文件、数据库、网络等。常用的输出模块包括:

omfile: 用于将日志信息输出到文件。

ommysgl: 用于将日志信息输出到MySQL数据库。

omelasticsearch: 用于将日志信息输出到Elasticsearch搜索引警。

omfwd: 用于将日志信息转发到远程rsyslog服务器。

1.2.4 格式化模块配置

rsyslg.conf文件中的格式化模块用于指定日志信息的格式,包括时间、主机名、进程名、日志级别等。常用的格式化模块包括:

template: 用于定义日志信息的格式模板。

property: 用于指定日志信息中的属性,如时间、主机名、进程名等。

msg: 用于指定日志信息的内容。

Part 02●  rsyslog转发 

2.1 客户端配置

对于客户端,我们需要在rsyslog的配置文件中进行一些设置。首先,我们需要指定要发送的目标主机和端口号。这可以通过设置*.* @@<目标主机>:<端口号>来实现,如下所示。

*.* @@192.168.75.137:514             # tcp 协议*.* @192.168.75.137:514               # udp 协议

接着,我们可以设置一些过滤条件,以便只将某些特定类型的日志消息发送到目标系统。这可以通过设置类似于if $msg contains '<关键词>' then @@<目标主机>:<端口号>的语句来实现。最后,我们还可以设置一些其他的参数,如发送协议、超时时间等等。

2.2 服务端配置

对于服务端,我们需要配置rsyslog服务器来接收和处理转发过来的日志消息。首先,我们需要设置rsyslog服务器监听的端口号,接着,我们需要在配置文件中指定处理转发过来的日志消息的方式,如将其志消息保存到本地文件中、存储到数据库中、发送到其他系统等等。这可以通过在配置文件中设置类似于*.* /var/log/file的语句来实现。

# provides UDP syslog reception$ModLoad imudp$UDPServerRun 514# provides TCP syslog reception#$ModLoad imtcp#$InputTCPServerRun 514$AllowedSender tcp, 192.168.34.100/24$template RemoteLogs,"/var/log/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log"*.*  ?RemoteLogs

可以通过$AllowedSender控制只允许192.168.34.0网段内的主机以 tcp 协议来传输。

$template Remote定义了模板,保存的路径和文件名均可自定义,同时也区分了不同主机的日志。

$InputTCPServerRun 514开启tcp,tcp和udp可以共存的。

Part 03●  rsyslog加密 

除了转发日志消息,rsyslog还提供了加密传输日志消息的功能。当我们需要在公共网络上传输敏感信息时,如个人身份信息、密码等等,加密传输就变得尤为重要。rsyslog提供了基于TLS/SSL协议的加密传输功能,可以保证日志消息在传输过程中的机密性和完整性。如图4所示,非加密方式与加密方式客户端服务端的对比:

图4 非加密方式与加密方式客户端服务端对比

下面我来介绍下如何加密:

步骤1:安装gnutls-utils

yum install gnutls-utils

步骤2:生成证书和密钥

certtool --generate-privkey --outfile ca-key.pem --bits 2048certtool --generate-self-signed --load-privkey ca-key.pem --outfile ca.pem --template ca.cfg

步骤3:生成&分发各机器需要的证书

certtool --generate-privkey --outfile key.pem --sec-param 2048certtool --generate-request --load-privkey key.pem --outfile request.pemcerttool --generate-certificate --load-request request.pem --outfile cert.pem --load-ca-certificate ca.pem --load-ca-privkey ca-key.pem

步骤4:配置rsyslog

$ DefaultNetstreamDriver gtls#证书文件 $DefaultNetstreamDriverCAFile="/etc/rsyslog.d/gnutls/ca.pem"$DefaultNetstreamDriverCertFile="/etc/rsyslog.d/gnutls/server-cert.pem"$DefaultNetstreamDriverKeyFile="/etc/rsyslog.d/gnutls/server-key.pem"

步骤5:重启rsyslog服务

service rsyslog restart

Part 04●  应用场景 

应用场景1:对多台服务器日志进行汇聚,通过Kafka+ELK(Elasticsearch、Logstash和Kibana)的形式对日志进行过滤、存储、分析、提供复杂的搜索和可视化功能,如图1所示:

图5 应用场景1

应用场景2:对多台服务器日志进行汇聚存储后,经过LogCheck对日志文件的监控和审查,检查和过滤系统日志文件中的特定事件或错误,通过mail或其他形式进行反馈;同时经过LogAnalyzer对体制进行分析和可视化各种日志数据。并提供实时搜索、过滤、报表和图表等功能,展示给用户。如图2所示:

图6 应用场景2

Part 05●  总结 

rsyslog是一种功能强大的日志管理工具,具有可靠性、灵活性和可扩展性。无论是企业日志管理、应用故障排除还是安全事件监控,rsyslog都能提供强大的日志收集、过滤、处理和存储功能。通过使用 rsyslog,可以更高效地管理日志数据,提高系统可用性、性能和安全性。

参考文献

[1] 配置Rsyslog使用TCP/TLS协议加密传输日志,2023年3月3日,https://www.hesc.info/archives/106【访问日期:2023年9月1日】.

[2] Linux原生日志系统Rsyslog详解,2022年10月25日,http://e.betheme.net/zz/239280.html?action=onClick【访问日期:2023年9月1日】.

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
KSZ9031MNXIC-TR 1 Microchip Technology Inc DATACOM, ETHERNET TRANSCEIVER, QCC64

ECAD模型

下载ECAD模型
$4.17 查看
KSZ8041TLI-S 1 Microchip Technology Inc DATACOM, ETHERNET TRANSCEIVER, PQFP48
$3.03 查看
KSZ8873MLLI 1 Microchip Technology Inc DATACOM, LAN SWITCHING CIRCUIT, PQFP64
$6.1 查看
中国移动

中国移动

中国移动有限公司(「本公司」,包括子公司合称为「本集团」)于1997年9月3日在香港成立,本集团在中国内地所有三十一个省、自治区、直辖市以及香港特别行政区提供通信和信息服务,业务主要涵盖个人、家庭、政企和新兴市场的语音、数据、宽带、专线、IDC、云计算、物联网等,是中国内地最大的通信和信息服务供应商,亦是全球网络和客户规模最大、盈利能力领先、市值排名位居前列的世界级通信和信息运营商。

中国移动有限公司(「本公司」,包括子公司合称为「本集团」)于1997年9月3日在香港成立,本集团在中国内地所有三十一个省、自治区、直辖市以及香港特别行政区提供通信和信息服务,业务主要涵盖个人、家庭、政企和新兴市场的语音、数据、宽带、专线、IDC、云计算、物联网等,是中国内地最大的通信和信息服务供应商,亦是全球网络和客户规模最大、盈利能力领先、市值排名位居前列的世界级通信和信息运营商。收起

查看更多

相关推荐

电子产业图谱

移动Labs是中国移动的社交化新媒体平台,是面向外部行业及产业链合作伙伴的信息发布、业务发展和产业推进门户。