我有一个非常繁忙的日志文件(我们称之为/var/log/service.log ),这也是经常search故障排除的原因。 输出到它几乎连续和24/7。 它可能每天约1-2 GB,但我们需要所有这一切。 由于大日志文件的fgrep实际上很慢,因此需要经常轮换。 我把logrotate设置为在/etc/cron.hourly运行, hourly指令和大小限制为512M左右。 这是按预期工作:文件从/var/log/service.log旋转到/var/log/service.log-20150810或你有什么。 问题是,重命名只是inode /目录条目的一个整体变化,所以rsyslogd继续写入/var/log/service.log-20150810一段时间,而新创build的/var/log/service.log坐着空着。 在某些时候, rsyslogd决定开始写新的,但我不清楚它的韵律或理由。 无论如何,我需要的是“踢” rsyslogd告诉它开始写入一个新的,原始的/var/log/service.log跟随日志的旋转。 发送它SIGHUP似乎没有办法。 任何不涉及可能会失去大量日志条目(即重新启动rsyslogd )的想法,将不胜感激! (注意:我知道logrotate命名scheme会导致/var/log/service.log.1以及其他情况,所以,我有点困惑地看到/var/log/service.log-20150810 。 rsyslogd是否rsyslogd内部进行自己的轮换?是否会对此产生不利影响?) 提前谢谢了!
我正在尝试集中日志收集的不同位置上安装多个Yealink SIP电话。 我在rsyslog的主要位置build立了一个CentOS服务器。 我将UDP 514的所有stream量转发到此服务器。 没有办法指定一个唯一的标识符与Yealink电话中的日志一起发送。 (我已经向制造商发送了function请求)。 我想这可能是我唯一的select。 也没有办法指定从手机发送的端口syslog。 目前,我的日志是通过IP地址分隔的,因此每个WAN IP的文件夹都会被创build,并且来自该远程IP的所有日志都将被转储到该文件夹中的单个文件中。 这意味着如果我在一个位置有5个电话,他们的所有日志都将放入一个文件中。 我怎样才能让他们分离到该文件夹中的每个设备的个人日志? 这是我目前的指令: $template FILENAME,"/var/log/%fromhost-ip%/syslog.log" 这是我的规则: *.* ?FILENAME
这已经在其他职位已经解决,但我仍然无法得到这个工作正常。 我正在尝试OMIT(放弃)写入我的“ /var/log/secure ”的某些条目。 也就是说,任何包含某些可信IP地址的行,在本例中为“ IP = 10.10.10.10 ”。 根据我的理解,使用像这样的REGEXexpression式应该可以做到这一点,但是我认为我在文件中存在一个放置问题: if $syslogfacility-text == 'authpriv' and $msg !contains '10.10.10.10' then /var/log/secure &~ 以下是我在/etc/rsyslog.conf文件中尝试过的内容: #rsyslog v3configuration文件 # if you experience problems, check # http://www.rsyslog.com/troubleshoot for assistance #### MODULES #### $ModLoad imuxsock.so # provides support for local system logging (eg via logger command) $ModLoad imklog.so # provides kernel […]
我很困惑,为什么我不能让rsysloglogging通过TCP发送给它的数据,只要我用Python脚本发送数据,但是如果我通过netcat发送相同的string Rsyslog设置为接收TCP / 514上的系统日志数据:/etc/rsyslog.conf $ModLoad imtcp $InputTCPServerRun 514 /etc/rsyslog.d/LogByIP.conf $template LogByIP,"/tmp/%fromhost-ip%.log" if ($fromhost-ip != '127.0.0.1') then ?LogByIP 重新启动rsyslog。 从客户端机器执行此命令: [root@localhost ~]# echo HELLO2 |nc logbox 514 /tmp/.log的内容 Nov 18 15:36:16 HELLO2 所以rsyslog正在按预期工作。 现在,当我尝试在Python中做同样的事情时,消息永远不会写入文件。 #! /usr/bin/python import socket host='logbox' port=514 message='hello world' s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect((host,port)) s.sendall(message) s.close() 在logbox上运行tcpdump,我可以看到会话设置,传输的string和会话在TCP中closures,但是“hello world”永远不会显示在日志文件中。 我在这里错过了什么?
我试图使用这样的.rb文件来parsing日志: version=2 rule=:%Server:char-to:\t%\t%stamp:char-to:\t%\t%ip:ipv4%\t%Site:char-to:\t%\t%BID:char-to:\t%\t%SID:char-to:\t%\t%LD:char-to:\t%\t%UserID:char-to:\t%\t%logged:char-to:\t%\t%event:char-to:\t%\t%User_Agent:char-to:\t%\t%Parameters:rest% 问题是这样的string只是工作“字符”任何其他像“string”或“rest”不想工作。 我把“char-to”的大部分内容都弄清楚了,但是仍然需要从一个angular度把所有的东西都放到最后。 我该怎么做?
这似乎是暴发户决定closuresUbuntu 14.04 rsyslog作为第一个作业之一,如果一台机器closures。 所以大部分closures作业的日志都丢失了。 如何指示upstartclosuresrsyslog作为Ubuntu 14.04的最后一份工作?
在我的Ubuntu 14.04服务器上,我使用Postfix作为前端邮件服务器,并且我想将所有与邮件相关的信息( 包括电子邮件地址 )发送到远程主机。 在文件/etc/rsyslog.d/50-default.conf中我添加了这一行: *.* @192.168.1.21 所有syslog和smtpd相关的消息都发送到远程主机,但是,我错过了postfix / smtp事务的实际电子邮件地址。 有没有特殊的Postfix或Rsyslogconfiguration选项来实现这一目标?
最近我修补了我的系统,安装的rsyslog版本从8.10改为8.17。 不知何故,这个更新打破了我所有的模板 我的自定义属性不再被识别(例如Mark,Flag,Windowsize等)。 这里是一个例子: template(name="FWToJSON-TCP" type="list") { constant(value="{") constant(value="\"TimeStamp\":\"") property(name="timereported" dateFormat="rfc3339") constant(value="\",") constant(value="\"Mark\":\"") property(name="$!Mark" format="json") constant(value="\",") constant(value="\"UrgentFlag\":\"") property(name="!UrgentFlag" format="json") constant(value="\",") constant(value="\"Flag\":\"") property(name="$!Flag" format="json") constant(value="\",") constant(value="\"WindowSize\":\"") property(name="$!WindowSize" format="json") constant(value="\",") constant(value="\"AckNumber\":\"") property(name="$!AckNumber" format="json") constant(value="\",") constant(value="\"SequenceNumber\":\"") property(name="$!SequenceNumber" format="json") constant(value="\",") constant(value="\"DestinationPort\":\"") property(name="$!DestinationPort" format="json") constant(value="\",") constant(value="\"SourcePort\":\"") property(name="$!SourcePort" format="json") constant(value="\",") constant(value="\"Protocol\":\"") property(name="$!Protocol" format="json") constant(value="\",") constant(value="\"FragmentFlag\":\"") property(name="$!FragmentFlag" format="json") constant(value="\",") constant(value="\"ID\":\"") property(name="$!ID" format="json") […]
我试图通过rsyslog发送我的apache日志到mongodb 我的rsyslog.conf如下所示: module(load="imuxsock") module(load="imklog") module(load="imfile") module(load="ommongodb") input(type="imfile" File="/var/log/apache2/access.log" Tag="Apache Access" mode="polling" PollingInterval=2 Ruleset="mongo" ) ruleset(name="mongo"){ action(type="ommongodb" server="192.168.1.133" db="logs" collection="tester" ) } $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat $RepeatedMsgReduction on $FileOwner syslog $FileGroup adm $FileCreateMode 0640 $DirCreateMode 0755 $Umask 0022 $PrivDropToUser syslog $PrivDropToGroup syslog $WorkDirectory /var/spool/rsyslog $IncludeConfig /etc/rsyslog.d/*.conf 目前正在对mongodb数据库进行连接,但是没有任何内容正在写入集合中。 我错过了什么明显的?
TL; DR – 使用rsyslog发送特定日志(到redis服务器):如何select要发送的日志? 我想转发到一个redis服务器的一组( 只有那组 )日志,例如说nginx日志在/var/log/nginx/*.log 。 为此,我正在考虑使用rsyslog 工具 (本例中为local7)。 但是: 我只能处理local7.*日志到redis服务器:我收到系统的所有日志(auth,authpriv,cron,local7等等) 我无法处理一个目录的所有日志(例如:/ /var/log/nginx/*.log log/nginx/*.log将无法正常工作,但/var/log/nginx/some-access.log将通过rsyslog发送到我的redis服务器。得到一个目录的所有日志呢?) configuration有三个模块在使用,并以这种方式将local7的日志发送到我的redis服务器: local7.* @redis_ip:port $ModLoad imuxsock # provides support for local system logging $ModLoad omhiredis # support for sending to Redis $ModLoad imfile # For tailing files 另外两个代码块是两种不同的configurationrsyslog的方法。 configuration1(通用configuration的人build议): $InputFileName /var/log/nginx/*.log $InputFileTag nginx $InputFileFacility local7 $InputRunFileMonitor configuration2(不同的语法 – 我发现rsyslog文档的版本8.16.0): input( […]