From 1f13960afb43e6775be712894b4155445306170a Mon Sep 17 00:00:00 2001 From: Xinyu Zhao <zhaoxinyu@huawei.com> Date: Fri, 11 Apr 2014 04:10:41 +0000 Subject: [PATCH] Add rsyslog cookbook and sync openstack logs Modified the client recipe to sync openstack related logs if a test indicator is enabled. Change-Id: Ia41c28ccecb4ef298221494e6444d4909d917c56 --- chef/cookbooks/rsyslog/README.md | 177 ++++++++++++++++++ chef/cookbooks/rsyslog/attributes/default.rb | 50 +++++ .../rsyslog/files/default/rsyslog.default | 9 + .../files/ubuntu-10.04/rsyslog.default | 9 + .../rsyslog/files/ubuntu-9.10/rsyslog.default | 9 + chef/cookbooks/rsyslog/metadata.rb | 39 ++++ chef/cookbooks/rsyslog/recipes/client.rb | 35 ++++ chef/cookbooks/rsyslog/recipes/default.rb | 73 ++++++++ .../templates/default/openstack.conf.erb | 12 ++ .../rsyslog/templates/default/remote.conf.erb | 6 + .../templates/default/rsyslog.conf.erb | 115 ++++++++++++ .../rsyslog/templates/default/server.conf.erb | 58 ++++++ .../templates/ubuntu/50-default.conf.erb | 69 +++++++ chef/roles/test-synclog.rb | 5 + 14 files changed, 666 insertions(+) create mode 100644 chef/cookbooks/rsyslog/README.md create mode 100644 chef/cookbooks/rsyslog/attributes/default.rb create mode 100644 chef/cookbooks/rsyslog/files/default/rsyslog.default create mode 100644 chef/cookbooks/rsyslog/files/ubuntu-10.04/rsyslog.default create mode 100644 chef/cookbooks/rsyslog/files/ubuntu-9.10/rsyslog.default create mode 100644 chef/cookbooks/rsyslog/metadata.rb create mode 100644 chef/cookbooks/rsyslog/recipes/client.rb create mode 100644 chef/cookbooks/rsyslog/recipes/default.rb create mode 100644 chef/cookbooks/rsyslog/templates/default/openstack.conf.erb create mode 100644 chef/cookbooks/rsyslog/templates/default/remote.conf.erb create mode 100644 chef/cookbooks/rsyslog/templates/default/rsyslog.conf.erb create mode 100644 chef/cookbooks/rsyslog/templates/default/server.conf.erb create mode 100644 chef/cookbooks/rsyslog/templates/ubuntu/50-default.conf.erb create mode 100644 chef/roles/test-synclog.rb diff --git a/chef/cookbooks/rsyslog/README.md b/chef/cookbooks/rsyslog/README.md new file mode 100644 index 0000000..3006b87 --- /dev/null +++ b/chef/cookbooks/rsyslog/README.md @@ -0,0 +1,177 @@ +Description +=========== + +Installs rsyslog to replace sysklogd for client and/or server use. By default, server will be set up to log to files. + +Changes +======= + +## v1.0.0: + +* [COOK-836] - use an attribute to specify the role to search for + instead of relying on the rsyslog['server'] attribute. +* Clean up attribute usage to use strings instead of symbols. +* Update this README. +* Better handling for chef-solo. + +Requirements +============ + +Platform +-------- + +Tested on Ubuntu 8.04, 9.10, 10.04. + +For Ubuntu 8.04, the rsyslog package will be installed from a PPA via the default.rb recipe in order to get 4.2.0 backported from 10.04. + +* https://launchpad.net/~a.bono/+archive/rsyslog + +Ubuntu 8.10 and 9.04 are no longer supported releases and have not been tested with this cookbook. + +Cookbooks +--------- + +* cron (http://community.opscode.com/cookbooks/cron) + +Other +----- + +To use the `recipe[rsyslog::client]` recipe, you'll need to set up a +role to search for. See the __Recipes__, and __Examples__ sections below. + +Attributes +========== + +See `attributes/default.rb` for default values. + +* `node['rsyslog']['log_dir']` - If the node is an rsyslog server, + this specifies the directory where the logs should be stored. +* `node['rsyslog']['server']` - Used to indicate whether the node + running Chef is an rsyslog server. As of cookbook v1.0.0, this is + determined automatically through search. The server recipe will set + this to true. It is otherwise unused in the current version. +* `node['rsyslog']['protocol']` - Specify whether to use `udp` or + `tcp` for remote loghost. +* `node['rsyslog']['port']` - Specify the port which rsyslog should + connect to a remote loghost. +* `node['rsyslog']['server_role']` - Role applied to a remote + loghost. Used by `recipe[rsyslog::client]` to search for the + loghost. + +Recipes +======= + +default +------- + +Installs the rsyslog package, manages the rsyslog service and sets up +basic configuration for a standalone machine. + +client +------ + +Includes `recipe[rsyslog]`. + +Uses Chef search to find a remote loghost node with the role specified +by `node['rsyslog']['server_role']` and uses its `ipaddress` attribute +to send log messages. If the node itself has the `server_role` in the +expanded roles, then the configuration is skipped. If the node had an +`/etc/rsyslog.d/server.conf` file previously configured, this file +gets removed to prevent duplicate logging. Any previous logs are not +cleaned up from the `log_dir`. + +server +------ + +Configures the node to be an rsyslog loghost. The node should have the +role specified by `node['rsyslog']['server_role']` applied so client +nodes can find it with search. This recipe will create the logs in +`node['rsyslog']['log_dir']`, and the configuration is in +`/etc/rsyslog.d/server.conf`. This recipe also removes any previous +configuration to a remote server by removing the +`/etc/rsyslog.d/remote.conf` file. Finally, a cron job is set up to +compress logs in the `log_dir` that are older than one day. + +The server configuration will set up `log_dir` for each client, by +date. Directory structure: + + <%= @log_dir %>/YEAR/MONTH/DAY/HOSTNAME/"logfile" + +For example: + + /srv/rsyslog/2011/11/19/www/messages + +At this time, the server can only listen on UDP *or* TCP. + +Usage +===== + +Use `recipe[rsyslog]` to install and start rsyslog as a basic +configured service for standalone systems. + +Use `recipe[rsyslog::client]` to have nodes search for the loghost +automatically to configure remote [r]syslog. + +Use `recipe[rsyslog::server]` to set up a loghost. It will listen on +`node['rsyslog']['port']` protocol `node['rsyslog']['protocol']`. + +If you set up a different kind of centralized loghost (syslog-ng, +graylog2, logstash, etc), you can still send log messages to it as +long as the port and protocol match up with the server +software. See __Examples__ + +Examples +-------- + +A `base` role (e.g., roles/base.rb), applied to all nodes so they are syslog clients: + + name "base" + description "Base role applied to all nodes + run_list("recipe[rsyslog::client]") + +Then, a role for the loghost (should only be one): + + name "loghost" + description "Central syslog server" + run_list("recipe[rsyslog::server]") + +By default this will set up the clients search for a node with the +`loghost` role to talk to the server on TCP port 514. Change the +`protocol` and `port` rsyslog attributes to modify this. + +If you're using another log server software on your loghost, such as +graylog2, you can use the role for that loghost for the search +instead. For example, if the role of your graylog2 server is +`graylog2_server`, then modify the base role for the server role: + + name "base" + description "Base role applied to all nodes + run_list("recipe[rsyslog::client]") + default_attributes( + "rsyslog" => { + "server_role" => "graylog2_server" + } + ) + +Then make sure you have a role named `graylog2_server` applied to some +node, and `recipe[rsyslog::client]` will configure the local system to +send logs to graylog2. + +License and Author +================== + +Author:: Joshua Timberman (<joshua@opscode.com>) + +Copyright:: 2009-2011, Opscode, Inc + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/chef/cookbooks/rsyslog/attributes/default.rb b/chef/cookbooks/rsyslog/attributes/default.rb new file mode 100644 index 0000000..f1e9b41 --- /dev/null +++ b/chef/cookbooks/rsyslog/attributes/default.rb @@ -0,0 +1,50 @@ +# +# Cookbook Name:: rsyslog +# Attributes:: rsyslog +# +# Copyright 2009, Opscode, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +default["rsyslog"]["log_dir"] = "/srv/rsyslog" +default["rsyslog"]["server"] = false +default["rsyslog"]["protocol"] = "tcp" +default["rsyslog"]["port"] = "514" +default["rsyslog"]["server_role"] = "loghost" + +default["rsyslog"]["openstacklog"] = {:"keystone"=>"/var/log/keystone/keystone.log", + :"glance-api"=>"/var/log/glance/api.log", + :"glance-reg"=>"/var/log/glance/registry.log", + :"nova-api"=>"/var/log/nova/api.log", + :"nova-cert"=>"/var/log/nova/cert.log", + :"nova-conductor"=>"/var/log/nova/conductor.log", + :"nova-consoleauth"=>"/var/log/nova/consoleauth.log", + :"nova-console"=>"/var/log/nova/console.log", + :"nova-manage"=>"/var/log/nova/nova-manange.log", + :"nova-compute"=>"/var/log/nova/compute.log", + :"nova-scheduler"=>"/var/log/nova/scheduler.log", + :"cinder-api"=>"/var/log/cinder/api.log", + :"cinder-scheduler"=>"/var/log/cinder/scheduler.log", + :"cinder-volume"=>"/var/log/cinder/volume.log", + :"quantum-server"=>"/var/log/quantum/server.log", + :"quantum-dhcp"=>"/var/log/quantum/dhcp-agent.log", + :"quantum-l3agent"=>"/var/log/quantum/l3-agent.log", + :"quantum-ovsagent"=>"/var/log/quantum/openvswitch-agent.log", + :"dashboard-access"=>"/var/log/httpd/openstack-dashboard-access.log", + :"dashboard-error"=>"/var/log/httpd/openstack-dashboard-error.log", + :"mysql"=>"/var/log/mysqld.log", + :"rabbitmq"=>"/var/log/rabbitmq/rabbit\@#{node['hostname']}.log", + :"ovs-vswitchd"=>"/var/log/openvswitch/ovs-vswitchd.log", + :"ovs-dbserver"=>"/var/log/openvswitch/ovs-dbserver.log", + :"libvirtd"=>"/var/log/libvirt/libvirtd.log"} diff --git a/chef/cookbooks/rsyslog/files/default/rsyslog.default b/chef/cookbooks/rsyslog/files/default/rsyslog.default new file mode 100644 index 0000000..87449b3 --- /dev/null +++ b/chef/cookbooks/rsyslog/files/default/rsyslog.default @@ -0,0 +1,9 @@ +# Generated by Chef +# +# Use v3 native mode, rather than compatibility mode by specifying -c3 +# here. Compatibility mode for older versions is not recommended as +# custom configuration may get messy. +# +# See rsyslogd(8) for more details + +RSYSLOGD_OPTIONS="-c3" diff --git a/chef/cookbooks/rsyslog/files/ubuntu-10.04/rsyslog.default b/chef/cookbooks/rsyslog/files/ubuntu-10.04/rsyslog.default new file mode 100644 index 0000000..2e4599f --- /dev/null +++ b/chef/cookbooks/rsyslog/files/ubuntu-10.04/rsyslog.default @@ -0,0 +1,9 @@ +# Generated by Chef +# +# Options for rsyslogd +# -m 0 disables 'MARK' messages (deprecated, only used in compat mode < 3) +# -r enables logging from remote machines (deprecated, only used in compat mode < 3) +# -x disables DNS lookups on messages received with -r +# -c compatibility mode +# See rsyslogd(8) for more details +RSYSLOGD_OPTIONS="-c4" diff --git a/chef/cookbooks/rsyslog/files/ubuntu-9.10/rsyslog.default b/chef/cookbooks/rsyslog/files/ubuntu-9.10/rsyslog.default new file mode 100644 index 0000000..2e4599f --- /dev/null +++ b/chef/cookbooks/rsyslog/files/ubuntu-9.10/rsyslog.default @@ -0,0 +1,9 @@ +# Generated by Chef +# +# Options for rsyslogd +# -m 0 disables 'MARK' messages (deprecated, only used in compat mode < 3) +# -r enables logging from remote machines (deprecated, only used in compat mode < 3) +# -x disables DNS lookups on messages received with -r +# -c compatibility mode +# See rsyslogd(8) for more details +RSYSLOGD_OPTIONS="-c4" diff --git a/chef/cookbooks/rsyslog/metadata.rb b/chef/cookbooks/rsyslog/metadata.rb new file mode 100644 index 0000000..9a1f1ea --- /dev/null +++ b/chef/cookbooks/rsyslog/metadata.rb @@ -0,0 +1,39 @@ +maintainer "Opscode, Inc." +maintainer_email "cookbooks@opscode.com" +license "Apache 2.0" +description "Installs and configures rsyslog" +long_description IO.read(File.join(File.dirname(__FILE__), 'README.md')) +version "1.0.0" + +recipe "rsyslog", "Installs rsyslog" +recipe "rsyslog::client", "Sets up a client to log to a remote rsyslog server" +recipe "rsyslog::server", "Sets up an rsyslog server" + +supports "ubuntu", ">= 8.04" +supports "debian", ">= 5.0" + + +attribute "rsyslog", + :display_name => "Rsyslog", + :description => "Hash of Rsyslog attributes", + :type => "hash" + +attribute "rsyslog/log_dir", + :display_name => "Rsyslog Log Directory", + :description => "Filesystem location of logs from clients", + :default => "/srv/rsyslog" + +attribute "rsyslog/server", + :display_name => "Rsyslog Server?", + :description => "Is this node an rsyslog server?", + :default => "false" + +attribute "rsyslog/protocol", + :display_name => "Rsyslog Protocol", + :description => "Set which network protocol to use for rsyslog", + :default => "tcp" + +attribute "rsyslog/port", + :display_name => "Rsyslog Port", + :description => "Port that Rsyslog listens for incoming connections", + :default => "514" diff --git a/chef/cookbooks/rsyslog/recipes/client.rb b/chef/cookbooks/rsyslog/recipes/client.rb new file mode 100644 index 0000000..85c4b86 --- /dev/null +++ b/chef/cookbooks/rsyslog/recipes/client.rb @@ -0,0 +1,35 @@ +# +# Cookbook Name:: rsyslog +# Recipe:: client +# +# Copyright 2009-2011, Opscode, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +include_recipe "rsyslog" + template "/etc/rsyslog.d/openstack.conf" do + source "openstack.conf.erb" + backup false + owner "root" + group "root" + mode 0644 + variables :loglist => node['rsyslog']['openstacklog'] + notifies :restart, "service[rsyslog]" + end + + file "/etc/rsyslog.d/server.conf" do + action :delete + notifies :reload, "service[rsyslog]" + only_if do ::File.exists?("/etc/rsyslog.d/server.conf") end + end diff --git a/chef/cookbooks/rsyslog/recipes/default.rb b/chef/cookbooks/rsyslog/recipes/default.rb new file mode 100644 index 0000000..b2a84fb --- /dev/null +++ b/chef/cookbooks/rsyslog/recipes/default.rb @@ -0,0 +1,73 @@ +# +# Cookbook Name:: rsyslog +# Recipe:: default +# +# Copyright 2009-2011, Opscode, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +if platform?("ubuntu") && node['platform_version'].to_f == 8.04 + apt_repository "hardy-rsyslog-ppa" do + uri "http://ppa.launchpad.net/a.bono/rsyslog/ubuntu" + distribution "hardy" + components ["main"] + keyserver "keyserver.ubuntu.com" + key "C0061A4A" + action :add + notifies :run, "execute[apt-get update]", :immediately + end +end + +package "rsyslog" do + action :install +end + +service "rsyslog" do + service_name "rsyslogd" if platform?("arch") + supports :restart => true, :reload => true + action [:enable, :start] +end + +if platform?("ubuntu") + cookbook_file "/etc/default/rsyslog" do + source "rsyslog.default" + owner "root" + group "root" + mode 0644 + end +end + +directory "/etc/rsyslog.d" do + owner "root" + group "root" + mode 0755 +end + +#template "/etc/rsyslog.conf" do +# source "rsyslog.conf.erb" +# owner "root" +# group "root" +# mode 0644 +# notifies :restart, "service[rsyslog]" +#end + +if platform?("ubuntu") + template "/etc/rsyslog.d/50-default.conf" do + source "50-default.conf.erb" + backup false + owner "root" + group "root" + mode 0644 + end +end diff --git a/chef/cookbooks/rsyslog/templates/default/openstack.conf.erb b/chef/cookbooks/rsyslog/templates/default/openstack.conf.erb new file mode 100644 index 0000000..f250ccc --- /dev/null +++ b/chef/cookbooks/rsyslog/templates/default/openstack.conf.erb @@ -0,0 +1,12 @@ +$Modload imfile +<% @loglist.each do |service, path| -%> + # <%= service %> + $InputFileName <%= path %> + $InputFileReadMode 0 + $InputFileTag <%= service %> + $InputFileSeverity notice + $InputFileFacility local4 + $InputFileStateFile + $InputRunFileMonitor + $InputFilePollInterval 1 +<% end -%> diff --git a/chef/cookbooks/rsyslog/templates/default/remote.conf.erb b/chef/cookbooks/rsyslog/templates/default/remote.conf.erb new file mode 100644 index 0000000..9218fae --- /dev/null +++ b/chef/cookbooks/rsyslog/templates/default/remote.conf.erb @@ -0,0 +1,6 @@ +<% case @protocol -%> +<% when "tcp" -%> +*.* @@<%= @server %>:<%= node['rsyslog']['port'] %> +<% when "udp" -%> +*.* @<%= @server %>:<%= node['rsyslog']['port'] %> +<% end -%> diff --git a/chef/cookbooks/rsyslog/templates/default/rsyslog.conf.erb b/chef/cookbooks/rsyslog/templates/default/rsyslog.conf.erb new file mode 100644 index 0000000..fe2d4f9 --- /dev/null +++ b/chef/cookbooks/rsyslog/templates/default/rsyslog.conf.erb @@ -0,0 +1,115 @@ +# /etc/rsyslog.conf Configuration file for rsyslog v3. +# +# For more information see +# /usr/share/doc/rsyslog-doc/html/rsyslog_conf.html + + +################# +#### MODULES #### +################# + +$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 <%= node['rsyslog']['port'] %> + +# provides TCP syslog reception +#$ModLoad imtcp +#$InputTCPServerRun <%= node['rsyslog']['port'] %> + + +########################### +#### GLOBAL DIRECTIVES #### +########################### + +# +# Use default timestamp format. +# To enable high precision timestamps, comment out the following line. +# +$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat + +# +# Set the default permissions for all log files. +# +$FileOwner root +$FileGroup adm +$FileCreateMode 0640 + +# +# Include all config files in /etc/rsyslog.d/ +# +$IncludeConfig /etc/rsyslog.d/*.conf + +<% unless node[:platform] == 'ubuntu' -%> +############### +#### RULES #### +############### + +# +# First some standard log files. Log by facility. +# +auth,authpriv.* /var/log/auth.log +*.*;auth,authpriv.none -/var/log/syslog +#cron.* /var/log/cron.log +daemon.* -/var/log/daemon.log +kern.* -/var/log/kern.log +lpr.* -/var/log/lpr.log +mail.* -/var/log/mail.log +user.* -/var/log/user.log + +# +# Logging for the mail system. Split it up so that +# it is easy to write scripts to parse these files. +# +mail.info -/var/log/mail.info +mail.warn -/var/log/mail.warn +mail.err /var/log/mail.err + +# +# Logging for INN news system. +# +news.crit /var/log/news/news.crit +news.err /var/log/news/news.err +news.notice -/var/log/news/news.notice + +# +# Some "catch-all" log files. +# +*.=debug;\ + auth,authpriv.none;\ + news.none;mail.none -/var/log/debug +*.=info;*.=notice;*.=warn;\ + auth,authpriv.none;\ + cron,daemon.none;\ + mail,news.none -/var/log/messages + +# +# Emergencies are sent to everybody logged in. +# +*.emerg * + +# +# I like to have messages displayed on the console, but only on a virtual +# console I usually leave idle. +# +#daemon,mail.*;\ +# news.=crit;news.=err;news.=notice;\ +# *.=debug;*.=info;\ +# *.=notice;*.=warn /dev/tty8 + +# The named pipe /dev/xconsole is for the `xconsole' utility. To use it, +# you must invoke `xconsole' with the `-file' option: +# +# $ xconsole -file /dev/xconsole [...] +# +# NOTE: adjust the list below, or you'll go crazy if you have a reasonably +# busy site.. +# +daemon.*;mail.*;\ + news.err;\ + *.=debug;*.=info;\ + *.=notice;*.=warn |/dev/xconsole +<% end -%> diff --git a/chef/cookbooks/rsyslog/templates/default/server.conf.erb b/chef/cookbooks/rsyslog/templates/default/server.conf.erb new file mode 100644 index 0000000..4a89ae1 --- /dev/null +++ b/chef/cookbooks/rsyslog/templates/default/server.conf.erb @@ -0,0 +1,58 @@ +# Generated by Chef. +# Local modifications will be overwritten. +<% case @protocol -%> +<% when "tcp" -%> +$ModLoad imtcp +$InputTCPServerRun <%= node['rsyslog']['port'] %> +<% when "udp" -%> +$ModLoad imudp +$UDPServerRun <%= node['rsyslog']['port'] %> +<% end -%> + +$DirGroup root +$DirCreateMode 0755 +$FileGroup root + +$template PerHostAuth,"<%= @log_dir %>/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/auth.log" +$template PerHostCron,"<%= @log_dir %>/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/cron.log" +$template PerHostSyslog,"<%= @log_dir %>/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/syslog" +$template PerHostDaemon,"<%= @log_dir %>/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/daemon.log" +$template PerHostKern,"<%= @log_dir %>/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/kern.log" +$template PerHostLpr,"<%= @log_dir %>/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/lpr.log" +$template PerHostUser,"<%= @log_dir %>/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/user.log" +$template PerHostMail,"<%= @log_dir %>/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/mail.log" +$template PerHostMailInfo,"<%= @log_dir %>/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/mail.info" +$template PerHostMailWarn,"<%= @log_dir %>/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/mail.warn" +$template PerHostMailErr,"<%= @log_dir %>/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/mail.err" +$template PerHostNewsCrit,"<%= @log_dir %>/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/news.crit" +$template PerHostNewsErr,"<%= @log_dir %>/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/news.err" +$template PerHostNewsNotice,"<%= @log_dir %>/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/news.notice" +$template PerHostDebug,"<%= @log_dir %>/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/debug" +$template PerHostMessages,"<%= @log_dir %>/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/messages" + +auth,authpriv.* ?PerHostAuth +*.*;auth,authpriv.none -?PerHostSyslog +cron.* ?PerHostCron +daemon.* -?PerHostDaemon +kern.* -?PerHostKern +lpr.* -?PerHostLpr +mail.* -?PerHostMail +user.* -?PerHostUser + +mail.info -?PerHostMailInfo +mail.warn ?PerHostMailWarn +mail.err ?PerHostMailErr + +news.crit ?PerHostNewsCrit +news.err ?PerHostNewsErr +news.notice -?PerHostNewsNotice + +*.=debug;\ + auth,authpriv.none;\ + news.none;mail.none -?PerHostDebug + +*.=info;*.=notice;*.=warn;\ + auth,authpriv.none;\ + cron,daemon.none;\ + mail,news.none -?PerHostMessages + diff --git a/chef/cookbooks/rsyslog/templates/ubuntu/50-default.conf.erb b/chef/cookbooks/rsyslog/templates/ubuntu/50-default.conf.erb new file mode 100644 index 0000000..b45f419 --- /dev/null +++ b/chef/cookbooks/rsyslog/templates/ubuntu/50-default.conf.erb @@ -0,0 +1,69 @@ +# Default rules for rsyslog. +# +# For more information see rsyslog.conf(5) and /etc/rsyslog.conf + +# +# First some standard log files. Log by facility. +# +auth,authpriv.* /var/log/auth.log +*.*;auth,authpriv.none -/var/log/syslog +#cron.* /var/log/cron.log +daemon.* -/var/log/daemon.log +kern.* -/var/log/kern.log +lpr.* -/var/log/lpr.log +mail.* -/var/log/mail.log +user.* -/var/log/user.log + +# +# Logging for the mail system. Split it up so that +# it is easy to write scripts to parse these files. +# +mail.info -/var/log/mail.info +mail.warn -/var/log/mail.warn +mail.err /var/log/mail.err + +# +# Logging for INN news system. +# +news.crit /var/log/news/news.crit +news.err /var/log/news/news.err +news.notice -/var/log/news/news.notice + +# +# Some "catch-all" log files. +# +*.=debug;\ + auth,authpriv.none;\ + news.none;mail.none -/var/log/debug +*.=info;*.=notice;*.=warn;\ + auth,authpriv.none;\ + cron,daemon.none;\ + mail,news.none -/var/log/messages + +# +# Emergencies are sent to everybody logged in. +# +*.emerg * + +# +# I like to have messages displayed on the console, but only on a virtual +# console I usually leave idle. +# +#daemon,mail.*;\ +# news.=crit;news.=err;news.=notice;\ +# *.=debug;*.=info;\ +# *.=notice;*.=warn /dev/tty8 + +# The named pipe /dev/xconsole is for the `xconsole' utility. To use it, +# you must invoke `xconsole' with the `-file' option: +# +# $ xconsole -file /dev/xconsole [...] +# +# NOTE: adjust the list below, or you'll go crazy if you have a reasonably +# busy site.. +# +daemon.*;mail.*;\ + news.err;\ + *.=debug;*.=info;\ + *.=notice;*.=warn |/dev/xconsole + diff --git a/chef/roles/test-synclog.rb b/chef/roles/test-synclog.rb new file mode 100644 index 0000000..23748ea --- /dev/null +++ b/chef/roles/test-synclog.rb @@ -0,0 +1,5 @@ +name "test-synclog" +description "Sync application related logs for debugging" +run_list( + "recipe[rsyslog::client]" + )