内存
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访问权限。
若标注为必选,则该软件/库为严格必需项。 可选项目用于支持某些特定功能。
需求项 | 必选状态 | 描述 |
---|---|---|
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需要。 |
libssh2 或 libssh | 概述必需。需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 | 数据库监控必需。 | |
libgnutls 或 libopenssl | 使用编译带加密支持的zabbix时必需。 最低版本:libgnutls - 3.1.18,libopenssl - 1.0.1 |
|
libldap | LDAP支持必需。 | |
fping | icmp-ping-检测必需。 |
需求 | 强制状态 | 描述 |
---|---|---|
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平台不需要。 | |
libgnutls 或 libopenssl | 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的系统上运行。
需求 | 强制状态 | 描述 |
---|---|---|
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或更高版本. |
如果您从源代码仓库或归档文件获取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数据库中。
Zabbix会在固定时间段内保留数值,通常为几周 数月。每个新值都需要占用一定量的磁盘空间 数据和索引
因此,如果您希望保留30天的历史数据,并且每秒接收50个值,那么总数值量大约为 (30*24*3600)* 50 = 129.600.000,约等于1.3亿个数值。
根据所使用的数据库引擎类型及接收到的数值类型(浮点数、整数、字符串、日志文件等) 存储单个值所需的磁盘空间可能从40字节到数百字节不等。 通常每个数值型监控项2的值约为90字节。
在这种情况下,意味着1.3亿个值将需要1.3亿 * 90字节 = 10.9GB的磁盘空间。
文本/日志监控项值的大小无法精确预测,但每个值预计约为500字节。
Zabbix在trends表中为每个监控项保留1小时的最大值/最小值/平均值/计数值数据集。 该数据用于趋势分析和长期图表展示。1小时的时间周期不可自定义。
根据数据库类型的不同,Zabbix数据库每个总计值大约需要90字节的存储空间。
假设您希望保留5年的趋势数据。 3000个监控项的数值每年将需要3000*24*365* 90 = 2.2GB的存储空间,5年则需11GB。
每个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组件的系统上保持同步的系统时间。