diff options
author | Steffen Zieger <me@saz.sh> | 2014-02-10 11:09:05 +0100 |
---|---|---|
committer | Steffen Zieger <me@saz.sh> | 2014-02-10 11:09:05 +0100 |
commit | c4211ac0e076d1cd15b82d09d941295b71b61a68 (patch) | |
tree | 33d5dd39898a47567b1ac26a9c9da2a2f0a8438b | |
parent | aa064248b9646aa3e694478314105c44c7c40b76 (diff) | |
parent | 3707f44c19da275e14e99df0851ced9dce3f69d7 (diff) |
Merge pull request #52 from Aethylred/action_template
Specify the default logging format.
-rw-r--r-- | README.md | 245 | ||||
-rw-r--r-- | manifests/client.pp | 117 | ||||
-rw-r--r-- | templates/client.conf.erb | 13 |
3 files changed, 191 insertions, 184 deletions
@@ -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 |