On Feb 19, 2014, at 8:33 AM, David Lang <[email protected]> wrote: > On Wed, 19 Feb 2014, Chris Mann wrote: > >> On Feb 18, 2014, at 8:08 PM, David Lang <[email protected]> wrote: >> >>> On Tue, 18 Feb 2014, Chris Mann wrote: >>> >>>> Hello all, >>>> >>>> I’m trying to send a custom log file that our program generates to the >>>> remote rsyslog server, with little to no luck. Ideally, I’d like to have >>>> that log sent to it’s own file and not mixed in with the syslog traffic. >>>> >>>> We’re using Ubuntu 12.04LTS >>> >>> So, if you are using the default version of rsyslog, this is old enough >>> that it's unsupported by the community (but your issue is probably not >>> version dependant), what version is running? >> >> I’m running v7 stable from the adiscon apt-get repo. > > Ok, that helps > >>> >>>> Server rsyslog server config: >>>> >>>> $ModLoad imuxsock # provides support for local system logging >>>> $ModLoad imklog # provides kernel logging support (previously done by >>>> rklogd) >>>> $ModLoad immark # provides --MARK-- message capability >>>> >>>> # provides UDP syslog reception >>>> #$ModLoad imudp >>>> #$UDPServerRun 514 >>>> >>>> # provides TCP syslog reception >>>> $ModLoad imtcp >>>> $InputTCPServerRun 10514 >>> >>> why use an odd port like this instead of using the standard 514 port? >> >> Just preference and as Rainer said, 514 is used by something else :). >> >>> >>>> $template DynaFile,"/var/log/remote/%HOSTNAME%.log" >>>> *.* -?DynaFile >>> >>> ok, this logs everything into per hostname files, with no filtering ahead >>> of it. >>> >>>> ########################### >>>> #### GLOBAL DIRECTIVES #### >>>> ########################### >>>> >>>> # >>>> # Use traditional timestamp format. >>>> # To enable high precision timestamps, comment out the following line. >>>> # >>>> $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat >>>> >>>> # Filter duplicated messages >>>> $RepeatedMsgReduction on >>>> >>>> # >>>> # Set the default permissions for all log files. >>>> >>>> $FileOwner syslog >>>> $FileGroup adm >>>> $FileCreateMode 0640 >>>> $DirCreateMode 0755 >>>> $Umask 0022 >>>> $PrivDropToUser syslog >>>> $PrivDropToGroup adm >>>> >>>> # >>>> # Where to place spool files >>>> # >>>> $WorkDirectory /var/spool/rsyslog >>>> >>>> # >>>> # Include all config files in /etc/rsyslog.d/ >>>> # >>>> $IncludeConfig /etc/rsyslog.d/*.conf >>>> >>>> # This one is the template to generate the log filename dynamically, >>>> depending on the client's IP address. >>>> $template >>>> %RemoteHost,,"/var/log/remote/%HOSTNAME%/%$YEAR%/%$MONTH%/%$DAY%/syslog.log" >>> >>> this template is by hostname, not client IP, you would use %fromhost-ip% >>> instead of %hostname% if you want it by IP >>> >>> but it really doesn't matter since you don't have anything that uses this >>> template. I also think that you can't use % in a tempate name, and should >>> only have one , >>> >>> as a result, I'm pretty sure that you get errors about being unable to >>> parse the config file when you startup. >> >> Actually, I’m not getting any errors on start up. rsyslog starts up just >> fine. > > are you shure? double check that it's not logging anything about errors at > startup time. that line just doesn't look right. I also don't see any place > that you are trying to use this template.
Nothing in the log, honest: Feb 19 14:25:10 bundt rsyslogd: [origin software="rsyslogd" swVersion="7.4.10" x-pid="31532" x-info="http://www.rsyslog.com"] start Feb 19 14:25:10 bundt rsyslogd: rsyslogd's groupid changed to 4 Feb 19 14:25:10 bundt rsyslogd: rsyslogd's userid changed to 101 > >>> >>>> >>>> Client rsyslog config: >>>> >>>> # $ModLoad imfile >>>> $ModLoad imuxsock # provides support for local system logging >>>> $ModLoad imklog # provides kernel logging support (previously done by >>>> rklogd) >>>> # $ModLoad immark # provides --MARK-- message capability >>>> >>>> # Watch /var/log/ejabberd/ejabberd.log >>>> module(load="imfile" PollingInterval="10") >>>> input(type="imfile" >>>> File="/var/log/ejabberd/ejabberd.log" >>>> Tag="ejabberd:" >>>> StateFile="state-ejabberd" >>>> Severity="info" >>>> Facility="local6" >>>> ) >>>> >>>> # Provides UDP forwarding. The IP is the server's IP address >>>> # *.* @54.227.155.34:514 >>>> >>>> # Provides TCP forwarding. But the current server runs on UDP >>>> *.* @@devil.walkingservers.net:10514 >>>> >>>> # provides UDP syslog reception >>>> #$ModLoad imudp >>>> #$UDPServerRun 514 >>>> >>>> # provides TCP syslog reception >>>> #$ModLoad imtcp >>>> #$InputTCPServerRun 514 >>>> >>>> >>>> ########################### >>>> #### GLOBAL DIRECTIVES #### >>>> ########################### >>>> >>>> # >>>> # Use traditional timestamp format. >>>> # To enable high precision timestamps, comment out the following line. >>>> # >>>> $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat >>>> >>>> # Filter duplicated messages >>>> $RepeatedMsgReduction on >>>> >>>> # >>>> # Set the default permissions for all log files. >>>> # >>>> $FileOwner syslog >>>> $FileGroup adm >>>> $FileCreateMode 0640 >>>> $DirCreateMode 0755 >>>> $Umask 0022 >>>> $PrivDropToUser syslog >>>> $PrivDropToGroup adm >>>> >>>> # >>>> # Where to place spool files >>>> # >>>> $WorkDirectory /var/spool/rsyslog >>>> >>>> # >>>> $IncludeConfig /etc/rsyslog.d/*.conf >>>> >>>> >>>> Can someone kick me in the direction of where I’m screwing up? >>> >>> In general, you should put global directives before any output. I don't >>> know if that matters or not >>> >>> I don't know of there is anything being added by the include lines. >>> >>> >>> so, this sends logs from the client to the server, using the default format >>> (because you haven't specified anything), and the server then writes them >>> to /var/log/<hostname>.log files >>> >>> now, you do set the logs you read from the file to the facility local6, so >>> you could filter on that on the server if you want them written separately >>> >>> but, what is it that you think should be happening with this config? and >>> what is actually happening? >> >> Long story short, I’d like the ejabberd.log file to go to >> /var/log/remotes/$hostname/ejabberd.log as well as have the remote syslog >> file go to the same place on the rsyslog server. I’ll fully admit, I’m new >> to rsyslog. I’ve tried the docs, but there seems to be such a vast way of >> doing things like this between v5 and v7, I’m all turned around and not sure >> exactly what the right way is. > > Ok, in this case, the easy thing to do on the server is > > $template ejabberd,"/var/log/remotes/%hostname%/ejabberd.log > if $syslogtag == "ejabberd:" then ?ejabberd > > this creates the template for the filename, then when it sees anything with > the syslog tag of ejabberd: (what you set on the client), it writes it to > that log. This will also show up in any other logs that have rules that match > this. If you don't want these logs to show up anywhere else, you can do > > if $syslogtag == "ejabberd:" then { ?ejabberd > stop } > > or, in v5 compatible language > > if $syslogtag == "ejabberd:" then ?ejabberd > & ~ > I must be extra slow and dense. I added this into the rsyslog.conf file, under the module loading bit, and still nothing showing up. Now that I think about it for a bit, the ejabberd.log has long entries. By that I mean, the entries are not one liners, but more multi line paragraphs. Would that bork what I’m trying to do? > when looking at the docs, what you will typically see is that the v7 format > groups all the parameters together in one statement, while the older format > requires that you set a bunch of parameters before each action, and some > parameters only affect the next action while others have longer lasting > effects. This can get rather confusing in complex setups, which is why the v7 > format added the new way of describing complex stuff. > > side note: you probably don't really want RepeatedMsgReduction turned on. > what that does is that if a system logs the same message repeatedly, instead > of showing all the messages, you get a log entry "last message repeated 13 > times", but it can be hard to figure out what that last message was (rsyslog > has an option that puts the beginning of that log message after the "last > message text"). Also, all the tools that you would use for alerting will want > to see the actual messages, "last message repeated" just confuses them. > > we should probably add to the documentation to discourage use of that > parameter. _______________________________________________ rsyslog mailing list http://lists.adiscon.net/mailman/listinfo/rsyslog http://www.rsyslog.com/professional-services/ What's up with rsyslog? Follow https://twitter.com/rgerhards NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you DON'T LIKE THAT.

