This section describes the differences between the Zabbix agent and the Zabbix agent 2.
|Parameter||Zabbix agent||Zabbix agent 2|
|Programming language||C||Go with some parts in C|
|Daemonization||yes||by systemd only (yes on Windows)|
|Supported extensions||Custom loadable modules in C.||Custom plugins in Go.|
|Supported platforms||Linux, IBM AIX, FreeBSD, NetBSD, OpenBSD, HP-UX, Mac OS X, Solaris: 9, 10, 11, Windows: all desktop and server versions since XP||Linux, Windows: all desktop and server versions since XP.|
|Supported crypto libraries||GnuTLS 3.1.18 and newer
OpenSSL 1.0.1, 1.0.2, 1.1.0, 1.1.1
LibreSSL - tested with versions 2.7.4, 2.8.2 (certain limitations apply, see the Encryption page for details).
|Linux: OpenSSL 1.0.1 and later is supported since Zabbix 4.4.8.
MS Windows: OpenSSL 1.1.1 or later.
The OpenSSL library must have PSK support enabled. LibreSSL is not supported.
|Processes||A separate active check process for each server/proxy record.||Single process with automatically created threads.
The maximum number of threads is determined by the GOMAXPROCS environment variable.
|Metrics||UNIX: see a list of supported items.
Windows: see a list of additional Windows-specific items.
|UNIX: All metrics supported by Zabbix agent.
Additionally, the agent 2 provides Zabbix-native monitoring solution for: Docker, Memcached, MySQL, PostgreSQL, Redis, systemd, and other monitoring targets - see a full list of agent 2 specific items.
Windows: All metrics supported by Zabbix agent, and also net.tcp.service* checks of HTTPS, LDAP.
Additionally, the agent 2 provides Zabbix-native monitoring solution for: PostgreSQL, Redis.
|Concurrency||Active checks for single server are executed sequentially.||Checks from different plugins or multiple checks within one plugin can be executed concurrently.|
|Scheduled/flexible intervals||Supported for passive checks only.||Supported for passive and active checks.|
|Third party traps||no||yes|
|Timeout settings||Defined on an agent level only.||Plugin timeout can override the timeout defined on an agent level.|
|Changes user at runtime||yes (Unix-like systems only)||no (controlled by systemd)|