2 要求

硬件

内存

Zabbix需要物理内存和磁盘memory。所需磁盘memory的大小显然取决于被监控的主机和参数数量。如果您计划长期保存监控参数的历史数据,应考虑预留至少几GB空间以确保数据库有足够存储历史数据的容量。每个Zabbix守护进程都需要与数据库服务器建立多个连接,连接所分配的memory量取决于数据库引擎的配置。

物理memory越多,数据库(进而Zabbix)运行速度越快。

CPU

Zabbix及其数据库可能需要大量CPU资源,具体取决于监控参数的数量和所选数据库引擎。

其他硬件

Zabbix中使用SMS通知支持需要串行通信端口和串行GSM调制解调器。USB转串口转换器也可使用。

硬件配置示例

该表格提供了基于Linux/BSD/Unix平台的硬件配置示例。

这些是初始参考的规模与硬件配置示例。每个Zabbix部署环境都具有独特性。 务必在预发布或开发环境中对Zabbix系统进行性能基准测试, 以便在将Zabbix部署至生产环境前充分理解实际需求。

部署规模 监控指标1 CPU/vCPU核心数 内存
(GiB)
数据库 Amazon EC22
小型 1 000 2 8 MySQL Server,
Percona Server,
mariadb Server,
PostgreSQL
m6i.large/m6g.large
中型 10 000 4 16 MySQL Server,
Percona Server,
mariadb Server,
PostgreSQL
m6i.xlarge/m6g.xlarge
大型 100 000 16 64 MySQL Server,
Percona Server,
mariadb Server,
PostgreSQL,
Oracle
m6i.4xlarge/m6g.4xlarge
超大型 1 000 000 32 96 MySQL Server,
Percona Server,
mariadb Server,
PostgreSQL,
Oracle
m6i.8xlarge/m6g.8xlarge

1 1个指标 = 1个监控项 + 1个触发器 + 1个图形
2 以Amazon通用型EC2实例为例(采用ARM64或x86_64架构),在Zabbix部署评估阶段应选择计算型/内存型/存储优化型等合适的实例类型,并通过生产环境前的测试验证。

实际配置很大程度上取决于活跃监控项的数量 及刷新频率(详见本页数据库容量章节)。 对于大型部署,强烈建议将数据库run到独立服务器上。

支持平台

出于安全要求和监控服务器的关键任务性质 UNIX是唯一能持续提供必要性能、容错能力和 弹性的操作系统。Zabbix运行在市场主流版本上。

Zabbix组件已在以下平台通过测试并可用:

平台 服务器 Agent Agent2
Linux x x x
IBM AIX x x -
FreeBSD x x -
NetBSD x x -
OpenBSD x x -
HP-UX x x -
Mac OS X x x -
Solaris x x -
Windows - x x

Zabbix server/agent也可能在其他类Unix操作系统上运行。 Zabbix agent支持自XP以来所有Windows桌面和服务器版本。

为防止Zabbix agent 2出现严重安全漏洞,其仅使用受支持的Goversion进行编译。从Go 1.21开始,minimum required Windows versions要求提高;因此自Zabbix 6.0.27起,Zabbix agent 2在Windows平台的最低version要求为Windows 10/Server 2016。

若编译时启用加密功能,Zabbix将禁用核心转储 若系统不允许禁用核心转储,则Zabbix不会启动。

所需软件

Zabbix围绕现代Web服务器、主流数据库引擎和PHP脚本语言构建。

第三方外部配套软件

若标注为必需项,则表示该软件/库是严格必需的。 可选项则用于支持某些特定功能。

软件 必需状态 支持版本 备注
MySQL/Percona One of 8.0.30-9.0.X 当MySQL(或Percona)作为Zabbix后端数据库时必需。需要InnoDB引擎。

新增支持的MySQL版本:
- 8.1(自Zabbix 6.0.21起);
- 8.2(自Zabbix 6.0.26起);
- 8.3(自Zabbix 6.0.27起);
- 8.4(自Zabbix 6.0.32起);
- 9.0(自Zabbix 6.0.33起)。

建议使用C API (libmysqlclient)库构建server/proxy。

对于MySQL 8.0.0-8.0.28版本,另见:mysqlmariadb可能的死锁
mariadb 10.5.00-12.0.X 需要InnoDB引擎。

推荐的version版本为11.4。

建议使用MariaDB Connector/C库构建server/proxy。

新增支持的mariadb版本:
- 10.7.X(自Zabbix 6.0.6起);
- 10.8.X(自Zabbix 6.0.7起);
- 10.9.X和10.10.X(自Zabbix 6.0.13起);
- 10.11.X(自Zabbix 6.0.15起);
- 11.0.X(自Zabbix 6.0.21起);
- 11.1.X(自Zabbix 6.0.23起);
- 11.2.X(自Zabbix 6.0.27起);
- 11.3.X(自Zabbix 6.0.29起);
- 11.4.X(自Zabbix 6.0.32起);
- 11.5.X(自Zabbix 6.0.34起);
- 12.0.X(自Zabbix 6.0.42起)。

另见:mysqlmariadb可能的死锁
Oracle 19c - 21c 当Oracle作为Zabbix后端数据库时必需。
PostgreSQL 13.0-17.X 当PostgreSQL作为Zabbix后端数据库时必需。
根据安装规模,可能需要增加PostgreSQL的work_mem配置参数(默认值为4MB),以确保数据库为特定操作分配的memory量充足,且query执行不会耗时过长。

新增支持的PostgreSQL版本:
- 15.X(自Zabbix 6.0.10起);
- 16.X(自Zabbix 6.0.23起);
- 17.X(自Zabbix 6.0.36起)。
TimescaleDB for PostgreSQL 2.1.0-2.21.X 当TimescaleDB作为PostgreSQL数据库扩展时必需。请确保安装支持压缩功能的TimescaleDB社区版。

注意:PostgreSQL 15自TimescaleDB 2.10起支持。
也可参考TimescaleDB documentation了解PostgreSQL与TimescaleDBversion兼容性的详细信息。

新增支持的TimescaleDB版本:
- 2.6(自Zabbix 6.0.7起);
- 2.7(自Zabbix 6.0.8起);
- 2.8(自Zabbix 6.0.10起);
- 2.9(自Zabbix 6.0.13起);
- 2.10(自Zabbix 6.0.15起);
- 2.11(自Zabbix 6.0.19起);
- 2.12(自Zabbix 6.0.24起);
- 2.13(自Zabbix 6.0.25起);
- 2.14(自Zabbix 6.0.28起);
- 2.15(自Zabbix 6.0.32起);
- 2.16(自Zabbix 6.0.34起);
- 2.17(自Zabbix 6.0.36起);
- 2.18(自Zabbix 6.0.39起);
- 2.19、2.20、2.21(自Zabbix 6.0.41起)。
SQLite Optional 3.3.5-3.34.X SQLite仅支持Zabbix proxies场景。当SQLite作为Zabbix proxy数据库时必需。
smartmontools 7.1或更高版本 Zabbix agent 2功能必需。
who 用户计数插件必需。
dpkg system.sw.packages插件必需。
pkgtool system.sw.packages插件必需。
rpm system.sw.packages插件必需。
pacman system.sw.packages插件必需。

尽管Zabbix可以使用操作系统自带的数据库, 但为了获得最佳体验,我们建议使用从数据库开发者官方仓库安装的数据库。

前端

Zabbix前端支持的最小屏幕宽度为1200px。

若标注为必需项,则表示该软件/库为严格必要组件。 可选组件用于支持某些特定功能。

软件 必需状态 版本 备注
Apache One of 2.4或更高
nginx 1.20或更高
PHP Yes 7.2.5或更高,8.0-8.3 建议使用PHP 7.4或更高版本。

新增支持的PHP版本:
- 8.0和8.1自Zabbix 6.0.6起;
- 8.2自Zabbix 6.0.14起;
- 8.3自Zabbix 6.0.26起。
PHP扩展:
gd Yes 2.0.28或更高 PHP GD扩展必须支持PNG图像(--with-png-dir)、JPEG(--with-jpeg-dir)图像和FreeType 2(--with-freetype-dir)。
为避免某些前端语言可能出现的文本重叠,可能需要2.3.0或更高版本。
bcmath php-bcmath(--enable-bcmath)
ctype php-ctype(--enable-ctype)
libXML 2.6.15或更高 php-xml(若由发行版作为独立包提供)。
xmlreader php-xmlreader(若由发行版作为独立包提供)。
xmlwriter php-xmlwriter(若由发行版作为独立包提供)。
session php-session(若由发行版作为独立包提供)。
sockets php-net-socket(--enable-sockets)。用户脚本支持所需。
mbstring php-mbstring(--enable-mbstring)
gettext php-gettext(--with-gettext)。翻译功能所需。
ldap No php-ldap。仅当前端使用LDAP认证时需要。
openssl php-openssl。仅当前端使用SAML认证时需要。
mysqli 当MySQL作为Zabbix后端数据库时必需。
oci8 当Oracle作为Zabbix后端数据库时必需。
pgsql 当PostgreSQL作为Zabbix后端数据库时必需。

Zabbix自带的第三方前端库:

必需状态 最低version 备注
jQuery JavaScript Library Yes 3.6.0 简化跨浏览器开发流程的JavaScript库。
jQuery UI 1.12.1 基于Top构建的用户界面交互、效果、部件和主题集合。
SAML PHP Toolkit 3.4.1 支持SAML 2.0认证登录Zabbix的PHP工具包。
Symfony Yaml Component 5.1.0 为YAML格式的export和import配置元素提供支持。

Zabbix也可运行于更早版本的Apache、MySQL、 Oracle和PostgreSQL。

对于非默认的DejaVu字体,可能需要PHP函数 imagerotate。 若缺失该函数,图表显示时这些字体可能渲染异常。 此函数仅在PHP编译时启用捆绑GD的情况下可用(Debian等发行版默认不启用)。

用于编写和调试Zabbix前端代码的第三方库:

必需状态 最低version 描述
Composer No 2.4.1 PHP应用级包管理器,提供管理PHP软件依赖关系的标准格式。
PHPUnit 8.5.29 用于测试Zabbix前端的PHP单元测试框架。
SASS 3.4.22 可编译为层叠样式表(CSS)的预处理脚本语言。
客户端网页浏览器

必须启用Cookies和JavaScript。

支持最新稳定版本的Google Chrome、Mozilla Firefox、Microsoft Edge、Apple Safari和Opera。

已实现IFrame的同源策略,这意味着Zabbix不能被放置在不同域的框架中。

尽管如此,如果放置在框架中的页面与Zabbix前端位于同一域,则放入Zabbix框架的页面将能够访问Zabbix前端(通过JavaScript)。例如,像http://secure-zabbix.com/cms/page.html这样的页面,如果放置在http://secure-zabbix.com/zabbix/的仪表板中,将拥有对Zabbix的完整JavaScript访问权限。

Server/proxy

若标注为必选,则该软件/库为严格必需项。 可选项目用于支持某些特定功能。

需求项 必选状态 描述
libpcre/libpcre2 One of 支持Perl Compatible Regular Expression (PCRE)需要PCRE/PCRE2库。
不同GNU/Linux发行版可能命名不同,例如'libpcre3'或'libpcre1'。支持PCRE v8.x及PCRE2 v10.x(自Zabbix 6.0.0起)。
libevent Yes 进程间通信必需。需1.4或更高版本。
libpthread 互斥锁和读写锁支持必需(可能包含在libc中)。
libresolv DNS解析必需(可能包含在libc中)。
libiconv 文本编码/格式转换必需(可能包含在libc中)。Linux平台Zabbix server强制需要。
libz 压缩功能支持必需。
libm 数学库。仅Zabbix server需要。
libmysqlclient One of 使用MySQL时必需。
libmariadb 使用mariadb时必需。
libclntsh 使用Oracle时必需;libclntsh version必须等于或高于所用Oracle数据库的version。
libpq5 使用PostgreSQL时必需;libpq5 version必须等于或高于所用PostgreSQL数据库的version。
libsqlite3 使用Sqlite时必需。仅Zabbix proxy需要。
libOpenIPMI No IPMI支持必需。仅Zabbix server需要。
libssh2libssh 概述必需。需1.0或更高版本(libssh2);0.6.0或更高(libssh)。
自Zabbix 4.4.6起支持libssh。
libcurl Web监控、VMware监控、SMTP认证、web.page.* Zabbix agent items、HTTP agent 监控项及Elasticsearch(如使用)必需。推荐7.28.0或更高版本。
Libcurl version要求:
- SMTP认证:需version 7.20.0或更高
- Elasticsearch:需version 7.28.0或更高
libxml2 VMware监控及XML XPath预处理必需。
net-snmp SNMP支持必需。需5.3.0或更高版本。
强加密协议(AES192/AES192C, AES256/AES256C)支持需net-snmp库5.8+;基于RHEL 8+的系统推荐使用net-snmp 5.8.15或更高。
libunixodbc 数据库监控必需。
libgnutlslibopenssl 使用编译带加密支持的zabbix时必需。
最低版本:libgnutls - 3.1.18,libopenssl - 1.0.1
libldap LDAP支持必需。
fping icmp-ping-检测必需。
Agent
需求 强制状态 描述
libpcre/libpcre2 One of PCRE/PCRE2库是Perl Compatible Regular Expression (PCRE)支持所必需的。
命名可能因GNU/Linux发行版而异,例如'libpcre3'或'libpcre1'。支持PCRE v8.x和PCRE2 v10.x(从Zabbix 6.0.0开始)。
日志监控需要。Windows平台同样需要。
libpthread Yes 互斥锁和读写锁支持所需(可能是libc的一部分)。Windows平台不需要。
libresolv DNS解析所需(可能是libc的一部分)。Windows平台不需要。
libiconv 日志监控项、file内容、file正则表达式和regmatch 监控项中文本编码/格式转换为UTF-8所需(可能是libc的一部分)。Windows平台不需要。
libgnutlslibopenssl No 使用编译带加密支持的zabbix时必需。
最低版本:libgnutls - 3.1.18,libopenssl - 1.0.1
Microsoft Windows需要OpenSSL 1.1.1或更高版本。
libldap 使用LDAP时必需。Windows平台不支持。
libcurl web.page.* Zabbix agent items所需。Windows平台不支持。
建议版本7.28.0或更高。
libmodbus 仅在使用Modbus监控时需要。
版本3.0或更高。

从version 5.0.3开始,Zabbix agent将无法在 AIX平台版本低于6.1 TL07 / AIX 7.1 TL01的系统上运行。

Agent 2
需求 强制状态 描述
Go Yes 从源码构建Zabbix agent 2及其插件所需.
支持Go 1.23或更高版本. 安装说明参见go.dev.
Zabbix agent 2及其插件使用的Go库列在Zabbix Git仓库中(仓库中标记为indirect的库是其他必需库的依赖项):
- Zabbix agent 2
- Plugin support
- PostgreSQL
- MongoDB
- MSSQL
- Ember+
libpcre/libpcre2 One of PCRE/PCRE2库为Perl Compatible Regular Expression(PCRE)支持所需.
命名可能因GNU/Linux发行版而异,例如'libpcre3'或'libpcre1'. 支持PCRE v8.x和PCRE2 v10.x(从Zabbix 6.0.0开始).
日志监控所需. Windows系统同样需要.
libopenssl No 使用加密时所需.
UNIX平台需要OpenSSL 1.0.1或更高版本.
OpenSSL库必须启用PSK支持. 不支持LibreSSL.
Microsoft Windows系统需要OpenSSL 1.1.1或更高版本.
Java网关

如果您从源代码仓库或归档文件获取Zabbix 则所需依赖项已包含在源代码树中

如果您从发行版的软件包获取Zabbix 则所需依赖项已由打包系统提供

上述两种情况下 软件已准备就绪 无需额外下载

但如果您希望提供这些依赖项的自定义版本 (例如为某个Linux发行版准备软件包) 以下是已知与Java网关兼容的库版本列表 Zabbix也可能支持这些库的其他版本

下表列出了当前Java网关原始代码中捆绑的JAR文件:

库文件 必需状态 说明
android-json Yes 需要4.3r1或更高版本
JSON(JavaScript object表示法)是一种轻量级数据交换格式 这是从Android SDK提取的org.json兼容实现
logback-classic 需要1.5.16或更高版本
logback-core 需要1.5.16或更高版本
slf4j-api 需要2.0.16或更高版本

Java网关可使用Oracle Java或开源OpenJDK(version 1.6或更新版本)构建 Zabbix提供的软件包使用OpenJDK编译 下表列出了各发行版用于构建Zabbix软件包的OpenJDK包:

发行版 OpenJDK软件包
Debian 12 default-jdk-headless (amd64, arm64: 2:1.17-74)
Debian 11 default-jdk-headless (amd64: 2:1.11-72)
Debian 10 default-jdk-headless (amd64, i386: 2:1.11-71)
OpenSUSE Leap 15 java-17-openjdk-devel (amd64: 17.0.5.0-150400.3.9.3; arm64: 17.0.8.0-150400.3.27.1)
Oracle Linux 9 java-11-openjdk-devel (amd64: 11.0.19.0.7-4.0.1; arm64: 11.0.20.0.8-2.0.1)
Oracle Linux 8 java-1.8.0-openjdk-devel (amd64: 1.8.0.372.b07-4.0.1); java-11-openjdk-devel (arm64: 11.0.20.0.8-3.0.1)
Oracle Linux 7 java-1.8.0-openjdk-devel (amd64: 1.8.0.282.b08-1)
Raspberry Pi OS 12 default-jdk-headless (arm64, armhf: 2:1.17-74)
Raspberry Pi OS 11 default-jdk-headless (arm64: 2:1.11-72; armhf: 2:1.11-72+b4)
Raspberry Pi OS 10 default-jdk (armhf: 2:1.11-71+b2)
RHEL 9 java-11-openjdk-devel (amd64: 11.0.19.0.7-4; arm64: 11.0.20.0.8-3)
RHEL 8 java-1.8.0-openjdk-devel (amd64: 1.8.0.372.b07-4; arm64: 1.8.0.382.b05-2)
RHEL 7 java-1.8.0-openjdk-devel (amd64: 1.8.0.282.b08-1)
SLES 15 java-17-openjdk-devel (amd64: 17.0.5.0-150400.3.9.3; arm64: 17.0.8.0-150400.3.27.1)
SLES 12 java-1_8_0-openjdk-devel (amd64: 1.8.0.252-27.45.6)
Ubuntu 24.04 default-jdk-headless (amd64, arm64: 2:1.21-75+exp1)
Ubuntu 22.04 default-jdk-headless (amd64, arm64: 2:1.11-72build2)
Ubuntu 20.04 default-jdk-headless (amd64, arm64: 2:1.11-72)
Ubuntu 18.04 default-jdk (amd64: 2:1.11-68ubuntu1~18.04.1; i386: 2:1.10-63ubuntu1~02)

默认端口号

以下为默认配置下各组件开放的端口列表:

Zabbix组件 端口号 协议 连接类型
Zabbix agent 10050 TCP on demand
Zabbix agent 2 10050 TCP on demand
Zabbix server 10051 TCP on demand
Zabbix proxy 10051 TCP on demand
Zabbix Java网关 10052 TCP on demand
Zabbix网页服务 10053 TCP on demand
Zabbix前端 80 HTTP on demand
443 HTTPS on demand
Zabbix trapper 10051 TCP on demand

需在防火墙中开放这些端口以启用Zabbix通信。通常出站TCP连接不需要显式的防火墙设置。

数据库大小

Zabbix配置数据需要固定的磁盘空间且不会 增长不多。

Zabbix数据库大小主要取决于以下变量,这些变量定义了 存储的历史数据量:

  • 每秒处理值的数量

这是Zabbix server每秒接收的新值的平均数量。 例如,如果您有3000个监控项需要监控,且刷新率为60秒, 每秒数值的计算公式为3000/60 = 50. 这意味着每秒有50个新值被添加到Zabbix数据库中。

  • 历史数据的Housekeeper设置

Zabbix会在固定时间段内保留数值,通常为几周 数月。每个新值都需要占用一定量的磁盘空间 数据和索引

因此,如果您希望保留30天的历史数据,并且每秒接收50个值,那么总数值量大约为 (30*24*3600)* 50 = 129.600.000,约等于1.3亿个数值。

根据所使用的数据库引擎类型及接收到的数值类型(浮点数、整数、字符串、日志文件等) 存储单个值所需的磁盘空间可能从40字节到数百字节不等。 通常每个数值型监控项2的值约为90字节。

在这种情况下,意味着1.3亿个值将需要1.3亿 * 90字节 = 10.9GB的磁盘空间。

文本/日志监控项值的大小无法精确预测,但每个值预计约为500字节。

  • 趋势数据的Housekeeper设置

Zabbix在trends表中为每个监控项保留1小时的最大值/最小值/平均值/计数值数据集。 该数据用于趋势分析和长期图表展示。1小时的时间周期不可自定义。

根据数据库类型的不同,Zabbix数据库每个总计值大约需要90字节的存储空间。

假设您希望保留5年的趋势数据。 3000个监控项的数值每年将需要3000*24*365* 90 = 2.2GB的存储空间,5年则需11GB

  • 事件管理器的Housekeeper设置

每个Zabbix事件大约需要250字节的磁盘空间1

很难估计Zabbix每天生成的事件数量 在最坏的情况下,可以假设Zabbix每秒生成一个事件。 对于每个恢复的事件,都会创建一个event_recovery记录。通常, 大多数事件将被恢复。因此,您可以假设每个事件对应一条event_recovery记录。 这意味着每个事件额外增加80字节。

可选地,事件可以带有标签,每个标签记录大约需要100字节的磁盘空间1。 每个事件的标签数量(#tags)取决于配置。

因此,每个都需要额外的#tags * 100字节磁盘空间。

这意味着如果您想保留3年的事件数据,将需要3*365*24*3600* (250+80+#tags*100) = ~30GB+#tags*100B的磁盘空间 space2.

1 更多关于包含非ASCII字符的事件名称、标签和值的情况。 2 容量估算基于MySQL数据库,其他数据库可能存在差异。

该表格包含可用于计算Zabbix系统所需磁盘空间的公式:

参数 所需磁盘空间计算公式(字节)
Zabbix configuration 固定大小。通常为10MB或更小。
History 天数*(监控项/刷新频率)*24*3600*字节数
监控项 : 监控项数量
天数 : 历史数据保留天数
刷新频率 : 监控项的平均刷新频率
字节数 : 存储单个值所需的字节数,取决于数据库引擎,通常约90字节。
Trends 天数*(监控项/3600)*24*3600*字节数
监控项 : 监控项的数量
天数 : 历史数据保留天数
字节数 : 存储单个趋势数据所需的字节数,取决于数据库引擎,通常约90字节。
Events 天数*事件数*24*3600*字节数
事件数: 每秒事件数量。最坏情况下每秒1个事件。
天数: 历史数据保留天数
字节数: 单条趋势数据存储所需字节数,取决于数据库引擎,通常约330字节 + 每个事件的平均标签数 * 100字节。

因此,所需的总磁盘空间可以计算为: 配置 + 历史 + 趋势 + 事件 Zabbix安装后不会立即使用磁盘空间 数据库大小会增长,然后会在某个时刻停止增长 取决于管家设置。

时间同步

在运行Zabbix的服务器上保持精确的系统时间非常重要。ntpd是最流行的守护进程,用于将主机的时间与其他机器同步。强烈建议在所有运行Zabbix组件的系统上保持同步的系统时间。