From 3707f44c19da275e14e99df0851ced9dce3f69d7 Mon Sep 17 00:00:00 2001 From: Aaron Hicks Date: Wed, 5 Feb 2014 09:47:49 +1300 Subject: new parameter rsyslog::client parameter, actionfiletemplate, which sets the default logging format for remote and local logging. --- README.md | 245 +++++++++++++++++++++++----------------------- manifests/client.pp | 117 +++++++++++----------- templates/client.conf.erb | 13 ++- 3 files changed, 191 insertions(+), 184 deletions(-) diff --git a/README.md b/README.md index b9c2468..9bcf6e8 100644 --- a/README.md +++ b/README.md @@ -1,122 +1,123 @@ -# puppet-rsyslog [![Build Status](https://secure.travis-ci.org/saz/puppet-rsyslog.png)](https://travis-ci.org/saz/puppet-rsyslog) - -Manage rsyslog client and server via Puppet - -## REQUIREMENTS - -* Puppet >=2.6 if using parameterized classes -* Currently supports Ubuntu >=11.04 & Debian running rsyslog >=4.5 - -## USAGE - -### Client - -#### Using default values -``` - class { 'rsyslog::client': } -``` - -#### Variables and default values -``` - class { 'rsyslog::client': - log_remote => true, - remote_type => 'tcp', - log_local => false, - log_auth_local => false, - custom_config => undef, - server => 'log', - port => '514', - preserve_fqdn => undef, - } -``` -for read from file -``` - rsyslog::imfile { 'my-imfile': - file_name => '/some/file', - file_tag => 'mytag', - file_facility => 'myfacility', - } - -``` - -#### Logging to a MySQL or PostgreSQL database - -Events can also be logged to a MySQL or PostgreSQL database. The database needs to be deployed separately, either locally or remotely. Schema are available from the `rsyslog` source: - - * [MySQL schema](http://git.adiscon.com/?p=rsyslog.git;a=blob_plain;f=plugins/ommysql/createDB.sql) - * [PostgreSQL schema](http://git.adiscon.com/?p=rsyslog.git;a=blob_plain;f=plugins/ompgsql/createDB.sql) - -Declare the following to configure the connection: -```` - class { 'rsyslog::database': - backend => 'mysql', - server => 'localhost', - database => 'Syslog', - username => 'rsyslog', - password => 'secret', - } -```` -### Server - -#### Using default values -``` - class { 'rsyslog::server': } -``` - -#### Variables and default values -``` - class { 'rsyslog::server': - enable_tcp => true, - enable_udp => true, - enable_onefile => false, - server_dir => '/srv/log/', - custom_config => undef, - high_precision_timestamps => false, - } -``` - -Both can be installed at the same time. - -## PARAMETERS - -The following lists all the class parameters this module accepts. - - RSYSLOG::SERVER CLASS PARAMETERS VALUES DESCRIPTION - ------------------------------------------------------------------- - enable_tcp true,false Enable TCP listener. Defaults to true. - enable_udp true,false Enable UDP listener. Defaults to true. - enable_onefile true,false Only one logfile per remote host. Defaults to false. - server_dir STRING Folder where logs will be stored on the server. Defaults to '/srv/log/' - custom_config STRING Specify your own template to use for server config. Defaults to undef. Example usage: custom_config => 'rsyslog/my_config.erb' - high_precision_timestamps true,false Whether or not to use high precision timestamps. - preserve_fqdn true,false Whether or not to preserve the fully qualified domain name when logging. - - RSYSLOG::CLIENT CLASS PARAMETERS VALUES DESCRIPTION - ------------------------------------------------------------------- - log_remote true,false Log Remotely. Defaults to true. - remote_type 'tcp','udp' Which protocol to use when logging remotely. Defaults to 'tcp'. - log_local true,false Log locally. Defaults to false. - log_auth_local true,false Just log auth facility locally. Defaults to false. - custom_config STRING Specify your own template to use for client config. Defaults to undef. Example usage: custom_config => 'rsyslog/my_config.erb - server STRING Rsyslog server to log to. Will be used in the client configuration file. - - RSYSLOG::DATABASE CLASS PARAMETERS VALUES DESCRIPTION - ------------------------------------------------------------------- - backend 'mysql','pgsql' Database backend (MySQL or PostgreSQL). - server STRING Database server. - database STRING Database name. - username STRING Database username. - password STRING Database password. - -### Other notes - -Due to a missing feature in current RELP versions (InputRELPServerBindRuleset option), -remote logging is using TCP. You can switch between TCP and UDP. As soon as there is -a new RELP version which supports setting Rulesets, I will add support for relp back. - -By default, rsyslog::server will strip numbers from hostnames. This means the logs of -multiple servers with the same non-numerical name will be aggregrated in a single -directory. i.e. www01 www02 and www02 would all log to the www directory. - -To log each host to a seperate directory, set the custom_config parameter to -'rsyslog/server-hostname.conf.erb' +# puppet-rsyslog [![Build Status](https://secure.travis-ci.org/saz/puppet-rsyslog.png)](https://travis-ci.org/saz/puppet-rsyslog) + +Manage rsyslog client and server via Puppet + +## REQUIREMENTS + +* Puppet >=2.6 if using parameterized classes +* Currently supports Ubuntu >=11.04 & Debian running rsyslog >=4.5 + +## USAGE + +### Client + +#### Using default values +``` + class { 'rsyslog::client': } +``` + +#### Variables and default values +``` + class { 'rsyslog::client': + log_remote => true, + remote_type => 'tcp', + log_local => false, + log_auth_local => false, + custom_config => undef, + server => 'log', + port => '514', + preserve_fqdn => undef, + } +``` +for read from file +``` + rsyslog::imfile { 'my-imfile': + file_name => '/some/file', + file_tag => 'mytag', + file_facility => 'myfacility', + } + +``` + +#### Logging to a MySQL or PostgreSQL database + +Events can also be logged to a MySQL or PostgreSQL database. The database needs to be deployed separately, either locally or remotely. Schema are available from the `rsyslog` source: + + * [MySQL schema](http://git.adiscon.com/?p=rsyslog.git;a=blob_plain;f=plugins/ommysql/createDB.sql) + * [PostgreSQL schema](http://git.adiscon.com/?p=rsyslog.git;a=blob_plain;f=plugins/ompgsql/createDB.sql) + +Declare the following to configure the connection: +```` + class { 'rsyslog::database': + backend => 'mysql', + server => 'localhost', + database => 'Syslog', + username => 'rsyslog', + password => 'secret', + } +```` +### Server + +#### Using default values +``` + class { 'rsyslog::server': } +``` + +#### Variables and default values +``` + class { 'rsyslog::server': + enable_tcp => true, + enable_udp => true, + enable_onefile => false, + server_dir => '/srv/log/', + custom_config => undef, + high_precision_timestamps => false, + } +``` + +Both can be installed at the same time. + +## PARAMETERS + +The following lists all the class parameters this module accepts. + + RSYSLOG::SERVER CLASS PARAMETERS VALUES DESCRIPTION + ------------------------------------------------------------------- + enable_tcp true,false Enable TCP listener. Defaults to true. + enable_udp true,false Enable UDP listener. Defaults to true. + enable_onefile true,false Only one logfile per remote host. Defaults to false. + server_dir STRING Folder where logs will be stored on the server. Defaults to '/srv/log/' + custom_config STRING Specify your own template to use for server config. Defaults to undef. Example usage: custom_config => 'rsyslog/my_config.erb' + high_precision_timestamps true,false Whether or not to use high precision timestamps. + preserve_fqdn true,false Whether or not to preserve the fully qualified domain name when logging. + actionfiletemplate STRING If set this defines the `ActionFileDefaultTemplate` which sets the default logging format for remote and local logging.. + + RSYSLOG::CLIENT CLASS PARAMETERS VALUES DESCRIPTION + ------------------------------------------------------------------- + log_remote true,false Log Remotely. Defaults to true. + remote_type 'tcp','udp' Which protocol to use when logging remotely. Defaults to 'tcp'. + log_local true,false Log locally. Defaults to false. + log_auth_local true,false Just log auth facility locally. Defaults to false. + custom_config STRING Specify your own template to use for client config. Defaults to undef. Example usage: custom_config => 'rsyslog/my_config.erb + server STRING Rsyslog server to log to. Will be used in the client configuration file. + + RSYSLOG::DATABASE CLASS PARAMETERS VALUES DESCRIPTION + ------------------------------------------------------------------- + backend 'mysql','pgsql' Database backend (MySQL or PostgreSQL). + server STRING Database server. + database STRING Database name. + username STRING Database username. + password STRING Database password. + +### Other notes + +Due to a missing feature in current RELP versions (InputRELPServerBindRuleset option), +remote logging is using TCP. You can switch between TCP and UDP. As soon as there is +a new RELP version which supports setting Rulesets, I will add support for relp back. + +By default, rsyslog::server will strip numbers from hostnames. This means the logs of +multiple servers with the same non-numerical name will be aggregrated in a single +directory. i.e. www01 www02 and www02 would all log to the www directory. + +To log each host to a seperate directory, set the custom_config parameter to +'rsyslog/server-hostname.conf.erb' diff --git a/manifests/client.pp b/manifests/client.pp index be8518d..4bf5403 100644 --- a/manifests/client.pp +++ b/manifests/client.pp @@ -1,58 +1,59 @@ -# == Class: rsyslog::client -# -# Full description of class role here. -# -# === Parameters -# -# [*sample_parameter*] -# [*log_remote*] -# [*spool_size*] -# [*remote_type*] -# [*log_local*] -# [*log_auth_local*] -# [*custom_config*] -# [*custom_params*] -# [*server*] -# [*port*] -# [*ssl_ca*] -# [*preserve_fqdn] -# -# === Variables -# -# === Examples -# -# class { 'rsyslog::client': } -# -class rsyslog::client ( - $log_remote = true, - $spool_size = '1g', - $remote_type = 'tcp', - $log_local = false, - $log_auth_local = false, - $custom_config = undef, - $custom_params = undef, - $server = 'log', - $port = '514', - $ssl_ca = undef, - $preserve_fqdn = undef -) inherits rsyslog { - - $content_real = $custom_config ? { - '' => template("${module_name}/client.conf.erb"), - default => template($custom_config), - } - - rsyslog::snippet {'client': - ensure => present, - content => $content_real, - } - - if $rsyslog::ssl and $ssl_ca == undef { - fail('You need to define $ssl_ca in order to use SSL.') - } - - if $rsyslog::ssl and $remote_type != 'tcp' { - fail('You need to enable tcp in order to use SSL.') - } - -} +# == Class: rsyslog::client +# +# Full description of class role here. +# +# === Parameters +# +# [*sample_parameter*] +# [*log_remote*] +# [*spool_size*] +# [*remote_type*] +# [*log_local*] +# [*log_auth_local*] +# [*custom_config*] +# [*custom_params*] +# [*server*] +# [*port*] +# [*ssl_ca*] +# [*actionfiletemplate*] +# +# === Variables +# +# === Examples +# +# class { 'rsyslog::client': } +# +class rsyslog::client ( + $log_remote = true, + $spool_size = '1g', + $remote_type = 'tcp', + $log_local = false, + $log_auth_local = false, + $custom_config = undef, + $custom_params = undef, + $server = 'log', + $port = '514', + $ssl_ca = undef, + $actionfiletemplate = undef, + $preserve_fqdn = undef +) inherits rsyslog { + + $content_real = $custom_config ? { + '' => template("${module_name}/client.conf.erb"), + default => template($custom_config), + } + + rsyslog::snippet {'client': + ensure => present, + content => $content_real, + } + + if $rsyslog::ssl and $ssl_ca == undef { + fail('You need to define $ssl_ca in order to use SSL.') + } + + if $rsyslog::ssl and $remote_type != 'tcp' { + fail('You need to enable tcp in order to use SSL.') + } + +} diff --git a/templates/client.conf.erb b/templates/client.conf.erb index 696b9b2..1990112 100644 --- a/templates/client.conf.erb +++ b/templates/client.conf.erb @@ -7,7 +7,14 @@ $ActionQueueMaxDiskSpace <%= scope.lookupvar('rsyslog::client::spool_size') -%> $ActionQueueSaveOnShutdown on # save messages to disk on shutdown $ActionQueueType LinkedList # run asynchronously $ActionResumeRetryCount -1 # infinety retries if host is down - +<% if scope.lookupvar('rsyslog::client::actionfiletemplate') -%> +# Using specified format for default logging fromat: +$ActionFileDefaultTemplate <%= scope.lookupvar('rsyslog::client::actionfiletemplate') %> +<% else -%> +#Using default format for default logging fromat: +$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat +<% end -%> +<% if scope.lookupvar('rsyslog::client::log_auth_local') or scope.lookupvar('rsyslog::client::log_local') -%> <% if scope.lookupvar('rsyslog::client::ssl') -%> # Setup SSL connection. # CA/Cert @@ -28,9 +35,7 @@ $ActionSendStreamDriverAuthMode anon <% end -%> <% end -%> -<% if scope.lookupvar('rsyslog::client::log_auth_local') or scope.lookupvar('rsyslog::client::log_local') -%> -# We log locally, restore to default format -$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat +# Logging locally. <% if scope.lookupvar('rsyslog::log_style') == 'debian' -%> # Log auth messages locally -- cgit v1.2.3