From 89603a9f2e0de02d181b11ec1f87dd223d817408 Mon Sep 17 00:00:00 2001
From: Alain Takoudjou <talino@tiolive.com>
Date: Mon, 7 Apr 2014 10:26:43 +0200
Subject: [PATCH] Zabbix server software release

---
 software/zabbix-server/apache.conf.in         |  65 +++
 software/zabbix-server/database.sh.in         |  19 +
 software/zabbix-server/instance-zabbix.cfg.in |  84 +++
 software/zabbix-server/scripts/svcdaemon.py   |  69 +++
 software/zabbix-server/software.cfg           |  65 +++
 software/zabbix-server/zabbix.conf.php.in     |  19 +
 software/zabbix-server/zabbix_server.conf.in  | 480 ++++++++++++++++++
 7 files changed, 801 insertions(+)
 create mode 100644 software/zabbix-server/apache.conf.in
 create mode 100644 software/zabbix-server/database.sh.in
 create mode 100644 software/zabbix-server/instance-zabbix.cfg.in
 create mode 100644 software/zabbix-server/scripts/svcdaemon.py
 create mode 100644 software/zabbix-server/software.cfg
 create mode 100644 software/zabbix-server/zabbix.conf.php.in
 create mode 100644 software/zabbix-server/zabbix_server.conf.in

diff --git a/software/zabbix-server/apache.conf.in b/software/zabbix-server/apache.conf.in
new file mode 100644
index 000000000..3ff0d0e6a
--- /dev/null
+++ b/software/zabbix-server/apache.conf.in
@@ -0,0 +1,65 @@
+# Apache static configuration
+# Automatically generated
+
+# Basic server configuration
+PidFile "${:pid_file}"
+Listen ${:ipv6}:${:port}
+PHPINIDir ${:php_ini_dir}
+ServerAdmin someone@email
+DefaultType text/plain
+TypesConfig conf/mime.types
+AddType application/x-compress .Z
+AddType application/x-gzip .gz .tgz
+AddType application/x-httpd-php .php .phtml .php5 .php4
+AddType application/x-httpd-php-source .phps
+
+# Log configuration
+ErrorLog "${:error_log}"
+LogLevel warn
+LogFormat "%h %{REMOTE_USER}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
+LogFormat "%h %{REMOTE_USER}i %l %u %t \"%r\" %>s %b" common
+CustomLog "${:access_log}" common
+
+# Directory protection
+<Directory />
+    Options FollowSymLinks
+    AllowOverride None
+    Require all denied
+</Directory>
+
+<Directory ${:document_root}>
+  Options FollowSymLinks
+  AllowOverride All
+  Require all granted
+</Directory>
+DocumentRoot ${:document_root}
+DirectoryIndex index.html index.php
+
+#Update PHP.INI
+
+php_value include_path ".:${:php_lib_path}"
+php_value upload_max_filesize 16M
+php_value post_max_size 16M
+php_value max_execution_time 300
+php_value max_input_time 300
+php_value output_buffering none
+
+# List of modules
+LoadModule unixd_module modules/mod_unixd.so
+LoadModule access_compat_module modules/mod_access_compat.so
+LoadModule authz_core_module modules/mod_authz_core.so
+LoadModule authz_host_module modules/mod_authz_host.so
+LoadModule log_config_module modules/mod_log_config.so
+LoadModule setenvif_module modules/mod_setenvif.so
+LoadModule version_module modules/mod_version.so
+LoadModule proxy_module modules/mod_proxy.so
+LoadModule proxy_http_module modules/mod_proxy_http.so
+LoadModule mime_module modules/mod_mime.so
+LoadModule dav_module modules/mod_dav.so
+LoadModule dav_fs_module modules/mod_dav_fs.so
+LoadModule negotiation_module modules/mod_negotiation.so
+LoadModule rewrite_module modules/mod_rewrite.so
+LoadModule headers_module modules/mod_headers.so
+LoadModule dir_module modules/mod_dir.so
+LoadModule php5_module modules/libphp5.so
+LoadModule alias_module modules/mod_alias.so
\ No newline at end of file
diff --git a/software/zabbix-server/database.sh.in b/software/zabbix-server/database.sh.in
new file mode 100644
index 000000000..dde88ade3
--- /dev/null
+++ b/software/zabbix-server/database.sh.in
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+if [ -f "${:installed_file}" ]
+then
+    echo "Database is configured. Exiting...";
+    exit 0;
+fi
+sleep 60
+
+echo "Installing file schema.sql..."
+cat ${:mysql_schema} | ${:mysql_bin} -h${:mysql_host} -P${:mysql_port} -u${:mysql_user} -p${:mysql_pwd} ${:mysql_db}
+echo "Installing file images.sql..."
+cat ${:mysql_images} | ${:mysql_bin} -h${:mysql_host} -P${:mysql_port} -u${:mysql_user} -p${:mysql_pwd} ${:mysql_db}
+echo "Installing file data.sql..."
+cat ${:mysql_data} | ${:mysql_bin} -h${:mysql_host} -P${:mysql_port} -u${:mysql_user} -p${:mysql_pwd} ${:mysql_db}
+
+echo "installed" > ${:installed_file}
+
+exit 0
\ No newline at end of file
diff --git a/software/zabbix-server/instance-zabbix.cfg.in b/software/zabbix-server/instance-zabbix.cfg.in
new file mode 100644
index 000000000..b45ac721d
--- /dev/null
+++ b/software/zabbix-server/instance-zabbix.cfg.in
@@ -0,0 +1,84 @@
+[buildout]
+
+eggs-directory = ${buildout:eggs-directory}
+develop-eggs-directory = ${buildout:develop-eggs-directory}
+offline = true
+
+[httpd-conf]
+recipe = slapos.recipe.template
+url = ${template-httpd-conf:location}/${template-httpd-conf:filename}
+output = $${rootdirectory:etc}/apache.conf
+mode = 0600
+
+document_root = $${directory:www}
+pid_file = $${basedirectory:run}/apache.pid
+lock_file = $${basedirectory:run}/apache.lock
+ipv6 = $${apache-network-configuration:listening-ip}
+port = $${apache-network-configuration:listening-port}
+error_log = $${directory:httpd-log}/error.log
+access_log = $${directory:httpd-log}/access.log
+php_ini_dir = $${directory:php-ini-dir}
+php_lib_path = ${apache-php:location}/lib/php
+
+[zabbix-conf]
+recipe = slapos.recipe.template
+url = ${template-zabbix-conf:location}/${template-zabbix-conf:filename}
+output = $${rootdirectory:etc}/zabbix_server.conf
+mode = 0600
+
+log_file = $${basedirectory:log}/zabbix_server.log
+pid_file = $${basedirectory:run}/zabbix_server.pid
+ip = $${slap-network-information:global-ipv6}
+port = 10051
+mysql_user = $${apache-php:mysql-username}
+mysql_password = $${apache-php:mysql-password}
+mysql_db = $${apache-php:mysql-database}
+mysql_host = $${apache-php:mysql-host}
+mysql_port = $${apache-php:mysql-port}
+
+[install-zabbix-db]
+recipe = slapos.recipe.template
+url = ${template-zabbix-database:location}/${template-zabbix-database:filename}
+output = $${basedirectory:scripts}/prepare-database
+mode = 0700
+
+installed_file = $${buildout:directory}/.zabbix.db.installed
+mysql_bin = ${mariadb:location}/bin/mysql
+mysql_host = $${apache-php:mysql-host}
+mysql_db = $${apache-php:mysql-database}
+mysql_port = $${apache-php:mysql-port}
+mysql_user = $${apache-php:mysql-username}
+mysql_pwd = $${apache-php:mysql-password}
+mysql_schema = ${zabbix-server:compile-directory}/zabbix-${zabbix-server:version}/database/mysql/schema.sql
+mysql_data = ${zabbix-server:compile-directory}/zabbix-${zabbix-server:version}/database/mysql/data.sql
+mysql_images = ${zabbix-server:compile-directory}/zabbix-${zabbix-server:version}/database/mysql/images.sql
+
+#force to install other parts
+httpd-conf = $${httpd-conf:output}
+logrotate = $${logrotate-entry-zabbix:name}
+wrapper = $${zabbix:wrapper-path}
+
+[zabbix-wrapper]
+recipe = slapos.cookbook:wrapper
+zabbix-server = ${zabbix-server:location}/sbin/zabbix_server
+zabbix-conf = $${zabbix-conf:output}
+command-line = $${:zabbix-server} -c $${:zabbix-conf}
+wrapper-path = $${rootdirectory:bin}/zabbix_server_raw
+
+[zabbix]
+recipe = slapos.cookbook:wrapper
+script-file = ${zabbix-svcdeamon:location}/${zabbix-svcdeamon:filename}
+command-line = ${buildout:executable} $${:script-file} $${zabbix-wrapper:wrapper-path} $${zabbix-conf:pid_file} 10
+wrapper-path = $${basedirectory:services}/zabbix_server
+
+[logrotate-entry-zabbix]
+<= logrotate
+recipe = slapos.cookbook:logrotate.d
+name = zabbix_server
+log = $${zabbix-conf:log_file}
+frequency = daily
+rotate-num = 30
+sharedscripts = true
+notifempty = true
+create = true
+
diff --git a/software/zabbix-server/scripts/svcdaemon.py b/software/zabbix-server/scripts/svcdaemon.py
new file mode 100644
index 000000000..6df139992
--- /dev/null
+++ b/software/zabbix-server/scripts/svcdaemon.py
@@ -0,0 +1,69 @@
+import os
+import subprocess
+import time
+import signal
+import sys
+
+def get_pid(filename):
+  pid = None
+  if os.path.exists(filename):
+    data = open(pid_file).read()
+    try:
+      pid = int(data)
+    except ValueError:
+      pass
+  return pid
+
+pid_file = None
+def sig_handler(s, frame):
+  print "Killing on signal %s:" % s,
+  global pid_file
+  if pid_file is not None:
+    pid = get_pid(pid_file)
+    if pid is not None:
+      os.kill(pid, signal.SIGTERM)
+      try:
+        os.kill(pid, 0)
+      except Exception:
+        pass
+      else:
+        time.sleep(5)
+        try:
+          os.kill(pid, 0)
+        except Exception:
+          pass
+        else:
+          print 'with SIGKILL...',
+          os.kill(pid, signal.SIGKILL)
+    else:
+      raise ValueError('Pid is none.')
+  print 'done.'
+  sys.exit(0)
+
+signal.signal(signal.SIGINT, sig_handler)
+signal.signal(signal.SIGQUIT, sig_handler)
+signal.signal(signal.SIGTERM, sig_handler)
+
+
+def svcdaemon(args):
+  """Utility script to run daemons in supervisord"""
+  real_binary = args[0]
+  global pid_file
+  pid_file = args[1]
+  subprocess.check_call(real_binary)
+  print 'Started %r' % real_binary
+  while True:
+    time.sleep(5)
+    pid = get_pid(pid_file)
+    if pid is None:
+      raise ValueError('Pid is none')
+    os.kill(pid, 0)
+
+if __name__ == '__main__':
+  args = []
+  args.append(sys.argv[1])
+  args.append(sys.argv[2])
+  if len(sys.argv) > 3:
+    time.sleep(int(sys.argv[3]))
+  svcdaemon(args)
+  exit(0)
diff --git a/software/zabbix-server/software.cfg b/software/zabbix-server/software.cfg
new file mode 100644
index 000000000..a1d594f55
--- /dev/null
+++ b/software/zabbix-server/software.cfg
@@ -0,0 +1,65 @@
+[buildout]
+
+extends =
+  ../../component/zabbix/buildout.cfg
+  ../../stack/slapos.cfg
+  ../../stack/lamp/buildout.cfg
+
+parts +=
+  slapos-cookbook
+  zabbix-server
+  apache-php
+  instance-apache-php
+
+[zabbix-instances]
+recipe = slapos.recipe.template
+url = ${:_profile_base_location_}/instance-zabbix.cfg.in
+output = ${buildout:directory}/custom-apache-php.cfg
+#md5sum = 3e2d71d3684aac3e52d2f55794df96bf
+mode = 0644
+
+[custom-application-deployment]
+path = ${zabbix-instances:output}
+part-list = install-zabbix-db
+
+[application]
+recipe = plone.recipe.command
+command = echo "I've already downloaded package"
+update-command = 
+location = ${zabbix-server:compile-directory}/zabbix-${zabbix-server:version}/frontends/php
+
+[download-base]
+recipe = slapos.recipe.download
+location = ${buildout:parts-directory}/${:_buildout_section_name_}
+mode = 0644
+url = ${:_profile_base_location_}/${:filename}
+
+[application-template]
+<= download-base
+#md5sum = Student may put here md5sum of this file, this is good idea
+filename = zabbix.conf.php.in
+
+[template-zabbix-conf]
+<= download-base
+#md5sum = Student may put here md5sum of this file, this is good idea
+filename = zabbix_server.conf.in
+
+[template-httpd-conf]
+<= download-base
+#md5sum = Student may put here md5sum of this file, this is good idea
+filename = apache.conf.in
+
+[template-zabbix-database]
+<= download-base
+#md5sum = Student may put here md5sum of this file, this is good idea
+filename = database.sh.in
+
+[zabbix-svcdeamon]
+<= download-base
+#md5sum = Student may put here md5sum of this file, this is good idea
+url = ${:_profile_base_location_}/scripts/${:filename}
+filename = svcdaemon.py
+
+[application-configuration]
+location = conf/zabbix.conf.php
+
diff --git a/software/zabbix-server/zabbix.conf.php.in b/software/zabbix-server/zabbix.conf.php.in
new file mode 100644
index 000000000..1ab06d993
--- /dev/null
+++ b/software/zabbix-server/zabbix.conf.php.in
@@ -0,0 +1,19 @@
+<?php
+// Zabbix GUI configuration file
+global $DB;
+
+$DB["TYPE"]				= 'MYSQL';
+$DB["SERVER"]			= '%(mysql_host)s';
+$DB["PORT"]				= '0';
+$DB["DATABASE"]			= '%(mysql_database)s';
+$DB["USER"]				= '%(mysql_user)s';
+$DB["PASSWORD"]			= '%(mysql_password)s';
+// SCHEMA is relevant only for IBM_DB2 database
+$DB["SCHEMA"]			= '';
+
+$ZBX_SERVER				= '%(ip)s';
+$ZBX_SERVER_PORT		= '10051';
+$ZBX_SERVER_NAME		= '';
+
+$IMAGE_FORMAT_DEFAULT	= IMAGE_FORMAT_PNG;
+?>
diff --git a/software/zabbix-server/zabbix_server.conf.in b/software/zabbix-server/zabbix_server.conf.in
new file mode 100644
index 000000000..745a35e04
--- /dev/null
+++ b/software/zabbix-server/zabbix_server.conf.in
@@ -0,0 +1,480 @@
+# This is a configuration file for Zabbix Server process
+# To get more information about Zabbix,
+# visit http://www.zabbix.com
+
+############ GENERAL PARAMETERS #################
+
+### Option: NodeID
+#       Unique NodeID in distributed setup.
+#       0 - standalone server
+#
+# Mandatory: no
+# Range: 0-999
+# Default:
+# NodeID=0
+
+### Option: ListenPort
+#       Listen port for trapper.
+#
+# Mandatory: no
+# Range: 1024-32767
+# Default:
+ListenPort=${:port}
+
+### Option: SourceIP
+#       Source IP address for outgoing connections.
+#
+# Mandatory: no
+# Default:
+# SourceIP=
+SourceIP=${:ip}
+
+### Option: LogFile
+#       Name of log file.
+#       If not set, syslog is used.
+#
+# Mandatory: no
+# Default:
+# LogFile=
+
+LogFile=${:log_file}
+
+### Option: LogFileSize
+#       Maximum size of log file in MB.
+#       0 - disable automatic log rotation.
+#
+# Mandatory: no
+# Range: 0-1024
+# Default:
+LogFileSize=0
+
+### Option: DebugLevel
+#       Specifies debug level
+#       0 - no debug
+#       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=${:pid_file}
+
+### 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=${:mysql_host}
+
+### Option: DBName
+#       Database name.
+#       For SQLite3 path to database file must be provided. DBUser and DBPassword are ignored.
+#
+# Mandatory: yes
+# Default:
+# DBName=
+
+DBName=${:mysql_db}
+
+### Option: DBSchema
+#       Schema name. Used for IBM DB2.
+#
+# Mandatory: no
+# Default:
+# DBSchema=
+
+### Option: DBUser
+#       Database user. Ignored for SQLite.
+#
+# Mandatory: no
+# Default:
+# DBUser=
+
+DBUser=${:mysql_user}
+
+### Option: DBPassword
+#       Database password. Ignored for SQLite.
+#       Comment this line if no password is used.
+#
+# Mandatory: no
+# Default:
+# DBPassword=
+
+DBPassword=${:mysql_password}
+
+### 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
+# Range: 1024-65535
+# Default (for MySQL):
+DBPort=${:mysql_port}
+
+############ 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).
+#
+# 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, active proxies and child nodes.
+#       At least one trapper process must be running to display server availability 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: 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: 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
+
+### 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=${:ip}
+
+### Option: HousekeepingFrequency
+#       How often Zabbix will perform housekeeping procedure (in hours).
+#       Housekeeping is removing unnecessary information from history, alert, and alarms tables.
+#
+# 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: DisableHousekeeping
+#       If set to 1, disables housekeeping.
+#
+# Mandatory: no
+# Range: 0-1
+# Default:
+# DisableHousekeeping=0
+
+### 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-2G
+# 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: NodeNoEvents
+#       If set to '1' local events won't be sent to master node.
+#       This won't impact ability of this node to propagate events from its child nodes.
+#
+# Mandatory: no
+# Range: 0-1
+# Default:
+# NodeNoEvents=0
+
+### Option: NodeNoHistory
+#       If set to '1' local history won't be sent to master node.
+#       This won't impact ability of this node to propagate history from its child nodes.
+#
+# Mandatory: no
+# Range: 0-1
+# Default:
+# NodeNoHistory=0
+
+### 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
+
+### Option: ExternalScripts
+#       Full path to location of external scripts.
+#       Default depends on compilation options.
+#
+# Mandatory: no
+# Default:
+# ExternalScripts=$${datadir}/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: 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/
+
+### 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
-- 
2.30.9