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

el/2024/7/17 16:22:40

rsyslog机制很强大,可以汇聚分散的日志到一台日志服务器上,方便查看和调试。安装起来非常简单:

shell> cd /etc/yum.repos.d/
shell> wget http://rpms.adiscon.com/v8-stable/rsyslog.repo
shell> yum install rsyslog

centos6.5默认还是rsyslog7.x的版本,这里给出的是安装官方最新的版本。

在此记录下rsyslog配置imrelp/omrelp时的诡异问题,期间走了不少弯路,给大家参考。关于rsyslog的中文文档大多大同小异,且很多都过时了,请大家注意下,最好还是直接看英文的,虽然很多,但是能省去很多麻烦。中文的就大概看看原理就好了。


但是,按照官方给出的omrelp的转发机制,配置后无法收到日志:


#  cat  /etc/redhat-release

  CentOS release 6.5 (Final)


在此版本,在这些repo下:

[root@publisher-14 rsyslog]# ll /etc/yum.repos.d/
总用量 52
-rw-r--r--. 1 root root  833 6月  16 17:23 atomic.repo
-rw-r--r--. 1 root root  833 6月  16 16:53 atomic.repo.rpmsave
-rw-r--r--. 1 root root 1926 12月  1 2013 CentOS-Base.repo
-rw-r--r--. 1 root root  638 12月  1 2013 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  630 12月  1 2013 CentOS-Media.repo
-rw-r--r--. 1 root root 4528 12月  1 2013 CentOS-Vault.repo
-rw-r--r--. 1 root root 4528 6月  16 16:53 CentOS-Vault.repo.rpmsave
-rw-r--r--. 1 root root  165 6月  16 16:53 haodf.repo
-rw-r--r--. 1 root root 1250 1月  23 06:03 puppetlabs.repo
-rw-r--r--. 1 root root  397 6月  16 16:53 puppet.repo
-rw-r--r--. 1 root root  227 6月  25 18:36 rsyslog.repo


yum upgrade(更新系统全部软件)后,发现rsyslog无法进行relp转发。


client上的/etc/rsyslog.conf:
[html]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. module(load="imuxsock") # provides support for local system logging (e.g. via logger command)  
  2. module(load="imklog")   # provides kernel logging support (previously done by rklogd)  
  3. $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat  
  4. $IncludeConfig /etc/rsyslog.d/*.conf  
  5.   
  6. *.info;mail.none;authpriv.none;cron.none                /var/log/messages  
  7. authpriv.*                                              /var/log/secure  
  8. mail.*                                                  /var/log/maillog  
  9. cron.*                                                  /var/log/cron  
  10. *.emerg                                                 :omusrmsg:*  
  11. uucp,news.crit                                          /var/log/spooler  
  12. local7.*                                                /var/log/boot.log  
  13.   
  14. $WorkDirectory /var/lib/rsyslog # where to place spool files  
  15. $ActionQueueFileName fwdRule1 # unique name prefix for spool files  
  16. $ActionQueueMaxDiskSpace 1g   # 1gb space limit (use as much as possible)  
  17. $ActionQueueSaveOnShutdown on # save messages to disk on shutdown  
  18. $ActionQueueType LinkedList   # run asynchronously  
  19. $ActionResumeRetryCount -1    # infinite retries if host is down  
  20.   
  21. $ModLoad omrelp  
  22. local1.*   :omrelp:192.168.1.104:40888  
server上的/etc/rsyslog.conf:
[html]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. module(load="imuxsock") # provides support for local system logging (e.g. via logger command)  
  2. module(load="imklog")   # provides kernel logging support (previously done by rklogd)  
  3.   
  4. module(load="imrelp")  
  5. input(type="imrelp" port=“40888")  
  6.   
  7. $umask 0000  
  8. $DirCreateMode 0750  
  9. $FileCreateMode 0750  
  10.   
  11. $template MySelf, "%fromhost-ip% %$now% %timereported:12:23:date-rfc3339% %pri-text% %msg%\n"  
  12. $template DynaFile, "/home/avatar/logs/remote/%syslogtag:F,58:1%/%$YEAR%-%$MONTH%-%$DAY%.log"  
  13.   
  14. $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat  
  15.   
  16. $IncludeConfig /etc/rsyslog.d/*.conf  
  17.   
  18. local1.*  -?DynaFile;MySelf  
  19.   
  20. *.info;mail.none;authpriv.none;cron.none                /var/log/messages  
  21. authpriv.*                                              /var/log/secure  
  22. mail.*                                                  /var/log/maillog  
  23. cron.*                                                  /var/log/cron  
  24. *.emerg                                                 :omusrmsg:*  
  25. uucp,news.crit                                          /var/log/spooler  
  26. local7.*                                                /var/log/boot.log  

分别重启后,测试:#   logger -p local1.info -t t/a “a3”
server端没有任何反应。

尝试监听client端口: #tcpdump -i eth1(网卡名)  port 40888  , 查看client机,没有40888的转发;

其中eth1是网卡的名字,如何查看网卡的名字如下所示:

 vim   /etc/sysconfig/network-scripts/ifcfg-eno 将里面的NAME项就是网卡的名字


期间在google被墙的恶劣环境下,走各种代理,查资料,走了各种弯路,看了前人讨论的各种maillist,被一句话提醒:strafe is very helpful in finding the problem.


#  ps -ef | grep rsyslog

strace居然给忘了,直接来:strace -tt   -fp RSYSLOG的进程号 -o strace.log,结果中类似于:

connect(6, {sa_family=AF_INET, sin_port=htons(XXXX), sin_addr=inet_addr(“192.168.X.X")}, 16) = -1 EACCES (Permission denied)

说明端口转发失败了。

顺着 EACCES (Permission denied)继续查: http://help.papertrailapp.com/kb/configuration/troubleshooting-remote-syslog-reachability

  • 安装:yum install policycoreutils-python;
  • semanage port --list 列出了当前允许的所有端口及协议,grep 40888,当然没有了;
  • semanage port -a -t syslogd_port_t -p tcp 40888 (允许使用40888端口号)
  • semanage port —list | grep 40888,可以看到syslogd_port_t tcp 40888 已经有了;
  • /sbin/service rsyslog restart
  • logger -p local1.info -t t/a “a3”  #就可以成功了。
关联博客:http://blog.csdn.net/u011630575/article/details/52068959


另外关于rsyslog的安全问题,可以参考:http://wiki.rsyslog.com/index.php/Security

简单原理介绍:http://huoding.com/2014/05/09/347

参考级别:http://wiki.gentoo.org/wiki/Rsyslog




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

相关文章

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。从而两个向量之间的角度的余弦值确定两个向量是否大致指向相同的方向。所以,它…

Python与shell交互os.system、 os.popen、 subprocess

这篇文章主要介绍了Python与shell的3种交互方式介绍,本文讲解了 os.system、 os.popen、 subprocess 模块等3种方法,需要的朋友可以参考下。 问题概述 考虑这样一个问题,有hello.py脚本,输出”hello, world!”;有TestInput.py脚本&#…

浏览器页面的缓存设置(不缓存设置)

HTML的HTTP协议头信息中控制着页面在几个地方的缓存信息,包括浏览器端,中间缓存服务器端(如:squid等),Web服务器端。本文讨论头信息 中带缓存控制信息的HTML页面(JSP/Servlet生成好出来的也是HTML页面)在中间缓存服务器中的缓存情…

信号、信号量、进程的状态的区别你知道吗?

信号量(Semaphore),有时被称为信号灯,是在多环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。 在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线…