On Wed, 19 Feb 2014, Chris Mann wrote:
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
can you try running rsyslog directly from the command line
rsyslogd
(with it stopped service rsyslog stop) to make sure nothing shows up from
stderr?
that line just looks wrong, but as I say, I don't see anywhere that you're using
it, so that could be why it's not throwing errors.
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.
I would suggest putting it down at the end so that it's below the global
directives, not above them
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?
that will mess things up, put the test on the client as well. get it to write
things out to the file locally and then you know what to look for on the server.
each line in the file will be a different log entry (look at readmode for an
option to combine the multiple lines, but not all transports handle them
correctly)
Dvid Lang
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.
_______________________________________________
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.