Skip to content

Commit

Permalink
Prepare for env variable usage on Windows containers
Browse files Browse the repository at this point in the history
  • Loading branch information
dotneft committed Dec 27, 2024
1 parent 785274d commit ec8a681
Show file tree
Hide file tree
Showing 24 changed files with 595 additions and 4 deletions.
3 changes: 2 additions & 1 deletion Dockerfiles/build-mysql/windows/Dockerfile.agent
Original file line number Diff line number Diff line change
Expand Up @@ -73,5 +73,6 @@ RUN Set-Location -Path $env:SystemDrive\.; `
Copy-Item -Path $env:ZBX_SOURCES_DIR\bin\win64\zabbix_agentd.exe $env:ZBX_OUTPUT_DIR\sbin; `
Copy-Item -Path $env:ZBX_SOURCES_DIR\bin\win64\zabbix_get.exe $env:ZBX_OUTPUT_DIR\bin; `
Copy-Item -Path $env:ZBX_SOURCES_DIR\bin\win64\zabbix_sender.exe $env:ZBX_OUTPUT_DIR\bin; `
Copy-Item -Path $env:ZBX_SOURCES_DIR\conf\zabbix_agentd.win.conf $env:ZBX_OUTPUT_DIR\conf\zabbix_agentd.conf; `
Copy-Item -Path $env:ZBX_SOURCES_DIR\conf\zabbix_agentd.win.conf $env:ZBX_OUTPUT_DIR\conf\zabbix_agentd.conf_template; `
Copy-Item -Recurse -Path $env:SystemDrive\config_templates\agent $env:ZBX_OUTPUT_DIR\conf\; `
Write-Host 'Zabbix binaries are compiled...';
8 changes: 5 additions & 3 deletions Dockerfiles/build-mysql/windows/Dockerfile.agent2
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,9 @@ LABEL org.opencontainers.image.title="Zabbix agent 2 build (Windows)" `
org.opencontainers.image.version="${ZBX_VERSION}" `
org.opencontainers.image.source="${ZBX_SOURCES}"

RUN --mount=from=config_templates,target=/tmp/conf \
Set-Location -Path $env:SystemDrive\.; `
ADD config_templates C:\

RUN Set-Location -Path $env:SystemDrive\.; `
`
New-Item -ItemType directory -Path $env:ZBX_SOURCES_DIR | Out-Null; `
New-Item -ItemType directory -Path $env:ZBX_OUTPUT_DIR | Out-Null; `
Expand Down Expand Up @@ -73,8 +74,9 @@ RUN --mount=from=config_templates,target=/tmp/conf \
dumpbin /dependents $env:ZBX_SOURCES_DIR\bin\win64\zabbix_agent2.exe; `
`
Copy-Item -Path $env:ZBX_SOURCES_DIR\bin\win64\zabbix_agent2.exe $env:ZBX_OUTPUT_DIR\sbin; `
Copy-Item -Path $env:ZBX_SOURCES_DIR\src\go\conf\zabbix_agent2.win.conf $env:ZBX_OUTPUT_DIR\conf\zabbix_agent2.conf; `
Copy-Item -Path $env:ZBX_SOURCES_DIR\src\go\conf\zabbix_agent2.win.conf $env:ZBX_OUTPUT_DIR\conf\zabbix_agent2.conf_template; `
Copy-Item -Recurse -Path $env:ZBX_SOURCES_DIR\src\go\conf\zabbix_agent2.d $env:ZBX_OUTPUT_DIR\conf\zabbix_agent2.d; `
Copy-Item -Recurse -Path $env:SystemDrive\config_templates\agent2 $env:ZBX_OUTPUT_DIR\conf; `
mingw32-make -s clean; `
`
Write-Host ('Building Zabbix MongoDB plugin {0} version ...' -f $env:MONGODB_PLUGIN_VERSION); `
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# This is a configuration file for Zabbix agent 2 (Windows)
# To get more information about Zabbix, visit https://www.zabbix.com

### 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=c:\zabbix\zabbix_agent2.userparams.conf
# Include=c:\zabbix\zabbix_agent2.conf.d\
# Include=c:\zabbix\zabbix_agent2.conf.d\*.conf

Include=C:\zabbix\conf\zabbix_agent2_active_checks.conf
Include=C:\zabbix\conf\zabbix_agent2_aliases.conf
Include=C:\zabbix\conf\zabbix_agent2_item_keys.conf
Include=C:\zabbix\conf\zabbix_agent2_locations.conf
Include=C:\zabbix\conf\zabbix_agent2_logging.conf
Include=C:\zabbix\conf\zabbix_agent2_network.conf
Include=C:\zabbix\conf\zabbix_agent2_passive_checks.conf
Include=C:\zabbix\conf\zabbix_agent2_timeouts.conf
Include=C:\zabbix\conf\zabbix_agent2_tls.conf
Include=C:\zabbix\conf\zabbix_agent2_user_parameters.conf

Include=C:\zabbix\conf\zabbix_agentd.d\*.conf
Include=C:\zabbix\conf\zabbix_agent2.d\*.conf

####### PLUGIN-SPECIFIC PARAMETERS #######

### Option: Plugins
# A plugin can have one or more plugin specific configuration parameters in format:
# Plugins.<PluginName>.<Parameter1>=<value1>
# Plugins.<PluginName>.<Parameter2>=<value2>
#
# Mandatory: no
# Range:
# Default:

# Include configuration files for plugins

Include=C:\zabbix\conf\zabbix_agent2.d\plugins.d\*.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,213 @@
##### Active checks related

### Option: ServerActive
# Zabbix server/proxy address or cluster configuration to get active checks from.
# Server/proxy address is IP address or DNS name and optional port separated by colon.
# Cluster configuration is one or more server addresses separated by semicolon.
# Multiple Zabbix servers/clusters and Zabbix proxies can be specified, separated by comma.
# More than one Zabbix proxy should not be specified from each Zabbix server/cluster.
# If Zabbix proxy is specified then Zabbix server/cluster for that proxy should not be specified.
# Multiple comma-delimited addresses can be provided to use several independent Zabbix servers in parallel. Spaces are allowed.
# 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 for Zabbix proxy:
# ServerActive=127.0.0.1:10051
# Example for multiple servers:
# ServerActive=127.0.0.1:20051,zabbix.domain,[::1]:30051,::1,[12fc::1]
# Example for high availability:
# ServerActive=zabbix.cluster.node1;zabbix.cluster.node2:20051;zabbix.cluster.node3
# Example for high availability with two clusters and one server:
# ServerActive=zabbix.cluster.node1;zabbix.cluster.node2:20051,zabbix.cluster2.node1;zabbix.cluster2.node2,zabbix.domain
#
# Mandatory: no
# Default:
# ServerActive=

ServerActive=${ZBX_ACTIVESERVERS}

### Option: Hostname
# List of comma delimited unique, case sensitive hostnames.
# Required for active checks and must match hostnames as configured on the server.
# Value is acquired from HostnameItem if undefined.
#
# Mandatory: no
# Default:
# Hostname=

Hostname=${ZBX_HOSTNAME}

### 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

HostnameItem=${ZBX_HOSTNAMEITEM}

### 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 2034 bytes.
# If not defined, value will be acquired from HostMetadataItem.
#
# Mandatory: no
# Range: 0-2034 bytes
# Default:
# HostMetadata=

HostMetadata=${ZBX_METADATA}

### 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 65535 characters.
# This option is only used when HostMetadata is not defined.
#
# Mandatory: no
# Default:
# HostMetadataItem=

HostMetadataItem=${ZBX_METADATAITEM}

### Option: HostInterface
# Optional parameter that defines host interface.
# Host interface 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 HostInterfaceItem.
#
# Mandatory: no
# Range: 0-255 characters
# Default:
# HostInterface=

HostInterface=${ZBX_HOSTINTERFACE}

### Option: HostInterfaceItem
# Optional parameter that defines an item used for getting host interface.
# Host interface 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 HostInterface is not defined.
#
# Mandatory: no
# Default:
# HostInterfaceItem=

HostInterfaceItem=${ZBX_HOSTINTERFACEITEM}

### Option: RefreshActiveChecks
# How often list of active checks is refreshed, in seconds.
#
# Mandatory: no
# Range: 1-86400
# Default:
# RefreshActiveChecks=5

RefreshActiveChecks=${ZBX_REFRESHACTIVECHECKS}

### Option: BufferSend
# Do not keep data longer than N seconds in buffer.
#
# Mandatory: no
# Range: 1-3600
# Default:
# BufferSend=5

BufferSend=${ZBX_BUFFERSEND}

### 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=1000

BufferSize=${ZBX_BUFFERSIZE}

### Option: EnablePersistentBuffer
# Enable usage of local persistent storage for active items.
# 0 - disabled, in-memory buffer is used (default); 1 - use persistent buffer
# Mandatory: no
# Range: 0-1
# Default:
# EnablePersistentBuffer=0

EnablePersistentBuffer=${ZBX_ENABLEPERSISTENTBUFFER}

### Option: PersistentBufferPeriod
# Zabbix Agent2 will keep data for this time period in case of no
# connectivity with Zabbix server or proxy. Older data will be lost. Log data will be preserved.
# Option is valid if EnablePersistentBuffer=1
#
# Mandatory: no
# Range: 1m-365d
# Default:
# PersistentBufferPeriod=1h

PersistentBufferPeriod=${ZBX_PERSISTENTBUFFERPERIOD}

### Option: PersistentBufferFile
# Full filename. Zabbix Agent2 will keep SQLite database in this file.
# Option is valid if EnablePersistentBuffer=1
#
# Mandatory: no
# Default:
# PersistentBufferFile=

PersistentBufferFile=${ZBX_PERSISTENTBUFFERFILE}

### Option: Plugins.Log.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:
# Plugins.Log.MaxLinesPerSecond=20

Plugins.Log.MaxLinesPerSecond=${ZBX_MAXLINESPERSECOND}

### Option: Plugins.WindowsEventlog.MaxLinesPerSecond
# Maximum number of new lines the agent will send per second to Zabbix Server
# or Proxy processing 'eventlog' checks.
# The provided value will be overridden by the parameter 'maxlines',
# provided in 'eventlog' item keys.
#
# Mandatory: no
# Range: 1-1000
# Default:
# Plugins.WindowsEventlog.MaxLinesPerSecond=20

Plugins.WindowsEventlog.MaxLinesPerSecond=${ZBX_EVENTLOGMAXLINESPERSECOND}

### Option: HeartbeatFrequency
# Frequency of heartbeat messages in seconds.
# Used for monitoring availability of active checks.
# 0 - heartbeat messages disabled.
#
# Mandatory: no
# Range: 0-3600
# Default: 60
# HeartbeatFrequency=

HeartbeatFrequency=${ZBX_HEARTBEAT_FREQUENCY}

### Option: ForceActiveChecksOnStart
# Perform active checks immediately after restart for first received configuration.
# Also available as per plugin configuration, example: Plugins.Uptime.System.ForceActiveChecksOnStart=1
#
# Mandatory: no
# Range: 0-1
# Default:
# ForceActiveChecksOnStart=0

ForceActiveChecksOnStart=${ZBX_FORCEACTIVECHECKSONSTART}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
### 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:
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
### Option: AllowKey
# Allow execution of item keys matching pattern.
# Multiple keys matching rules may be defined in combination with DenyKey.
# Key pattern is wildcard expression, which support "*" character to match any number of any characters in certain position. It might be used in both key name and key arguments.
# Parameters are processed one by one according their appearance order.
# If no AllowKey or DenyKey rules defined, all keys are allowed.
#
# Mandatory: no

### Option: DenyKey
# Deny execution of items keys matching pattern.
# Multiple keys matching rules may be defined in combination with AllowKey.
# Key pattern is wildcard expression, which support "*" character to match any number of any characters in certain position. It might be used in both key name and key arguments.
# Parameters are processed one by one according their appearance order.
# If no AllowKey or DenyKey rules defined, all keys are allowed.
# Unless another system.run[*] rule is specified DenyKey=system.run[*] is added by default.
#
# Mandatory: no
# Default:
# DenyKey=system.run[*]
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
### Option:PluginSocket
# Path to unix socket for external plugin communications.
#
# Mandatory: no
# Default:\\.\pipe\agent.plugin.sock
# PluginSocket=

PluginSocket=\\.\pipe\agent.plugin.sock

### Option: ControlSocket
# The control socket, used to send runtime commands with '-R' option.
#
# Mandatory: no
# Default:
# ControlSocket=

ControlSocket=\\.\pipe\agent.sock
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
### 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

LogType=console

### 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

DebugLevel=${ZBX_DEBUGLEVEL}

### Option: Plugins.SystemRun.LogRemoteCommands
# Enable logging of executed shell commands as warnings.
# 0 - disabled
# 1 - enabled
#
# Mandatory: no
# Default:
# Plugins.SystemRun.LogRemoteCommands=0

Plugins.SystemRun.LogRemoteCommands=${ZBX_LOGREMOTECOMMANDS}
Loading

0 comments on commit ec8a681

Please sign in to comment.