Rsyslog远程传输的几种方式

el/2024/7/17 22:34:18

基本介绍

Rsyslog是一个syslogd的多线程增强版,rsyslog vs. syslog-ng 链接是rsyslog官方和syslog特性和性能上的一些对比,目前大部分Linux发行版本默认也是使用rsyslog记录日志。这里介绍rsyslog远程传输的几种方式,对远程日志传输可以有一个了解。

rsyslog提供三个远程日志传输方式:

  • UDP: 数据包传输可信度不高
  • TCP: 数据包传输可信度比较高
  • RELP: 数据包传输可信度最高,避免数据丢失,比较新的协议,目前应用较少

以下为man手册对RELP协议的一个介绍:

RELP can be used instead of UDP or plain TCP syslog to provide reliable delivery of syslog messages. Please note that plain TCP syslog does NOT provide truly reliable delivery, with it messages may be lost when there is a connection problem or the server shuts down. RELP prevents message loss in hose cases.

关于RELP的更进一步了解可以参考 Using TLS with RELP RELP Input Module RELP Output Module (omrelp)

相关配置

To forward messages to another host via UDP, prepend the hostname with the at sign (“@”). To forward it via plain tcp, prepend two at signs (“@@”). To forward via RELP, prepend the string “:omrelp:” in front of the hostname.

UDP传输

Server端配置

/etc/rsyslog.conf

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
$AllowedSender UDP, 192.168.80.0/24# This one is the template to generate the log filename dynamically, depending on the client's IP address. 
# 根据客户端的IP单独存放主机日志在不同目录,syslog需要手动创建             
$template Remote,"/var/log/syslog/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log"# Log all messages to the dynamically formed file.
:fromhost-ip, !isequal, "127.0.0.1" ?Remote
# 排除本地主机IP日志记录,只记录远程主机日志
# 注意此规则需要在其它规则之前,否则配置没有意义,远程主机的日志也会记录到Server的日志文件中
& ~ # 忽略之前所有的日志,远程主机日志记录完之后不再继续往下记录

或者把以上配置单独存放在/etc/rsyslog.d/中的xxx.conf配置文件中,尽量避免修改主配置文件,当然如果要独立文件主配置文件中必须含有以下配置

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

Client端配置

/etc/rsyslog.conf

*.*                     @192.168.80.130

以上配置完成之后/etc/init.d/rsyslog restart

TCP传输

TCP配置和UDP类似,如下

Server端配置

/etc/rsyslog.conf

# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
$AllowedSender TCP, 192.168.80.0/24# This one is the template to generate the log filename dynamically, depending on the client's IP address.          
$template Remote,"/var/log/syslog/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log"# Log all messages to the dynamically formed file.
:fromhost-ip, !isequal, "127.0.0.1" ?Remote
& ~

Client端配置

/etc/rsyslog.conf

*.*                     @@192.168.80.130

客户端和服务端重启相关服务即可

关于TCP和UDP的传输方式,rsyslog官方推荐使用TCP传输方式

In general, we suggest to use TCP syslog. It is way more reliable than UDP syslog and still pretty fast. The main reason is, that UDP might suffer of message loss. This happens when the syslog server must receive large bursts of messages. If the system buffer for UDP is full, all other messages will be dropped. With TCP, this will not happen. But sometimes it might be good to have a UDP server configured as well. That is, because some devices (like routers) are not able to send TCP syslog by design. In that case, you would need both syslog server types to have everything covered. If you need both syslog server types configured, please make sure they run on proper ports. By default UDP syslog is received on port 514. TCP syslog needs a different port because often the RPC service is using this port as well.

RELP传输

RELP需要安装rsyslog-relp相应模块

# yum install rsyslog-relp -y

Server端配置

/etc/rsyslog.conf

$ModLoad imrelp # 加载相应模块
$InputRELPServerRun 20514 # 监听端口# This one is the template to generate the log filename dynamically, depending on the client's IP address.          
$template Remote,"/var/log/syslog/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log"# Log all messages to the dynamically formed file.
:fromhost-ip, !isequal, "127.0.0.1" ?Remote

Client端配置

/etc/rsyslog.conf

$ActionQueueType LinkedList     # use asynchronous processing
$ActionQueueFileName srvrfwd    # set file name, also enables disk mode
$ActionResumeRetryCount -1      # infinite retries on insert failure
$ActionQueueSaveOnShutdown on   # save in-memory data if rsyslog shuts down
*.* :omrelp:192.168.80.130:20514

客户端和服务端重启相关服务即可

参考和拓展资料

  • Using TLS with RELP
  • RELP Input Module
  • RELP Output Module (omrelp)
  • Rsyslog remote logging using RELP
  • UDP Rsyslog
  • TCP Rsyslog

–EOF–


http://www.ngui.cc/el/5557116.html

相关文章

Linux strace 命令用法详解:跟踪系统调用和信号

原文地址: http://man.linuxde.net/strace

linux Selinux管理工具semanage

关联博文:http://blog.csdn.net/u011630575/article/details/52077563 Selinux极大的增强了Linux系统的安全性,能将用户权限关在笼子里,如httpd服务,apache默认只能访问/var/www目录,并只能监听80和443端口&#xff0…

rsyslog的relp转发及自定义端口号问题

rsyslog机制很强大,可以汇聚分散的日志到一台日志服务器上,方便查看和调试。安装起来非常简单: shell> cd /etc/yum.repos.d/ shell> wget http://rpms.adiscon.com/v8-stable/rsyslog.repo shell> yum install rsyslog centos6.5默…

MYSQL tee的功能测试

Mysql将结果保存到文件,从文件中执行sql语句记录操作过程(tee命令的使用) 1. 有时候我们可能需要记录用户对mysql的操作过程,这时我们可以使用mysql的tee命令 1)第一种情况是在链接数据库的时候使用tee >mysql -u…

shell处理mysql增、删、改、查

shell处理mysql增、删、改、查 参考博客第五种方法:http://blog.csdn.net/u011630575/article/details/50986835 引言 shell是如何操作mysql的? shell操作mysql其实就是通过mysql命令通过参数去执行语句,跟其他程序里面是一样的&#xff0c…

Shell脚本读取mysql结果集各数据项的值

在linux下用shell脚本读取mysql结果集各数据项的值,按行读取sql结果,将sql执行结果读取到shell变量中,然就可进行处理。 HOSTNAME"172.16.xx.xx" #数据库信息 PORT"3306" USERNAME"root" PASSWORD"roo…

simhash与重复信息识别(一)

随着信息爆炸时代的来临,互联网上充斥着着大量的近重复信息,有效地识别它们是一个很有意义的课题。例如,对于搜索引擎的爬虫系统来说,收录重复的网页是毫无意义的,只会造成存储和计算资源的浪费;同时&#…

simhash与重复信息识别(二)

Simhash 传统IR领域内文本相似度比较所采用的经典方法是文本相似度的向量夹角余弦,其主要思想是根据一个文章中出现词的词频构成一个向量,然后计算两篇文章对应向量的向量夹角。但由于有可能一个文章的特征向量词特别多导致整个向量维度很高,…

文本相识度算法(余弦相似性、简单共有词、编辑距离、SimHash、汉明距离、Jaccard相似性系数、欧几里得距离、曼哈顿距离 )

文本相似度计算在信息检索、数据挖掘、机器翻译、文档复制检测等领域有着广泛的应用。 比如舆论控制,我们假设你开发了一个微博网站,并且已经把世界上骂人的句子都已经收录进了数据库,那么当一个用户发微博时会先跟骂人句子的数据库进行比较&…

余弦方法计算相似度算法--Python实现 Java实现

(1)余弦相似性 通过测量两个向量之间的角的余弦值来度量它们之间的相似性。0度角的余弦值是1,而其他任何角度的余弦值都不大于1;并且其最小值是-1。从而两个向量之间的角度的余弦值确定两个向量是否大致指向相同的方向。所以,它…