cookbooks/fb_syslog/templates/default/rsyslog.conf.erb (162 lines of code) (raw):
# rsyslog v5 configuration file
# This rsyslog.conf was generated by Chef. To make changes, see
# fb_syslog/README.md
# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html
# Use FQDN for hostname field
$PreserveFQDN on
#### MODULES ####
# Provides support for local system logging (e.g. via logger command)
$ModLoad imuxsock
<% if node.centos? && !node.centos6? -%>
$OmitLocalLogging off
<% end -%>
# Provides kernel logging support (previously done by rklogd)
$ModLoad imklog
<% if node['fb_syslog']['rsyslog_use_omprog'] -%>
# Provides logging to external programs.
module(load="omprog")
<% end -%>
<% if node['fb_syslog']['rsyslog_server'] -%>
# UDP / TCP reception
$ModLoad imudp
$ModLoad imtcp
<% if node['fb_syslog']['rsyslog_server_address'] -%>
$UDPServerAddress <%= node['fb_syslog']['rsyslog_server_address'] %>
<% end -%>
<% non_ruleset_ports = node['fb_syslog']['rsyslog_nonruleset_ports'].to_hash %>
<% non_ruleset_ports.each do |proto, ports| -%>
<% if proto == 'udp' -%>
<% ports.each do |port| -%>
$UDPServerRun <%= port %>
<% end -%>
<% elsif proto == 'tcp' -%>
<% ports.each do |port| -%>
$InputTCPServerRun <%= port %>
<% end -%>
<% end -%>
<% end -%>
<% end -%>
<% if node['fb_syslog']['rsyslog_stats_logging'] -%>
# Provides periodic output of rsyslog internal counters
module(load="impstats" severity="7" resetCounters="on")
## Stats logging
syslog.=debug /var/log/rsyslog-stats.log
<% end -%>
#### GLOBAL DIRECTIVES ####
# Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
<% if node['fb_syslog']['rsyslog_escape_cchars'] -%>
# Escape non-printable control characters in messages entering syslog
$EscapeControlCharactersOnReceive on
<% end -%>
<% unless node['fb_syslog']['rsyslog_additional_sockets'].empty? %>
# Additional sockets
$InputUnixListenSocketCreatePath on
<% node['fb_syslog']['rsyslog_additional_sockets'].each do |sock| %>
$AddUnixListenSocket <%= sock %>
<% end %>
<% end %>
# File syncing capability is disabled by default. This feature is usually not required,
# not useful and an extreme performance hit
#$ActionFileEnableSync on
<% unless node['fb_syslog']['rsyslog_early_lines'].empty? %>
<% node['fb_syslog']['rsyslog_early_lines'].each do |line| %>
<%= line %>
<% end %>
<% end %>
<% node['fb_syslog']['syslog-entries'].to_hash.each_value do |entry| -%>
<% if entry['comment'] -%>
<%= FB::Helpers.commentify(entry['comment']) %>
<% end -%>
<%# syslog doesn't support not flushing on OS X, so we cannot use the `-`
prefix for files. %>
<% action = entry['action'] -%>
<% if node.macos? && action.start_with?('-') -%>
<% action.slice!(0) -%>
<% end -%>
<%= "%s %s" % [entry['selector'], action] %>
<% end -%>
<% unless node['fb_syslog']['rsyslog_late_lines'].empty? %>
<% node['fb_syslog']['rsyslog_late_lines'].each do |line| %>
<%= line %>
<% end %>
<% end %>
<% rulesets = node['fb_syslog']['rsyslog_rulesets'].to_hash %>
<% unless rulesets.empty? -%>
### Custom Rulesets ###
<% rulesets.each do |ruleset_name, specs| -%>
$RuleSet <%= ruleset_name %>
<% specs['rules'].each do |name, filters| -%>
# <%= name %>
<% filters.each do |filter| -%>
<%= filter %>
<% end -%>
<% end -%>
<% if specs['proto'] == 'udp' -%>
$InputUDPServerBindRuleset <%= ruleset_name %>
$UDPServerRun <%= specs['port'] %>
<% elsif specs['proto'] == 'tcp' -%>
$InputTCPServerBindRuleset <%= ruleset_name %>
$InputTCPServerRun <%= specs['port'] %>
<% end -%>
<% end -%>
<% end -%>
<%
if node['fb_syslog']['rsyslog_report_suspension'].nil?
report_suspension = nil
else
report_suspension =
node['fb_syslog']['rsyslog_report_suspension'] ? 'on' : 'off'
end
if (!node['fb_syslog']['rsyslog_server'] ||
node['fb_syslog']['rsyslog_use_omprog_force']) &&
!node['fb_syslog']['rsyslog_facilities_sent_to_remote'].empty?
if node['fb_syslog']['rsyslog_use_omprog']
rsyslog_omprog_binary = node['fb_syslog']['rsyslog_omprog_binary']
rsyslog_omprog_binary_args =
node['fb_syslog']['rsyslog_omprog_binary_args']
unless rsyslog_omprog_binary_args.empty?
rsyslog_omprog_binary += ' ' + rsyslog_omprog_binary_args.join(' ')
end
if node.linux?
%>
# Program Logging
<%= node['fb_syslog']['rsyslog_facilities_sent_to_remote'].join(',') %> {
action(type="omprog"
name="Program_Logging"
binary="<%= rsyslog_omprog_binary %>"
<% unless report_suspension.nil? -%>
action.reportSuspension="<%= report_suspension %>"
action.reportSuspensionContinuation="<%= report_suspension %>"
<% end -%>
template="RSYSLOG_TraditionalFileFormat"
)
}
<% end # if node.linux? %>
<% else # if rsyslog_use_omprog
rsyslog_port = node['fb_syslog']['rsyslog_port']
rsyslog_upstream = node['fb_syslog']['rsyslog_upstream']
rsyslog_type = 'omfwd'
extra_lines = []
if node.linux?
%>
# Remote Logging
<%= node['fb_syslog']['rsyslog_facilities_sent_to_remote'].join(',') %> {
action(type="<%= rsyslog_type %>"
name="Remote_Logging"
target="<%= rsyslog_upstream %>"
port="<%= rsyslog_port %>"
protocol="tcp"
<% unless report_suspension.nil? -%>
action.reportSuspension="<%= report_suspension %>"
action.reportSuspensionContinuation="<%= report_suspension %>"
<% end -%>
<% extra_lines.each do |line| %>
<%= line %>
<% end # if extra_lines.each %>
)
}
<% end # if node.linux? %>
<% end # ending else rsyslog_use_omprog' %>
<% end # if !rsyslog_server and !rsyslog_facilities_sent_to_remote.empty -%>