From b7c77189a00ff28b2a3d16f7d2a740b769116653 Mon Sep 17 00:00:00 2001 From: Eric Renfro Date: Tue, 14 Feb 2017 08:24:03 -0500 Subject: [PATCH] Updated configuration to be dynamic, added sqlite and postgresql support to proxy as well --- attributes/agentd_conf.rb | 4 +- attributes/default.rb | 3 + attributes/server_conf.rb | 11 +- recipes/agent.rb | 17 + recipes/database_postgresql.rb | 32 +- recipes/proxy.rb | 46 +- recipes/server.rb | 9 +- templates/zabbix/3.0/zabbix_agentd.conf.erb | 418 +----------- templates/zabbix/3.0/zabbix_proxy.conf.erb | 694 +------------------- templates/zabbix/3.0/zabbix_server.conf.erb | 600 +---------------- 10 files changed, 144 insertions(+), 1690 deletions(-) diff --git a/attributes/agentd_conf.rb b/attributes/agentd_conf.rb index d0c71b5..701825a 100644 --- a/attributes/agentd_conf.rb +++ b/attributes/agentd_conf.rb @@ -7,7 +7,7 @@ default['zabbix']['agentd']['config']['SourceIP'] = nil default['zabbix']['agentd']['config']['EnableRemoteCommands'] = '0' default['zabbix']['agentd']['config']['LogRemoteCommands'] = '0' default['zabbix']['agentd']['config']['ListenPort'] = '10050' -default['zabbix']['agentd']['config']['ListenIP'] = '0.0.0.0' +default['zabbix']['agentd']['config']['ListenIP'] = ['0.0.0.0'] default['zabbix']['agentd']['config']['StartAgents'] = '3' default['zabbix']['agentd']['config']['RefreshActiveChecks'] = '120' default['zabbix']['agentd']['config']['BufferSend'] = '5' @@ -23,7 +23,7 @@ default['zabbix']['agentd']['config']['UserParameter'] = [] default['zabbix']['agentd']['config']['LoadModulePath'] = '${libdir}/modules' default['zabbix']['agentd']['config']['LoadModule'] = [] default['zabbix']['agentd']['config']['TLSConnect'] = 'unencrypted' -default['zabbix']['agentd']['config']['TLSAccept'] = 'unencrypted' +default['zabbix']['agentd']['config']['TLSAccept'] = ['unencrypted'] default['zabbix']['agentd']['config']['TLSCAFile'] = nil default['zabbix']['agentd']['config']['TLSCRLFile'] = nil default['zabbix']['agentd']['config']['TLSServerCertIssuer'] = nil diff --git a/attributes/default.rb b/attributes/default.rb index 93a8bcd..7b82323 100644 --- a/attributes/default.rb +++ b/attributes/default.rb @@ -1,3 +1,6 @@ +default['zabbix']['proxy']['database']['backend'] = 'sqlite' +default['zabbix']['proxy']['database']['sqlite_path'] = '/var/lib/zabbix_proxy' +default['zabbix']['proxy']['database']['repo']['pgdg'] = false default['zabbix']['database']['backend'] = 'postgresql' default['zabbix']['database']['repo']['pgdg'] = false default['zabbix']['webserver']['backend'] = 'apache' diff --git a/attributes/server_conf.rb b/attributes/server_conf.rb index 3726096..b12d6e8 100644 --- a/attributes/server_conf.rb +++ b/attributes/server_conf.rb @@ -1,11 +1,12 @@ default['zabbix']['server']['config']['ListenPort'] = '10051' default['zabbix']['server']['config']['SourceIP'] = nil default['zabbix']['server']['config']['LogFile'] = '/var/log/zabbix/zabbix_server.log' +default['zabbix']['server']['config']['LogType'] = 'file' default['zabbix']['server']['config']['LogFileSize'] = '1' default['zabbix']['server']['config']['DebugLevel'] = '3' default['zabbix']['server']['config']['PidFile'] = '/var/run/zabbix/zabbix_server.pid' case node['zabbix']['database']['backend'] -when 'postgresql'] +when 'postgresql' default['zabbix']['server']['config']['DBHost'] = nil when 'mysql', 'mariadb', 'percona' default['zabbix']['server']['config']['DBHost'] = 'localhost' @@ -14,7 +15,7 @@ else end default['zabbix']['server']['config']['DBSchema'] = nil case node['zabbix']['database']['backend'] -when 'postgresql'] +when 'postgresql' default['zabbix']['server']['config']['DBSocket'] = nil when 'mysql', 'mariadb', 'percona' default['zabbix']['server']['config']['DBSocket'] = '/var/lib/mysql/mysql.sock' @@ -42,14 +43,14 @@ default['zabbix']['server']['config']['SNMPTrapperFile'] = '/var/log/snmptt/snmp default['zabbix']['server']['config']['StartSNMPTrapper'] = '0' default['zabbix']['server']['config']['ListenIP'] = '0.0.0.0' default['zabbix']['server']['config']['HousekeepingFrequency'] = '1' -default['zabbix']['server']['config']['MaxHousekeeperDelete'] = '500' +default['zabbix']['server']['config']['MaxHousekeeperDelete'] = '5000' default['zabbix']['server']['config']['SenderFrequency'] = '30' default['zabbix']['server']['config']['CacheSize'] = '8M' default['zabbix']['server']['config']['CacheUpdateFrequency'] = '60' default['zabbix']['server']['config']['StartDBSyncers'] = '4' -default['zabbix']['server']['config']['HistoryCacheSize'] = '8M' +default['zabbix']['server']['config']['HistoryCacheSize'] = '16M' +default['zabbix']['server']['config']['HistoryIndexCacheSize'] = '4M' default['zabbix']['server']['config']['TrendCacheSize'] = '4M' -default['zabbix']['server']['config']['HistoryTextCacheSize'] = '16M' default['zabbix']['server']['config']['ValueCacheSize'] = '8M' default['zabbix']['server']['config']['Timeout'] = '3' default['zabbix']['server']['config']['TrapperTimeout'] = '300' diff --git a/recipes/agent.rb b/recipes/agent.rb index da11cbc..87d83a3 100644 --- a/recipes/agent.rb +++ b/recipes/agent.rb @@ -9,6 +9,13 @@ include_recipe 'zabbix::trap_scripts' +################################# +# Include Additional Repositories +case node['platform_family'] +when 'rhel' + include_recipe 'yum-zabbix' +end + # Install zabbix package and dependencies %w{zabbix-agent zabbix-sender cronie crontabs}.each do |pkg| yum_package pkg @@ -16,6 +23,16 @@ end # Install custom zabbix_agentd.conf template "/etc/zabbix/zabbix_agentd.conf" do + params = node['zabbix']['agentd']['config'].merge({ + "Server" => node['zabbix']['agent_servers'], + "ServerActive" => node['zabbix']['agent_servers'], + "Hostname" => node['zabbix']['hostname'] ? node['zabbix']['hostname'] : node['fqdn'], + "HostMetadata" => [ "Linux" ] + node['zabbix']['agent_meta'] + }) + params = Hash[ params.sort_by { |key, val| key } ] + variables({ + :params => params + }) source %W{ zabbix/#{node['zabbix']['version']}/#{node['platform']}-#{node['platform_version'].to_i}/zabbix_agentd.conf.erb zabbix/#{node['zabbix']['version']}/#{node['platform']}/zabbix_agentd.conf.erb diff --git a/recipes/database_postgresql.rb b/recipes/database_postgresql.rb index 936578c..06d680c 100644 --- a/recipes/database_postgresql.rb +++ b/recipes/database_postgresql.rb @@ -9,22 +9,18 @@ include_recipe 'chef-vault' -if node['zabbix']['database']['backend'] == 'postgresql' - if node['zabbix']['database']['repo']['pgdg'] - node.default['postgresql']['enable_pgdg_apt'] = true - node.default['postgresql']['enable_pgdg_yum'] = true - node.default['postgresql']['version'] = "9.6" - end - node.default['postgresql']['pg_hba'] = [ - { type: 'local', db: 'all', user: 'postgres', addr: nil, method: 'ident' }, - { type: 'local', db: 'all', user: 'all', addr: nil, method: 'md5' }, - { type: 'host', db: 'all', user: 'all', addr: '127.0.0.1/32', method: 'md5' }, - { type: 'host', db: 'all', user: 'all', addr: '::1/128', method: 'md5' }, - ] - include_recipe 'postgresql::server' -else - Chef::Application.fatal!('database_postgresql, but backend is set differently.', 111) +if node['zabbix']['database']['repo']['pgdg'] + node.default['postgresql']['enable_pgdg_apt'] = true + node.default['postgresql']['enable_pgdg_yum'] = true + node.default['postgresql']['version'] = "9.6" end +node.default['postgresql']['pg_hba'] = [ + { type: 'local', db: 'all', user: 'postgres', addr: nil, method: 'ident' }, + { type: 'local', db: 'all', user: 'all', addr: nil, method: 'md5' }, + { type: 'host', db: 'all', user: 'all', addr: '127.0.0.1/32', method: 'md5' }, + { type: 'host', db: 'all', user: 'all', addr: '::1/128', method: 'md5' }, +] +include_recipe 'postgresql::server' directory '/tmp/database' do owner 'root' @@ -38,7 +34,7 @@ cookbook_file '/tmp/database/schema.sql' do sensitive true source %W{ host-#{node['fqdn']}/schema.sql - #{node['zabbix']['database']['backend']}/#{node['zabbix']['version']}/schema.sql + postgresql/#{node['zabbix']['version']}/schema.sql } backup false action :nothing @@ -49,7 +45,7 @@ cookbook_file '/tmp/database/images.sql' do sensitive true source %W{ host-#{node['fqdn']}/images.sql - #{node['zabbix']['database']['backend']}/#{node['zabbix']['version']}/images.sql + postgresql/#{node['zabbix']['version']}/images.sql } backup false action :nothing @@ -60,7 +56,7 @@ cookbook_file '/tmp/database/data.sql' do sensitive true source %W{ host-#{node['fqdn']}/data.sql - #{node['zabbix']['database']['backend']}/#{node['zabbix']['version']}/data.sql + postgresql/#{node['zabbix']['version']}/data.sql } backup false action :nothing diff --git a/recipes/proxy.rb b/recipes/proxy.rb index dda119f..f322747 100644 --- a/recipes/proxy.rb +++ b/recipes/proxy.rb @@ -9,25 +9,53 @@ include_recipe 'chef-vault' -%w{zabbix-proxy-sqlite3 zabbix-get}.each do |pkg| - yum_package pkg do - version '3.0.5-1.el6' - allow_downgrade true - action :install - end +################################# +# Include Additional Repositories +case node['platform_family'] +when 'rhel' + include_recipe 'yum-zabbix' end -directory "/var/lib/zabbix" do +package 'zabbix-get' +case node['zabbix']['proxy']['database']['backend'] +when 'sqlite' + package 'zabbix-proxy-sqlite3' +when 'postgresql' + include_recipe 'zabbix::database_postgresql' + package 'zabbix-proxy-pgsql' +else + package 'zabbix-proxy-mysql' +end + +directory "/var/lib/zabbix_proxy" do owner 'zabbix' group 'zabbix' mode '0750' action :create + only_if { node['zabbix']['proxy']['database']['backend'] == 'sqlite' } end template "/etc/zabbix/zabbix_proxy.conf" do - credentials = chef_vault_item("secrets", "zabbix") + if node['zabbix']['proxy']['database']['backend'] == 'sqlite' + params = node['zabbix']['proxy']['config'].merge({ + "DBName" => "#{node['zabbix']['proxy']['database']['sqlite_path']}/database", + "Server" => node['zabbix']['agent_servers'], + "Hostname" => node['zabbix']['hostname'] ? node['zabbix']['hostname'] : node['fqdn'] + }) + else + credentials = chef_vault_item("secrets", "zabbix_proxy") + params = node['zabbix']['proxy']['config'].merge({ + "DBName" => credentials['database'], + "DBUser" => credentials['username'], + "DBPassword" => credentials['password'], + "Server" => node['zabbix']['agent_servers'], + "Hostname" => node['zabbix']['hostname'] ? node['zabbix']['hostname'] : node['fqdn'] + }) + end + params = Hash[ params.sort_by { |key, val| key } ] + variables({ - :credentials => credentials + :params => params }) source %W{ zabbix/#{node['zabbix']['version']}/#{node['platform']}-#{node['platform_version'].to_i}/zabbix_proxy.conf.erb diff --git a/recipes/server.rb b/recipes/server.rb index 9e588db..6bcd3bb 100644 --- a/recipes/server.rb +++ b/recipes/server.rb @@ -50,8 +50,15 @@ end # Configure Zabbix Server template "/etc/zabbix/zabbix_server.conf" do credentials = chef_vault_item("secrets", "zabbix") + params = node['zabbix']['server']['config'].merge({ + "DBName" => credentials['database'], + "DBUser" => credentials['username'], + "DBPassword" => credentials['password'] + }) + params = Hash[ params.sort_by { |key, val| key } ] variables({ - :credentials => credentials + :credentials => credentials, + :params => params }) source %W{ zabbix/#{node['zabbix']['version']}/#{node['platform']}-#{node['platform_version'].to_i}/zabbix_server.conf.erb diff --git a/templates/zabbix/3.0/zabbix_agentd.conf.erb b/templates/zabbix/3.0/zabbix_agentd.conf.erb index d888a05..c02074d 100644 --- a/templates/zabbix/3.0/zabbix_agentd.conf.erb +++ b/templates/zabbix/3.0/zabbix_agentd.conf.erb @@ -3,399 +3,25 @@ # This is a configuration file for Zabbix agent daemon (Unix) # To get more information about Zabbix, visit http://www.zabbix.com -############ GENERAL PARAMETERS ################# - -### Option: PidFile -# Name of PID file. -# -# Mandatory: no -# Default: -# PidFile=/tmp/zabbix_agentd.pid - -PidFile=/var/run/zabbix/zabbix_agentd.pid - -### Option: LogType -# Specifies where log messages are written to: -# system - syslog -# file - file specified with LogFile parameter -# console - standard output -# -# Mandatory: no -# Default: -# LogType=file - -### Option: LogFile -# Log file name for LogType 'file' parameter. -# -# Mandatory: no -# Default: -# LogFile= - -LogFile=/var/log/zabbix/zabbix_agentd.log - -### Option: LogFileSize -# Maximum size of log file in MB. -# 0 - disable automatic log rotation. -# -# Mandatory: no -# Range: 0-1024 -# Default: -# LogFileSize=1 - -LogFileSize=0 - -### Option: DebugLevel -# Specifies debug level: -# 0 - basic information about starting and stopping of Zabbix processes -# 1 - critical information -# 2 - error information -# 3 - warnings -# 4 - for debugging (produces lots of information) -# 5 - extended debugging (produces even more information) -# -# Mandatory: no -# Range: 0-5 -# Default: -# DebugLevel=3 - -### Option: SourceIP -# Source IP address for outgoing connections. -# -# Mandatory: no -# Default: -# SourceIP= - -### Option: EnableRemoteCommands -# Whether remote commands from Zabbix server are allowed. -# 0 - not allowed -# 1 - allowed -# -# Mandatory: no -# Default: -# EnableRemoteCommands=0 -EnableRemoteCommands=1 - -### Option: LogRemoteCommands -# Enable logging of executed shell commands as warnings. -# 0 - disabled -# 1 - enabled -# -# Mandatory: no -# Default: -# LogRemoteCommands=0 -LogRemoteCommands=1 - -##### Passive checks related - -### Option: Server -# List of comma delimited IP addresses (or hostnames) of Zabbix servers. -# Incoming connections will be accepted only from the hosts listed here. -# If IPv6 support is enabled then '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' are treated equally. -# -# Mandatory: no -# Default: -# Server= - -Server=<%= node['zabbix']['agent_servers'].join(', ') %> - -### Option: ListenPort -# Agent will listen on this port for connections from the server. -# -# Mandatory: no -# Range: 1024-32767 -# Default: -# ListenPort=10050 - -### Option: ListenIP -# List of comma delimited IP addresses that the agent should listen on. -# First IP address is sent to Zabbix server if connecting to it to retrieve list of active checks. -# -# Mandatory: no -# Default: -# ListenIP=0.0.0.0 - -### Option: StartAgents -# Number of pre-forked instances of zabbix_agentd that process passive checks. -# If set to 0, disables passive checks and the agent will not listen on any TCP port. -# -# Mandatory: no -# Range: 0-100 -# Default: -# StartAgents=3 - -##### Active checks related - -### Option: ServerActive -# List of comma delimited IP:port (or hostname:port) pairs of Zabbix servers for active checks. -# If port is not specified, default port is used. -# IPv6 addresses must be enclosed in square brackets if port for that host is specified. -# If port is not specified, square brackets for IPv6 addresses are optional. -# If this parameter is not specified, active checks are disabled. -# Example: ServerActive=127.0.0.1:20051,zabbix.domain,[::1]:30051,::1,[12fc::1] -# -# Mandatory: no -# Default: -# ServerActive= - -ServerActive=<%= node['zabbix']['agent_servers'].join(', ') %> - -### Option: Hostname -# Unique, case sensitive hostname. -# Required for active checks and must match hostname as configured on the server. -# Value is acquired from HostnameItem if undefined. -# -# Mandatory: no -# Default: -# Hostname= - -Hostname=<%= node['fqdn'] %> - -### Option: HostnameItem -# Item used for generating Hostname if it is undefined. Ignored if Hostname is defined. -# Does not support UserParameters or aliases. -# -# Mandatory: no -# Default: -# HostnameItem=system.hostname - -### Option: HostMetadata -# Optional parameter that defines host metadata. -# Host metadata is used at host auto-registration process. -# An agent will issue an error and not start if the value is over limit of 255 characters. -# If not defined, value will be acquired from HostMetadataItem. -# -# Mandatory: no -# Range: 0-255 characters -# Default: -# HostMetadata= - -HostMetadata=Linux <%= node['zabbix']['agent_meta'].join(' ') %> - -### Option: HostMetadataItem -# Optional parameter that defines an item used for getting host metadata. -# Host metadata is used at host auto-registration process. -# During an auto-registration request an agent will log a warning message if -# the value returned by specified item is over limit of 255 characters. -# This option is only used when HostMetadata is not defined. -# -# Mandatory: no -# Default: -# HostMetadataItem= - -### Option: RefreshActiveChecks -# How often list of active checks is refreshed, in seconds. -# -# Mandatory: no -# Range: 60-3600 -# Default: -# RefreshActiveChecks=120 - -### Option: BufferSend -# Do not keep data longer than N seconds in buffer. -# -# Mandatory: no -# Range: 1-3600 -# Default: -# BufferSend=5 - -### Option: BufferSize -# Maximum number of values in a memory buffer. The agent will send -# all collected data to Zabbix Server or Proxy if the buffer is full. -# -# Mandatory: no -# Range: 2-65535 -# Default: -# BufferSize=100 - -### Option: MaxLinesPerSecond -# Maximum number of new lines the agent will send per second to Zabbix Server -# or Proxy processing 'log' and 'logrt' active checks. -# The provided value will be overridden by the parameter 'maxlines', -# provided in 'log' or 'logrt' item keys. -# -# Mandatory: no -# Range: 1-1000 -# Default: -# MaxLinesPerSecond=20 - -############ ADVANCED PARAMETERS ################# - -### Option: Alias -# Sets an alias for an item key. It can be used to substitute long and complex item key with a smaller and simpler one. -# Multiple Alias parameters may be present. Multiple parameters with the same Alias key are not allowed. -# Different Alias keys may reference the same item key. -# For example, to retrieve the ID of user 'zabbix': -# Alias=zabbix.userid:vfs.file.regexp[/etc/passwd,^zabbix:.:([0-9]+),,,,\1] -# Now shorthand key zabbix.userid may be used to retrieve data. -# Aliases can be used in HostMetadataItem but not in HostnameItem parameters. -# -# Mandatory: no -# Range: -# Default: - -### Option: Timeout -# Spend no more than Timeout seconds on processing -# -# Mandatory: no -# Range: 1-30 -# Default: -# Timeout=3 - -### Option: AllowRoot -# Allow the agent to run as 'root'. If disabled and the agent is started by 'root', the agent -# will try to switch to the user specified by the User configuration option instead. -# Has no effect if started under a regular user. -# 0 - do not allow -# 1 - allow -# -# Mandatory: no -# Default: -# AllowRoot=0 - -### Option: User -# Drop privileges to a specific, existing user on the system. -# Only has effect if run as 'root' and AllowRoot is disabled. -# -# Mandatory: no -# Default: -# User=zabbix - -### Option: Include -# You may include individual files or all files in a directory in the configuration file. -# Installing Zabbix will create include directory in /usr/local/etc, unless modified during the compile time. -# -# Mandatory: no -# Default: -# Include= - -Include=/etc/zabbix/zabbix_agentd.d/ - -# Include=/usr/local/etc/zabbix_agentd.userparams.conf -# Include=/usr/local/etc/zabbix_agentd.conf.d/ -# Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf - -####### USER-DEFINED MONITORED PARAMETERS ####### - -### Option: UnsafeUserParameters -# Allow all characters to be passed in arguments to user-defined parameters. -# The following characters are not allowed: -# \ ' " ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @ -# Additionally, newline characters are not allowed. -# 0 - do not allow -# 1 - allow -# -# Mandatory: no -# Range: 0-1 -# Default: -# UnsafeUserParameters=0 - -### Option: UserParameter -# User-defined parameter to monitor. There can be several user-defined parameters. -# Format: UserParameter=, -# See 'zabbix_agentd' directory for examples. -# -# Mandatory: no -# Default: -# UserParameter= - -####### LOADABLE MODULES ####### - -### Option: LoadModulePath -# Full path to location of agent modules. -# Default depends on compilation options. -# -# Mandatory: no -# Default: -# LoadModulePath=${libdir}/modules - -### Option: LoadModule -# Module to load at agent startup. Modules are used to extend functionality of the agent. -# Format: LoadModule= -# The modules must be located in directory specified by LoadModulePath. -# It is allowed to include multiple LoadModule parameters. -# -# Mandatory: no -# Default: -# LoadModule= - -####### TLS-RELATED PARAMETERS ####### - -### Option: TLSConnect -# How the agent should connect to server or proxy. Used for active checks. -# Only one value can be specified: -# unencrypted - connect without encryption -# psk - connect using TLS and a pre-shared key -# cert - connect using TLS and a certificate -# -# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection) -# Default: -# TLSConnect=unencrypted - -### Option: TLSAccept -# What incoming connections to accept. -# Multiple values can be specified, separated by comma: -# unencrypted - accept connections without encryption -# psk - accept connections secured with TLS and a pre-shared key -# cert - accept connections secured with TLS and a certificate -# -# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection) -# Default: -# TLSAccept=unencrypted - -### Option: TLSCAFile -# Full pathname of a file containing the top-level CA(s) certificates for -# peer certificate verification. -# -# Mandatory: no -# Default: -# TLSCAFile= - -### Option: TLSCRLFile -# Full pathname of a file containing revoked certificates. -# -# Mandatory: no -# Default: -# TLSCRLFile= - -### Option: TLSServerCertIssuer -# Allowed server certificate issuer. -# -# Mandatory: no -# Default: -# TLSServerCertIssuer= - -### Option: TLSServerCertSubject -# Allowed server certificate subject. -# -# Mandatory: no -# Default: -# TLSServerCertSubject= - -### Option: TLSCertFile -# Full pathname of a file containing the agent certificate or certificate chain. -# -# Mandatory: no -# Default: -# TLSCertFile= - -### Option: TLSKeyFile -# Full pathname of a file containing the agent private key. -# -# Mandatory: no -# Default: -# TLSKeyFile= - -### Option: TLSPSKIdentity -# Unique, case sensitive string used to identify the pre-shared key. -# -# Mandatory: no -# Default: -# TLSPSKIdentity= - -### Option: TLSPSKFile -# Full pathname of a file containing the pre-shared key. -# -# Mandatory: no -# Default: -# TLSPSKFile= - +<% +@params.each do |option, value| + if value.kind_of?(String) -%> +<%= "#{option}=#{value}" unless value.nil? %> +<% + elsif value.kind_of?(Array) + case option + when 'LoadModule', 'Include', "Alias", "UserParameter" + value.each do |line| -%> +<%= "#{option}=#{line}" unless line.nil? %> +<% + end + when 'ListenIP', 'Server', 'ServerActive', 'TLSAccept' %> +<%= "#{option}=#{value.join(',')}" unless value.nil? %> +<% + when 'HostMetadata' %> +<%= "#{option}=#{value.join(' ')}" unless value.nil? %> +<% + end + end +end +%> diff --git a/templates/zabbix/3.0/zabbix_proxy.conf.erb b/templates/zabbix/3.0/zabbix_proxy.conf.erb index b328400..4a4b955 100644 --- a/templates/zabbix/3.0/zabbix_proxy.conf.erb +++ b/templates/zabbix/3.0/zabbix_proxy.conf.erb @@ -3,678 +3,22 @@ # This is a configuration file for Zabbix proxy daemon # To get more information about Zabbix, visit http://www.zabbix.com -############ GENERAL PARAMETERS ################# - -### Option: ProxyMode -# Proxy operating mode. -# 0 - proxy in the active mode -# 1 - proxy in the passive mode -# -# Mandatory: no -# Default: -# ProxyMode=0 - -### Option: Server -# IP address (or hostname) of Zabbix server. -# Active proxy will get configuration data from the server. -# For a proxy in the passive mode this parameter will be ignored. -# -# Mandatory: yes (if ProxyMode is set to 0) -# Default: -# Server= - -Server=<%= node['zabbix']['agent_servers'].join(', ') %> - -### Option: ServerPort -# Port of Zabbix trapper on Zabbix server. -# For a proxy in the passive mode this parameter will be ignored. -# -# Mandatory: no -# Range: 1024-32767 -# Default: -# ServerPort=10051 - -### Option: Hostname -# Unique, case sensitive Proxy name. Make sure the Proxy name is known to the server! -# Value is acquired from HostnameItem if undefined. -# -# Mandatory: no -# Default: -# Hostname= - -Hostname=<%= node['fqdn'] %> - -### Option: HostnameItem -# Item used for generating Hostname if it is undefined. -# Ignored if Hostname is defined. -# -# Mandatory: no -# Default: -# HostnameItem=system.hostname - -### Option: ListenPort -# Listen port for trapper. -# -# Mandatory: no -# Range: 1024-32767 -# Default: -# ListenPort=10051 - -### Option: SourceIP -# Source IP address for outgoing connections. -# -# Mandatory: no -# Default: -# SourceIP= - -### Option: LogType -# Specifies where log messages are written to: -# system - syslog -# file - file specified with LogFile parameter -# console - standard output -# -# Mandatory: no -# Default: -# LogType=file - -### Option: LogFile -# Log file name for LogType 'file' parameter. -# -# Mandatory: no -# Default: -# LogFile= - -LogFile=/var/log/zabbix/zabbix_proxy.log - -### Option: LogFileSize -# Maximum size of log file in MB. -# 0 - disable automatic log rotation. -# -# Mandatory: no -# Range: 0-1024 -# Default: -# LogFileSize=1 - -LogFileSize=0 - -### Option: DebugLevel -# Specifies debug level: -# 0 - basic information about starting and stopping of Zabbix processes -# 1 - critical information -# 2 - error information -# 3 - warnings -# 4 - for debugging (produces lots of information) -# 5 - extended debugging (produces even more information) -# -# Mandatory: no -# Range: 0-5 -# Default: -# DebugLevel=3 - -### Option: PidFile -# Name of PID file. -# -# Mandatory: no -# Default: -# PidFile=/tmp/zabbix_proxy.pid - -PidFile=/var/run/zabbix/zabbix_proxy.pid - -### Option: DBHost -# Database host name. -# If set to localhost, socket is used for MySQL. -# If set to empty string, socket is used for PostgreSQL. -# -# Mandatory: no -# Default: -# DBHost=localhost - -### Option: DBName -# Database name. -# For SQLite3 path to database file must be provided. DBUser and DBPassword are ignored. -# Warning: do not attempt to use the same database Zabbix server is using. -# -# Mandatory: yes -# Default: -# DBName= - -DBName=/var/lib/zabbix/zabbix_proxy.db -# Mandatory: no -# Default: -# DBSchema= - -### Option: DBUser -# Database user. Ignored for SQLite. -# -# Default: -# DBUser= - -DBUser=zabbix - -### Option: DBPassword -# Database password. Ignored for SQLite. -# Comment this line if no password is used. -# -# Mandatory: no -# Default: -# DBPassword= - -### Option: DBSocket -# Path to MySQL socket. -# -# Mandatory: no -# Default: -# DBSocket=/tmp/mysql.sock - -# Option: DBPort -# Database port when not using local socket. Ignored for SQLite. -# -# Mandatory: no -# Default (for MySQL): -# DBPort=3306 - -######### PROXY SPECIFIC PARAMETERS ############# - -### Option: ProxyLocalBuffer -# Proxy will keep data locally for N hours, even if the data have already been synced with the server. -# This parameter may be used if local data will be used by third party applications. -# -# Mandatory: no -# Range: 0-720 -# Default: -# ProxyLocalBuffer=0 - -### Option: ProxyOfflineBuffer -# Proxy will keep data for N hours in case if no connectivity with Zabbix Server. -# Older data will be lost. -# -# Mandatory: no -# Range: 1-720 -# Default: -# ProxyOfflineBuffer=1 -ProxyOfflineBuffer=24 - -### Option: HeartbeatFrequency -# Frequency of heartbeat messages in seconds. -# Used for monitoring availability of Proxy on server side. -# 0 - heartbeat messages disabled. -# For a proxy in the passive mode this parameter will be ignored. -# -# Mandatory: no -# Range: 0-3600 -# Default: -# HeartbeatFrequency=60 - -### Option: ConfigFrequency -# How often proxy retrieves configuration data from Zabbix Server in seconds. -# For a proxy in the passive mode this parameter will be ignored. -# -# Mandatory: no -# Range: 1-3600*24*7 -# Default: -# ConfigFrequency=3600 - -### Option: DataSenderFrequency -# Proxy will send collected data to the Server every N seconds. -# For a proxy in the passive mode this parameter will be ignored. -# -# Mandatory: no -# Range: 1-3600 -# Default: -# DataSenderFrequency=1 - -############ ADVANCED PARAMETERS ################ - -### Option: StartPollers -# Number of pre-forked instances of pollers. -# -# Mandatory: no -# Range: 0-1000 -# Default: -# StartPollers=5 - -### Option: StartIPMIPollers -# Number of pre-forked instances of IPMI pollers. -# -# Mandatory: no -# Range: 0-1000 -# Default: -# StartIPMIPollers=0 - -### Option: StartPollersUnreachable -# Number of pre-forked instances of pollers for unreachable hosts (including IPMI and Java). -# At least one poller for unreachable hosts must be running if regular, IPMI or Java pollers -# are started. -# -# Mandatory: no -# Range: 0-1000 -# Default: -# StartPollersUnreachable=1 - -### Option: StartTrappers -# Number of pre-forked instances of trappers. -# Trappers accept incoming connections from Zabbix sender and active agents. -# -# Mandatory: no -# Range: 0-1000 -# Default: -# StartTrappers=5 - -### Option: StartPingers -# Number of pre-forked instances of ICMP pingers. -# -# Mandatory: no -# Range: 0-1000 -# Default: -# StartPingers=1 - -### Option: StartDiscoverers -# Number of pre-forked instances of discoverers. -# -# Mandatory: no -# Range: 0-250 -# Default: -# StartDiscoverers=1 - -### Option: StartHTTPPollers -# Number of pre-forked instances of HTTP pollers. -# -# Mandatory: no -# Range: 0-1000 -# Default: -# StartHTTPPollers=1 - -### Option: JavaGateway -# IP address (or hostname) of Zabbix Java gateway. -# Only required if Java pollers are started. -# -# Mandatory: no -# Default: -# JavaGateway= - -### Option: JavaGatewayPort -# Port that Zabbix Java gateway listens on. -# -# Mandatory: no -# Range: 1024-32767 -# Default: -# JavaGatewayPort=10052 - -### Option: StartJavaPollers -# Number of pre-forked instances of Java pollers. -# -# Mandatory: no -# Range: 0-1000 -# Default: -# StartJavaPollers=0 - -### Option: StartVMwareCollectors -# Number of pre-forked vmware collector instances. -# -# Mandatory: no -# Range: 0-250 -# Default: -# StartVMwareCollectors=0 - -### Option: VMwareFrequency -# How often Zabbix will connect to VMware service to obtain a new data. -# -# Mandatory: no -# Range: 10-86400 -# Default: -# VMwareFrequency=60 - -### Option: VMwarePerfFrequency -# How often Zabbix will connect to VMware service to obtain performance data. -# -# Mandatory: no -# Range: 10-86400 -# Default: -# VMwarePerfFrequency=60 - -### Option: VMwareCacheSize -# Size of VMware cache, in bytes. -# Shared memory size for storing VMware data. -# Only used if VMware collectors are started. -# -# Mandatory: no -# Range: 256K-2G -# Default: -# VMwareCacheSize=8M - -### Option: VMwareTimeout -# Specifies how many seconds vmware collector waits for response from VMware service. -# -# Mandatory: no -# Range: 1-300 -# Default: -# VMwareTimeout=10 - -### Option: SNMPTrapperFile -# Temporary file used for passing data from SNMP trap daemon to the proxy. -# Must be the same as in zabbix_trap_receiver.pl or SNMPTT configuration file. -# -# Mandatory: no -# Default: -# SNMPTrapperFile=/tmp/zabbix_traps.tmp - -SNMPTrapperFile=/var/log/snmptrap/snmptrap.log - -### Option: StartSNMPTrapper -# If 1, SNMP trapper process is started. -# -# Mandatory: no -# Range: 0-1 -# Default: -# StartSNMPTrapper=0 - -### Option: ListenIP -# List of comma delimited IP addresses that the trapper should listen on. -# Trapper will listen on all network interfaces if this parameter is missing. -# -# Mandatory: no -# Default: -# ListenIP=0.0.0.0 - -### Option: HousekeepingFrequency -# How often Zabbix will perform housekeeping procedure (in hours). -# Housekeeping is removing outdated information from the database. -# To prevent Housekeeper from being overloaded, no more than 4 times HousekeepingFrequency -# hours of outdated information are deleted in one housekeeping cycle. -# To lower load on proxy startup housekeeping is postponed for 30 minutes after proxy start. -# With HousekeepingFrequency=0 the housekeeper can be only executed using the runtime control option. -# In this case the period of outdated information deleted in one housekeeping cycle is 4 times the -# period since the last housekeeping cycle, but not less than 4 hours and not greater than 4 days. -# -# Mandatory: no -# Range: 0-24 -# Default: -# HousekeepingFrequency=1 - -### Option: CacheSize -# Size of configuration cache, in bytes. -# Shared memory size, for storing hosts and items data. -# -# Mandatory: no -# Range: 128K-8G -# Default: -# CacheSize=8M - -### Option: StartDBSyncers -# Number of pre-forked instances of DB Syncers. -# -# Mandatory: no -# Range: 1-100 -# Default: -# StartDBSyncers=4 - -### Option: HistoryCacheSize -# Size of history cache, in bytes. -# Shared memory size for storing history data. -# -# Mandatory: no -# Range: 128K-2G -# Default: -# HistoryCacheSize=16M - -### Option: HistoryIndexCacheSize -# Size of history index cache, in bytes. -# Shared memory size for indexing history cache. -# -# Mandatory: no -# Range: 128K-2G -# Default: -# HistoryIndexCacheSize=4M - -### Option: Timeout -# Specifies how long we wait for agent, SNMP device or external check (in seconds). -# -# Mandatory: no -# Range: 1-30 -# Default: -# Timeout=3 - -Timeout=4 - -### Option: TrapperTimeout -# Specifies how many seconds trapper may spend processing new data. -# -# Mandatory: no -# Range: 1-300 -# Default: -# TrapperTimeout=300 - -### Option: UnreachablePeriod -# After how many seconds of unreachability treat a host as unavailable. -# -# Mandatory: no -# Range: 1-3600 -# Default: -# UnreachablePeriod=45 - -### Option: UnavailableDelay -# How often host is checked for availability during the unavailability period, in seconds. -# -# Mandatory: no -# Range: 1-3600 -# Default: -# UnavailableDelay=60 - -### Option: UnreachableDelay -# How often host is checked for availability during the unreachability period, in seconds. -# -# Mandatory: no -# Range: 1-3600 -# Default: -# UnreachableDelay=15 - -### Option: ExternalScripts -# Full path to location of external scripts. -# Default depends on compilation options. -# -# Mandatory: no -# Default: -# ExternalScripts=${datadir}/zabbix/externalscripts - -ExternalScripts=/usr/lib/zabbix/externalscripts - -### Option: FpingLocation -# Location of fping. -# Make sure that fping binary has root ownership and SUID flag set. -# -# Mandatory: no -# Default: -# FpingLocation=/usr/sbin/fping - -### Option: Fping6Location -# Location of fping6. -# Make sure that fping6 binary has root ownership and SUID flag set. -# Make empty if your fping utility is capable to process IPv6 addresses. -# -# Mandatory: no -# Default: -# Fping6Location=/usr/sbin/fping6 - -### Option: SSHKeyLocation -# Location of public and private keys for SSH checks and actions. -# -# Mandatory: no -# Default: -# SSHKeyLocation= - -### Option: LogSlowQueries -# How long a database query may take before being logged (in milliseconds). -# Only works if DebugLevel set to 3 or 4. -# 0 - don't log slow queries. -# -# Mandatory: no -# Range: 1-3600000 -# Default: -# LogSlowQueries=0 - -LogSlowQueries=3000 - -### Option: TmpDir -# Temporary directory. -# -# Mandatory: no -# Default: -# TmpDir=/tmp - -### Option: AllowRoot -# Allow the proxy to run as 'root'. If disabled and the proxy is started by 'root', the proxy -# will try to switch to the user specified by the User configuration option instead. -# Has no effect if started under a regular user. -# 0 - do not allow -# 1 - allow -# -# Mandatory: no -# Default: -# AllowRoot=0 - -### Option: User -# Drop privileges to a specific, existing user on the system. -# Only has effect if run as 'root' and AllowRoot is disabled. -# -# Mandatory: no -# Default: -# User=zabbix - -### Option: Include -# You may include individual files or all files in a directory in the configuration file. -# Installing Zabbix will create include directory in /usr/local/etc, unless modified during the compile time. -# -# Mandatory: no -# Default: -# Include= - -# Include=/usr/local/etc/zabbix_proxy.general.conf -# Include=/usr/local/etc/zabbix_proxy.conf.d/ -# Include=/usr/local/etc/zabbix_proxy.conf.d/*.conf - -### Option: SSLCertLocation -# Location of SSL client certificates. -# This parameter is used only in web monitoring. -# -# Mandatory: no -# Default: -# SSLCertLocation=${datadir}/zabbix/ssl/certs - -### Option: SSLKeyLocation -# Location of private keys for SSL client certificates. -# This parameter is used only in web monitoring. -# -# Mandatory: no -# Default: -# SSLKeyLocation=${datadir}/zabbix/ssl/keys - -### Option: SSLCALocation -# Location of certificate authority (CA) files for SSL server certificate verification. -# If not set, system-wide directory will be used. -# This parameter is used only in web monitoring. -# -# Mandatory: no -# Default: -# SSLCALocation= - -####### LOADABLE MODULES ####### - -### Option: LoadModulePath -# Full path to location of proxy modules. -# Default depends on compilation options. -# -# Mandatory: no -# Default: -# LoadModulePath=${libdir}/modules - -### Option: LoadModule -# Module to load at proxy startup. Modules are used to extend functionality of the proxy. -# Format: LoadModule= -# The modules must be located in directory specified by LoadModulePath. -# It is allowed to include multiple LoadModule parameters. -# -# Mandatory: no -# Default: -# LoadModule= - -####### TLS-RELATED PARAMETERS ####### - -### Option: TLSConnect -# How the proxy should connect to Zabbix server. Used for an active proxy, ignored on a passive proxy. -# Only one value can be specified: -# unencrypted - connect without encryption -# psk - connect using TLS and a pre-shared key -# cert - connect using TLS and a certificate -# -# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection) -# Default: -# TLSConnect=unencrypted - -### Option: TLSAccept -# What incoming connections to accept from Zabbix server. Used for a passive proxy, ignored on an active proxy. -# Multiple values can be specified, separated by comma: -# unencrypted - accept connections without encryption -# psk - accept connections secured with TLS and a pre-shared key -# cert - accept connections secured with TLS and a certificate -# -# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection) -# Default: -# TLSAccept=unencrypted - -### Option: TLSCAFile -# Full pathname of a file containing the top-level CA(s) certificates for -# peer certificate verification. -# -# Mandatory: no -# Default: -# TLSCAFile= - -### Option: TLSCRLFile -# Full pathname of a file containing revoked certificates. -# -# Mandatory: no -# Default: -# TLSCRLFile= - -### Option: TLSServerCertIssuer -# Allowed server certificate issuer. -# -# Mandatory: no -# Default: -# TLSServerCertIssuer= - -### Option: TLSServerCertSubject -# Allowed server certificate subject. -# -# Mandatory: no -# Default: -# TLSServerCertSubject= - -### Option: TLSCertFile -# Full pathname of a file containing the proxy certificate or certificate chain. -# -# Mandatory: no -# Default: -# TLSCertFile= - -### Option: TLSKeyFile -# Full pathname of a file containing the proxy private key. -# -# Mandatory: no -# Default: -# TLSKeyFile= - -### Option: TLSPSKIdentity -# Unique, case sensitive string used to identify the pre-shared key. -# -# Mandatory: no -# Default: -# TLSPSKIdentity= - -### Option: TLSPSKFile -# Full pathname of a file containing the pre-shared key. -# -# Mandatory: no -# Default: -# TLSPSKFile= - +<% +@params.each do |option, value| + if value.kind_of?(String) -%> +<%= "#{option}=#{value}" unless value.nil? %> +<% + elsif value.kind_of?(Array) + case option + when 'LoadModule', 'Include' + value.each do |line| -%> +<%= "#{option}=#{line}" unless line.nil? %> +<% + end + when 'ListenIP', 'Server', 'ServerActive', 'TLSAccept' %> +<%= "#{option}=#{value.join(',')}" unless value.nil? %> +<% + end + end +end +%> diff --git a/templates/zabbix/3.0/zabbix_server.conf.erb b/templates/zabbix/3.0/zabbix_server.conf.erb index d8c1eba..98e0cad 100644 --- a/templates/zabbix/3.0/zabbix_server.conf.erb +++ b/templates/zabbix/3.0/zabbix_server.conf.erb @@ -4,587 +4,19 @@ # To get more information about Zabbix, # visit http://www.zabbix.com -############ GENERAL PARAMETERS ################# - -### Option: ListenPort -# Listen port for trapper. -# -# Mandatory: no -# Range: 1024-32767 -# Default: -# ListenPort=10051 - -### Option: SourceIP -# Source IP address for outgoing connections. -# -# Mandatory: no -# Default: -# SourceIP= - -### Option: LogFile -# Name of log file. -# If not set, syslog is used. -# -# Mandatory: no -# Default: -# LogFile= - -LogFile=/var/log/zabbix/zabbix_server.log - -### Option: LogFileSize -# Maximum size of log file in MB. -# 0 - disable automatic log rotation. -# -# Mandatory: no -# Range: 0-1024 -# Default: -# LogFileSize=1 - -LogFileSize=0 - -### Option: DebugLevel -# Specifies debug level -# 0 - basic information about starting and stopping of Zabbix processes -# 1 - critical information -# 2 - error information -# 3 - warnings -# 4 - for debugging (produces lots of information) -# -# Mandatory: no -# Range: 0-4 -# Default: -# DebugLevel=3 - -### Option: PidFile -# Name of PID file. -# -# Mandatory: no -# Default: -# PidFile=/tmp/zabbix_server.pid - -PidFile=/var/run/zabbix/zabbix_server.pid - -### Option: DBHost -# Database host name. -# If set to localhost, socket is used for MySQL. -# If set to empty string, socket is used for PostgreSQL. -# -# Mandatory: no -# Default: - DBHost=localhost - -### Option: DBName -# Database name. -# For SQLite3 path to database file must be provided. DBUser and DBPassword are ignored. -# -# Mandatory: yes -# Default: -# DBName= - -DBName=<%= @credentials['database'] %> - -### Option: DBSchema -# Schema name. Used for IBM DB2 and PostgreSQL. -# -# Mandatory: no -# Default: -# DBSchema= - -### Option: DBUser -# Database user. Ignored for SQLite. -# -# Mandatory: no -# Default: -# DBUser= - -DBUser=<%= @credentials['username'] %> - -### Option: DBPassword -# Database password. Ignored for SQLite. -# Comment this line if no password is used. -# -# Mandatory: no -# Default: -DBPassword=<%= @credentials['password'] %> - -### Option: DBSocket -# Path to MySQL socket. -# -# Mandatory: no -# Default: -# DBSocket=/tmp/mysql.sock - -DBSocket=/var/lib/mysql/mysql.sock - -### Option: DBPort -# Database port when not using local socket. Ignored for SQLite. -# -# Mandatory: no -# Range: 1024-65535 -# Default (for MySQL): -# DBPort=3306 - -############ ADVANCED PARAMETERS ################ - -### Option: StartPollers -# Number of pre-forked instances of pollers. -# -# Mandatory: no -# Range: 0-1000 -# Default: -# StartPollers=5 - -### Option: StartIPMIPollers -# Number of pre-forked instances of IPMI pollers. -# -# Mandatory: no -# Range: 0-1000 -# Default: -# StartIPMIPollers=0 - -### Option: StartPollersUnreachable -# Number of pre-forked instances of pollers for unreachable hosts (including IPMI and Java). -# At least one poller for unreachable hosts must be running if regular, IPMI or Java pollers -# are started. -# -# Mandatory: no -# Range: 0-1000 -# Default: -# StartPollersUnreachable=1 - -### Option: StartTrappers -# Number of pre-forked instances of trappers. -# Trappers accept incoming connections from Zabbix sender, active agents and active proxies. -# At least one trapper process must be running to display server availability and view queue -# in the frontend. -# -# Mandatory: no -# Range: 0-1000 -# Default: -# StartTrappers=5 - -### Option: StartPingers -# Number of pre-forked instances of ICMP pingers. -# -# Mandatory: no -# Range: 0-1000 -# Default: -# StartPingers=1 - -### Option: StartDiscoverers -# Number of pre-forked instances of discoverers. -# -# Mandatory: no -# Range: 0-250 -# Default: -# StartDiscoverers=1 - -### Option: StartHTTPPollers -# Number of pre-forked instances of HTTP pollers. -# -# Mandatory: no -# Range: 0-1000 -# Default: -# StartHTTPPollers=1 - -### Option: StartTimers -# Number of pre-forked instances of timers. -# Timers process time-based trigger functions and maintenance periods. -# Only the first timer process handles the maintenance periods. -# -# Mandatory: no -# Range: 1-1000 -# Default: -# StartTimers=1 - -### Option: JavaGateway -# IP address (or hostname) of Zabbix Java gateway. -# Only required if Java pollers are started. -# -# Mandatory: no -# Default: -# JavaGateway= - -### Option: JavaGatewayPort -# Port that Zabbix Java gateway listens on. -# -# Mandatory: no -# Range: 1024-32767 -# Default: -# JavaGatewayPort=10052 - -### Option: StartJavaPollers -# Number of pre-forked instances of Java pollers. -# -# Mandatory: no -# Range: 0-1000 -# Default: -# StartJavaPollers=0 - -### Option: StartVMwareCollectors -# Number of pre-forked vmware collector instances. -# -# Mandatory: no -# Range: 0-250 -# Default: -# StartVMwareCollectors=0 - -### Option: VMwareFrequency -# How often Zabbix will connect to VMware service to obtain a new data. -# -# Mandatory: no -# Range: 10-86400 -# Default: -# VMwareFrequency=60 - -### Option: VMwarePerfFrequency -# How often Zabbix will connect to VMware service to obtain performance data. -# -# Mandatory: no -# Range: 10-86400 -# Default: -# VMwarePerfFrequency=60 - -### Option: VMwareCacheSize -# Size of VMware cache, in bytes. -# Shared memory size for storing VMware data. -# Only used if VMware collectors are started. -# -# Mandatory: no -# Range: 256K-2G -# Default: -# VMwareCacheSize=8M - -### Option: VMwareTimeout -# Specifies how many seconds vmware collector waits for response from VMware service. -# -# Mandatory: no -# Range: 1-300 -# Default: -# VMwareTimeout=10 - -### Option: SNMPTrapperFile -# Temporary file used for passing data from SNMP trap daemon to the server. -# Must be the same as in zabbix_trap_receiver.pl or SNMPTT configuration file. -# -# Mandatory: no -# Default: -# SNMPTrapperFile=/tmp/zabbix_traps.tmp - -SNMPTrapperFile=/var/log/snmptt/snmptt.log - -### Option: StartSNMPTrapper -# If 1, SNMP trapper process is started. -# -# Mandatory: no -# Range: 0-1 -# Default: -# StartSNMPTrapper=0 - -### Option: ListenIP -# List of comma delimited IP addresses that the trapper should listen on. -# Trapper will listen on all network interfaces if this parameter is missing. -# -# Mandatory: no -# Default: -# ListenIP=0.0.0.0 - -# ListenIP=127.0.0.1 - -### Option: HousekeepingFrequency -# How often Zabbix will perform housekeeping procedure (in hours). -# Housekeeping is removing outdated information from the database. -# To prevent Housekeeper from being overloaded, no more than 4 times HousekeepingFrequency -# hours of outdated information are deleted in one housekeeping cycle, for each item. -# To lower load on server startup housekeeping is postponed for 30 minutes after server start. -# -# Mandatory: no -# Range: 1-24 -# Default: -# HousekeepingFrequency=1 - -### Option: MaxHousekeeperDelete -# The table "housekeeper" contains "tasks" for housekeeping procedure in the format: -# [housekeeperid], [tablename], [field], [value]. -# No more than 'MaxHousekeeperDelete' rows (corresponding to [tablename], [field], [value]) -# will be deleted per one task in one housekeeping cycle. -# SQLite3 does not use this parameter, deletes all corresponding rows without a limit. -# If set to 0 then no limit is used at all. In this case you must know what you are doing! -# -# Mandatory: no -# Range: 0-1000000 -# Default: -# MaxHousekeeperDelete=500 - -### Option: SenderFrequency -# How often Zabbix will try to send unsent alerts (in seconds). -# -# Mandatory: no -# Range: 5-3600 -# Default: -# SenderFrequency=30 - -### Option: CacheSize -# Size of configuration cache, in bytes. -# Shared memory size for storing host, item and trigger data. -# -# Mandatory: no -# Range: 128K-8G -# Default: -# CacheSize=8M - -### Option: CacheUpdateFrequency -# How often Zabbix will perform update of configuration cache, in seconds. -# -# Mandatory: no -# Range: 1-3600 -# Default: -# CacheUpdateFrequency=60 - -### Option: StartDBSyncers -# Number of pre-forked instances of DB Syncers -# -# Mandatory: no -# Range: 1-100 -# Default: -# StartDBSyncers=4 - -### Option: HistoryCacheSize -# Size of history cache, in bytes. -# Shared memory size for storing history data. -# -# Mandatory: no -# Range: 128K-2G -# Default: -# HistoryCacheSize=8M - -### Option: TrendCacheSize -# Size of trend cache, in bytes. -# Shared memory size for storing trends data. -# -# Mandatory: no -# Range: 128K-2G -# Default: -# TrendCacheSize=4M - -### Option: HistoryTextCacheSize -# Size of text history cache, in bytes. -# Shared memory size for storing character, text or log history data. -# -# Mandatory: no -# Range: 128K-2G -# Default: -# HistoryTextCacheSize=16M - -### Option: ValueCacheSize -# Size of history value cache, in bytes. -# Shared memory size for caching item history data requests. -# Setting to 0 disables value cache. -# -# Mandatory: no -# Range: 0,128K-64G -# Default: -# ValueCacheSize=8M - -### Option: Timeout -# Specifies how long we wait for agent, SNMP device or external check (in seconds). -# -# Mandatory: no -# Range: 1-30 -# Default: -# Timeout=3 - -### Option: TrapperTimeout -# Specifies how many seconds trapper may spend processing new data. -# -# Mandatory: no -# Range: 1-300 -# Default: -# TrapperTimeout=300 - -### Option: UnreachablePeriod -# After how many seconds of unreachability treat a host as unavailable. -# -# Mandatory: no -# Range: 1-3600 -# Default: -# UnreachablePeriod=45 - -### Option: UnavailableDelay -# How often host is checked for availability during the unavailability period, in seconds. -# -# Mandatory: no -# Range: 1-3600 -# Default: -# UnavailableDelay=60 - -### Option: UnreachableDelay -# How often host is checked for availability during the unreachability period, in seconds. -# -# Mandatory: no -# Range: 1-3600 -# Default: -# UnreachableDelay=15 - -### Option: AlertScriptsPath -# Full path to location of custom alert scripts. -# Default depends on compilation options. -# -# Mandatory: no -# Default: -# AlertScriptsPath=${datadir}/zabbix/alertscripts - -AlertScriptsPath=/usr/lib/zabbix/alertscripts - -### Option: ExternalScripts -# Full path to location of external scripts. -# Default depends on compilation options. -# -# Mandatory: no -# Default: -# ExternalScripts=${datadir}/zabbix/externalscripts - -ExternalScripts=/usr/lib/zabbix/externalscripts - -### Option: FpingLocation -# Location of fping. -# Make sure that fping binary has root ownership and SUID flag set. -# -# Mandatory: no -# Default: -# FpingLocation=/usr/sbin/fping - -### Option: Fping6Location -# Location of fping6. -# Make sure that fping6 binary has root ownership and SUID flag set. -# Make empty if your fping utility is capable to process IPv6 addresses. -# -# Mandatory: no -# Default: -# Fping6Location=/usr/sbin/fping6 - -### Option: SSHKeyLocation -# Location of public and private keys for SSH checks and actions. -# -# Mandatory: no -# Default: -# SSHKeyLocation= - -### Option: LogSlowQueries -# How long a database query may take before being logged (in milliseconds). -# Only works if DebugLevel set to 3 or 4. -# 0 - don't log slow queries. -# -# Mandatory: no -# Range: 1-3600000 -# Default: -# LogSlowQueries=0 - -### Option: TmpDir -# Temporary directory. -# -# Mandatory: no -# Default: -# TmpDir=/tmp - -### Option: StartProxyPollers -# Number of pre-forked instances of pollers for passive proxies. -# -# Mandatory: no -# Range: 0-250 -# Default: -# StartProxyPollers=1 - -### Option: ProxyConfigFrequency -# How often Zabbix Server sends configuration data to a Zabbix Proxy in seconds. -# This parameter is used only for proxies in the passive mode. -# -# Mandatory: no -# Range: 1-3600*24*7 -# Default: -# ProxyConfigFrequency=3600 - -### Option: ProxyDataFrequency -# How often Zabbix Server requests history data from a Zabbix Proxy in seconds. -# This parameter is used only for proxies in the passive mode. -# -# Mandatory: no -# Range: 1-3600 -# Default: -# ProxyDataFrequency=1 - -### Option: AllowRoot -# Allow the server to run as 'root'. If disabled and the server is started by 'root', the server -# will try to switch to the user specified by the User configuration option instead. -# Has no effect if started under a regular user. -# 0 - do not allow -# 1 - allow -# -# Mandatory: no -# Default: -# AllowRoot=0 - -### Option: User -# Drop privileges to a specific, existing user on the system. -# Only has effect if run as 'root' and AllowRoot is disabled. -# -# Mandatory: no -# Default: -# User=zabbix - -### Option: Include -# You may include individual files or all files in a directory in the configuration file. -# Installing Zabbix will create include directory in /usr/local/etc, unless modified during the compile time. -# -# Mandatory: no -# Default: -# Include= - -# Include=/usr/local/etc/zabbix_server.general.conf -# Include=/usr/local/etc/zabbix_server.conf.d/ -# Include=/usr/local/etc/zabbix_server.conf.d/*.conf - -### Option: SSLCertLocation -# Location of SSL client certificates. -# This parameter is used only in web monitoring. -# -# Mandatory: no -# Default: -# SSLCertLocation=${datadir}/zabbix/ssl/certs - -### Option: SSLKeyLocation -# Location of private keys for SSL client certificates. -# This parameter is used only in web monitoring. -# -# Mandatory: no -# Default: -# SSLKeyLocation=${datadir}/zabbix/ssl/keys - -### Option: SSLCALocation -# Override the location of certificate authority (CA) files for SSL server certificate verification. -# If not set, system-wide directory will be used. -# This parameter is used only in web monitoring. -# -# Mandatory: no -# Default: -# SSLCALocation= - -####### LOADABLE MODULES ####### - -### Option: LoadModulePath -# Full path to location of server modules. -# Default depends on compilation options. -# -# Mandatory: no -# Default: -# LoadModulePath=${libdir}/modules - -### Option: LoadModule -# Module to load at server startup. Modules are used to extend functionality of the server. -# Format: LoadModule= -# The modules must be located in directory specified by LoadModulePath. -# It is allowed to include multiple LoadModule parameters. -# -# Mandatory: no -# Default: -# LoadModule= +<% +@params.each do |option, value| + if value.kind_of?(String) -%> +<%= "#{option}=#{value}" unless value.nil? %> +<% + elsif value.kind_of?(Array) + case option + when 'LoadModule', 'Include' + value.each do |line| -%> +<%= "#{option}=#{line}" unless line.nil? %> +<% + end + end + end +end +%>