LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Newbie (https://www.linuxquestions.org/questions/linux-newbie-8/)
-   -   Creating filters in rsyslog 5 (https://www.linuxquestions.org/questions/linux-newbie-8/creating-filters-in-rsyslog-5-a-4175446296/)

ahmedfai 01-19-2013 03:50 AM

Creating filters in rsyslog 5
 
Hi All,

I am new to this Forum as well as to Linux. I have very limited knowledge on Linux and I am planning to learn more.
I have a requirement to set up a central logging server with Linux and that is why I am here.

I have installed rsyslog (removed syslogd obviously) and it is now logging all the messages in to /var/log/messages. But I want to create filters. For example I have a lot of network devices like switches and routers and want to create filters based on the host names of these devices.

I did refer this: Migration King: Configure rsyslog on Red Hat Enterprise Linux 6 (RHEL6) for Cisco Switches

Below is my rsyslog.conf

# rsyslog v5 configuration file

# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# If you experience problems, see troubleshooting rsyslog rsyslog

#### MODULES ####

$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$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 514


#### GLOBAL DIRECTIVES ####

# Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

# File syncing capability is disabled by default. This feature is usually not required,
# not useful and an extreme performance hit
#$ActionFileEnableSync on

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

#### RULES ####

# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages

# The authpriv file has restricted access.
authpriv.* /var/log/secure

# Log all the mail messages in one place.
mail.* -/var/log/maillog

# Log cron stuff
cron.* /var/log/cron

# Everybody gets emergency messages
*.emerg :omusrmsg:*

# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler

# Save boot messages also to boot.log
local7.* /var/log/boot.log

# OOB ASA Logging
:fromhost-ip, isequal, "xx.xx.xx.xx" /var/log/Switch1
& ~

# ### begin forwarding rule ###
# The statement between the begin ... end define a SINGLE forwarding
# rule. They belong together, do NOT split them. If you create multiple
# forwarding rules, duplicate the whole block!
# Remote Logging (we use TCP for reliable delivery)
#
# An on-disk queue is created for this action. If the remote host is
# down, messages are spooled to disk and sent when it is up again.
#$WorkDirectory /var/lib/rsyslog # where to place spool files
#$ActionQueueFileName fwdRule1 # unique name prefix for spool files
#$ActionQueueMaxDiskSpace 1g # 1gb space limit (use as much as possible)
#$ActionQueueSaveOnShutdown on # save messages to disk on shutdown
#$ActionQueueType LinkedList # run asynchronously
#$ActionResumeRetryCount -1 # infinite retries if host is down
# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
#*.* @@remote-host:514
# ### end of the forwarding rule ###


I tried multiple combinations like

:msg,contains, "<Hostname>" /var/log/Switch1
& ~

if $msg contains '<Hostname>' then /var/log/Switch1
& ~

But it is not working for me at the moment.

I am using the following:
Red Hat Enterprise Linux Server release 5.5
rsyslog-5.10.0-2.el5.centos

I would really appreaciate if some one could assist me with this.

Thanks in advance
Ahmed

unSpawn 01-19-2013 08:29 AM

Quote:

Originally Posted by ahmedfai (Post 4873370)
I am new to this Forum as well as to Linux.

Welcome to LQ, hope you like it here.


Quote:

Originally Posted by ahmedfai (Post 4873370)
I have very limited knowledge on Linux and I am planning to learn more.

Don't "plan": just do it ;-p The best starting point is knowing where to find information: local manual, info and /usr/share/doc pages, the RHEL installation and administrator documentation, searching LQ and in the case of Rsyslogd: the Rsyslogd web site and knowledge base.


Quote:

Originally Posted by ahmedfai (Post 4873370)
I have installed rsyslog (..) I want to create filters. For example I have a lot of network devices like switches and routers and want to create filters based on the host names of these devices.

If you grep /usr/share/doc/rsyslog*/ recursively for "fromhost-ip" you'll find examples like "multi_ruleset.html".


Quote:

Originally Posted by ahmedfai (Post 4873370)
I am using the following:
Red Hat Enterprise Linux Server release 5.5
rsyslog-5.10.0-2.el5.centos

You're running a way out of date version. RHEL is at 5.9 now. Also note Rsyslogd has its own RPM repo and Rsyslogd version 7 runs OK on CentOS 5.x.


I'd change your filter logic a bit:
Code:

$ModLoad imuxsock
$ModLoad imklog
$ModLoad imudp
$UDPServerRun 514
#
# While it does give more assurance you're probably not running any clients that can syslog-over-TCP:
# $ModLoad imtcp
# $InputTCPServerRun 514
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
#
# Using include directories makes dropping configs in easy but be aware they might bite you
# when troubleshooting. So always list configs there too.
$IncludeConfig /etc/rsyslog.d/*.conf
#
# Lets add a template for the switch. Remember UNIX and Linux are case sensitive
$template log_switch,"/var/log/switch_%HOSTNAME%.log;TraditionalFileFormat"
#
# Enter our remote hosts rule set
$RuleSet remote
:fromhost-ip, isequal, "nnn.nnn.nnn.nnn" -?log_switch
& ~
#
# After discarding remote switch back to the default ruleset to process all local messages:
$RuleSet RSYSLOG_DefaultRuleset
#
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
authpriv.*                                              /var/log/secure
mail.*                                                  -/var/log/maillog
cron.*                                                  /var/log/cron
*.emerg                                                :omusrmsg:*
uucp,news.crit                                          /var/log/spooler
local7.*                                                /var/log/boot.log


Quote:

Originally Posted by ahmedfai (Post 4873370)
I tried multiple combinations (..) But it is not working for me at the moment.

"Not working" doesn't give us any clue what's wrong. Always check stdout, stderr and /var/log/messages for clues and read /usr/share/doc/rsyslog*/troubleshoot.html. Here's one way to check quickly what Rsyslogd is doing:
Code:

# Become root and source config, this fills the SYSLOGD_OPTIONS env var:
. /etc/sysconfig/rsyslog
# run Rsyslogd with the appropriate debug var and log stderr and stdout to file so you can read (and report) later:
/bin/env RSYSLOG_DEBUG="NoLogTimeStamp" /sbin/rsyslogd $SYSLOGD_OPTIONS -d -n -N10 2>&1 | tee /tmp/tee.txt



All times are GMT -5. The time now is 01:13 PM.