I wanted to thank everyone that gave their input into this question. It helped 
out tremendously. 

So I'm still in the test phase of creating a central log server, but I think 
I've landed what my final setup is going to be. I'm going give a rundown of 
what that is and ask to see if I might have potential problems.

Rsyslog->Elasticsearch->Kibana

The rsyslog.conf is pretty much the default file that comes with CentOS 
repository with the exception of adding the following:

###################################

template(name="logstash-index"
  type="list") {
    constant(value="logstash-")
    property(name="timereported" dateFormat="rfc3339" position.from="1" 
position.to="4")
    constant(value=".")
    property(name="timereported" dateFormat="rfc3339" position.from="6" 
position.to="7")
    constant(value=".")
    property(name="timereported" dateFormat="rfc3339" position.from="9" 
position.to="10")
}

# this is for formatting our syslog in JSON with @timestamp
template(name="plain-syslog"
  type="list") {
    constant(value="{")
      constant(value="\"@timestamp\":\"")     property(name="timereported" 
dateFormat="rfc3339")
      constant(value="\",\"host\":\"")        property(name="hostname")
      constant(value="\",\"severity\":\"")    
property(name="syslogseverity-text")
      constant(value="\",\"facility\":\"")    
property(name="syslogfacility-text")
      constant(value="\",\"tag\":\"")   property(name="syslogtag" format="json")
      constant(value="\",\"message\":\"")    property(name="msg" format="json")
    constant(value="\"}")
}

# this is where we actually send the logs to Elasticsearch (localhost:9200 by 
default)
action(type="omelasticsearch"
    template="plain-syslog"
    searchIndex="logstash-index"
    dynSearchIndex="on")

$ModLoad imfile   # Load the imfile input module

# Watch /var/log/httpd/access_log
$InputFileName /var/log/httpd/access_log
$InputFileTag apache-access:
$InputFileStateFile state-apache-access
$InputRunFileMonitor

# Watch /var/log/httpd/error_log
$InputFileName /var/log/httpd/error_log
$InputFileTag apache-error:
$InputFileStateFile state-apache-error
$InputRunFileMonitor

# Watch /var/ossec/logs/alerts/alerts.log
$InputFileName /var/ossec/logs/alerts/alerts.log
$InputFileTag ossec-alert:
$InputFileStateFile state-ossec-alert
$InputRunFileMonitor


$template RemoteHost,"/var/log/remote/%HOSTNAME%/%$YEAR%/%$MONTH%-%$DAY%.log"

*.* ?RemoteHost


if $programname == 'snmpd' and ( $msg contains 'Connection from UDP' or $msg 
contains 'Received SNMP packet(s) from UDP' ) then ~

#############################################################

So basically I have rsyslog writing incoming logs to a file and then they are 
being sent for ES and kibana. Eventually I will have a logrotation done so that 
they can be rotated and compressed to save space. 

Thanks guys!


Josh



















-----Original Message-----
From: [email protected] 
[mailto:[email protected]] On Behalf Of David Lang
Sent: Friday, May 02, 2014 4:20 PM
To: rsyslog-users
Subject: Re: [rsyslog] Rsyslog w/ logstash-elasticsearch-kibana server

Ok, thanks things were wrapped oddly.

I don't see anything obvious here, I would suggest writing to a file with the 
format plain-syslog and to another file with the format logstash-index

It's very possible that something is going in there that's odd

David Lang

On Fri, 2 May 2014, Josh Bitto wrote:

> Date: Fri, 2 May 2014 15:03:20 -0700
> From: Josh Bitto <[email protected]>
> Reply-To: rsyslog-users <[email protected]>
> To: rsyslog-users <[email protected]>
> Subject: Re: [rsyslog] Rsyslog w/ logstash-elasticsearch-kibana server
> 
> I will repost the entire config.
>
> ######################################################################
> ####
>
>
> # rsyslog configuration file
> # note that most of this config file uses old-style format, # because 
> it is well-known AND quite suitable for simple cases # like we have 
> with the default config. For more advanced # things, RainerScript 
> configuration is suggested.
>
> # For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
> # If you experience problems, see 
> http://www.rsyslog.com/doc/troubleshoot.html
>
> #### MODULES ####
>
> module(load="imuxsock") # provides support for local system logging (e.g. via 
> logger command)
> module(load="imklog")   # provides kernel logging support (previously done by 
> rklogd)
> #module(load"immark")  # provides --MARK-- message capability
>
> # Provides UDP syslog reception
> # for parameters see http://www.rsyslog.com/doc/imudp.html
> module(load="imudp") # needs to be done just once input(type="imudp" 
> port="514")
>
> # Provides TCP syslog reception
> # for parameters see http://www.rsyslog.com/doc/imtcp.html
> #module(load="imtcp") # needs to be done just once #input(type="imtcp" 
> port="514")
>
> syslog.* /var/log/rsyslogd.log # per Rainers suggestion..note email
>
>
> #### 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
>
> module(load="impstats" interval="30" severity="7")
>
>
> #### 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
>
> template(name="logstash-index"
>  type="list") {
>    constant(value="logstash-")
>    property(name="timereported" dateFormat="rfc3339" position.from="1" 
> position.to="4")
>    constant(value=".")
>    property(name="timereported" dateFormat="rfc3339" position.from="6" 
> position.to="7")
>    constant(value=".")
>    property(name="timereported" dateFormat="rfc3339" position.from="9" 
> position.to="10") }
>
> # this is for formatting our syslog in JSON with @timestamp 
> template(name="plain-syslog"
>  type="list") {
>    constant(value="{")
>      constant(value="\"@timestamp\":\"")     property(name="timereported" 
> dateFormat="rfc3339")
>      constant(value="\",\"host\":\"")        property(name="hostname")
>      constant(value="\",\"severity\":\"")    
> property(name="syslogseverity-text")
>      constant(value="\",\"facility\":\"")    
> property(name="syslogfacility-text")
>      constant(value="\",\"tag\":\"")   property(name="syslogtag" 
> format="json")
>      constant(value="\",\"message\":\"")    property(name="msg" format="json")
>    constant(value="\"}")
> }
>
> # this is where we actually send the logs to Elasticsearch 
> (localhost:9200 by default) action(type="omelasticsearch"
>    template="plain-syslog"
>    searchIndex="logstash-index"
>    dynSearchIndex="on")
>
> $ModLoad imfile   # Load the imfile input module
>
> # Watch /var/log/httpd/access_log
> #$InputFileName /var/log/httpd/access_log #$InputFileTag 
> apache-access:
> #$InputFileStateFile state-apache-access #$InputRunFileMonitor
>
> # Watch /var/log/httpd/error_log
> #$InputFileName /var/log/httpd/error_log #$InputFileTag apache-error:
> #$InputFileStateFile state-apache-error #$InputRunFileMonitor
>
>
> # ### 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
> #*.* @@192.168.1.88:514
> # ### end of the forwarding rule ###
>
> ######################################################################
> ################### _______________________________________________
> 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.
_______________________________________________
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.

Reply via email to