要求

硬件

内存

Zabbix 同时需要物理内存和磁盘内存。 所需的磁盘内存大小显然取决于被监控的主机数量和参数数量。 如果您计划长期保留监控参数的历史记录,则应考虑至少准备几 GB 的空间,以便在数据库中存储这些历史记录。 每个 Zabbix 守护进程都需要与数据库服务器建立多个连接。 为连接分配的内存量取决于数据库引擎的配置。

物理内存越多,数据库(因此 Zabbix)的运行速度就越快。

CPU

Zabbix,尤其是 Zabbix 数据库,可能会根据监控参数的数量和所选数据库引擎而需要大量 CPU 资源。

其他硬件

在 Zabbix 中使用短信通知支持功能需要串行通信端口和串行 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
m6i.4xlarge/m6g.4xlarge
超大型 1 000 000 32 96 MySQL Server,
Percona Server,
MariaDB Server,
PostgreSQL
m6i.8xlarge/m6g.8xlarge

1 出于容量规划的目的,1 个监控指标大致可用以下公式表示:1 个指标 = 1 个监控项 + 1 个触发器 + 1 个图形。此规则仅用于估算,并非用于计算监控指标数量的公式。
2 这是使用 ARM64 或 x86_64 架构的 Amazon 通用型 EC2 实例示例。在将 Zabbix 安装到生产环境之前进行安装评估和测试时,应选择适当的实例类型,例如计算优化型、内存优化型或存储优化型实例。

实际配置在很大程度上取决于活动监控项的数量和刷新频率(详情请参阅本页的数据库大小部分)。 对于大型安装,强烈建议在单独的服务器上运行数据库。

支持的平台

由于安全要求以及监控服务器的关键任务性质,只有 UNIX 操作系统才能持续提供所需的性能、容错能力和弹性。 Zabbix 可运行于市场主流版本之上。

以下平台提供并经过测试的 Zabbix 组件如下:

平台 服务器 agent Agent 2 备注
Linux x x x
Windows - x x Zabbix agent 支持自 Windows XP(64 位)/Server 2003 起的所有桌面版和服务器版。

Zabbix agent 2 支持自 Windows 10(32 位)/Server 2016 起的所有桌面版和服务器版,因为它仅使用受支持的 Go 版本进行编译,以防止严重的安全漏洞。自 Go 1.21 起,Windows 的最低要求版本已提高,因此 Windows 10/Server 2016 成为 Zabbix agent 2 的最低支持版本。
macOS x x -
IBM AIX x x - Zabbix agent 在低于 6.1 TL07 / 7.1 TL01 的 AIX 平台版本上无法运行。
FreeBSD x x -
OpenBSD x x -
Solaris x x -
NetBSD x x -
HP-UX x x -

Zabbix 服务器/agent 也可能在其他类 Unix 操作系统上运行。

如果 Zabbix 在启用加密的情况下编译,则会禁用 core dump;如果系统不允许禁用 core dump,则 Zabbix 将无法启动。

所需软件

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

第三方外部周边软件

如果标记为必需,则表示所需的软件/库是严格必要的。
可选软件用于支持某些特定功能。

软件 必需状态 支持的版本 备注
MySQL/Percona One of 8.4.0-9.7.X 如果使用 MySQL(或 Percona)作为 Zabbix 后端数据库,则必须使用。需要 InnoDB 引擎。

我们建议使用 C API (libmysqlclient) 库构建服务器/proxy。

我们强烈建议在生产环境中仅使用 LTS 版本。不建议使用标记为“滚动发布”、“早期访问”或类似版本的发行版。
MariaDB 10.11.00-12.3.X 需要 InnoDB 引擎。

我们建议使用 MariaDB Connector/C 库构建服务器/proxy。

另请参阅:MariaDB 可能发生的死锁和 使用 MariaDB 10.5.1-10.5.9 访问 UI 元素。

我们强烈建议在生产环境中仅使用 LTS 版本。不建议使用标记为“滚动发布”、“早期访问”或类似版本的发行版。
PostgreSQL 15.0-18.X 如果使用 PostgreSQL 作为 Zabbix 后端数据库,则必须使用。
根据安装规模,可能需要增大 PostgreSQL 的 work_mem 配置属性(默认值为 4MB),以确保数据库为特定操作使用的内存量足够,并避免查询执行耗时过长。
用于 PostgreSQL 的 TimescaleDB 2.20.X-2.29.X 如果将 TimescaleDB 用作 PostgreSQL 数据库扩展,则必须使用。请确保安装支持压缩的 TimescaleDB Community Edition。

有关 PostgreSQL 和 TimescaleDB 版本兼容性的详细信息,请参阅 TimescaleDB 文档。
Elasticsearch 7.X 如果使用 Elasticsearch 作为 Zabbix 后端数据库,则必须使用。
Elasticsearch 只能用于存储历史数据,并且仅支持 Zabbix 服务器。目前对 Elasticsearch 的支持仍处于实验阶段。另请参阅 服务器/proxy 所需的软件。
ClickHouse 25.8.22.X-26.4.X 如果使用 ClickHouse 作为 Zabbix 后端数据库来存储历史数据,则必须使用(仅支持 Zabbix 服务器)。

支持的版本仅适用于历史数据存储;如果要将 ClickHouse 用作遥测数据源,则需要 ClickHouse 26.8.17.4 或更高版本。

Zabbix 服务器和 ClickHouse 服务器上的系统时间必须同步;否则,遥测查询可能会遗漏数据,或两次返回相同的数据。
SQLite 可选 3.3.5-3.53.X SQLite 仅支持 Zabbix proxy。如果使用 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 插件所需。
q applets 在 Gentoo Linux 上,作为 q applets 一部分的 qlist 和 qsize 是 system.sw.packages 插件所需的。

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

前端

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

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

软件 必需状态 支持的版本 备注
PHP 是 8.2.0 - 8.5.X
Apache 二选一 2.4 或更高
Nginx 1.20 或更高
MySQL 二选一 参见第三方外部周边软件
PostgreSQL
PHP 扩展
mysqli 是 如果使用 MySQL 作为 Zabbix 后端数据库,则必需。
pgsql 如果使用 PostgreSQL 作为 Zabbix 后端数据库,则必需。
bcmath php-bcmath (--enable-bcmath)
mbstring php-mbstring (--enable-mbstring)
sockets php-net-socket (--enable-sockets);支持用户脚本时必需。
gd 2.0.28 或更高 php-gd(如果发行版提供单独的软件包);PHP GD 扩展必须支持 PNG 图像(--with-png-dir)、JPEG 图像(--with-jpeg-dir)和 FreeType 2(--with-freetype-dir)。对于某些前端语言,可能需要 2.3.0 或更高版本,以避免图表中的文本重叠问题。
libxml 2.6.15 或更高 php-xml(如果发行版提供单独的软件包)
xmlwriter php-xmlwriter(如果发行版提供单独的软件包)
xmlreader php-xmlreader(如果发行版提供单独的软件包)
ctype php-ctype (--enable-ctype)
session php-session(如果发行版提供单独的软件包)
ldap 否 php-ldap;LDAP 身份验证所需。
openssl php-openssl;SAML 身份验证所需。
gettext php-gettext (--with-gettext);翻译所需。
cURL 7.19.4 或更高 php-curl;Duo Universal Prompt MFA、SMTP 身份验证以及测试遥测数据源所需。

Zabbix 随附的第三方前端库:

库 必需状态 随附版本 备注
jQuery JavaScript Library 是 3.6.0 用于简化跨浏览器开发过程的 JavaScript 库。
jQuery UI 1.12.1 基于 jQuery 构建的一组用户界面交互、效果、控件和主题。
SAML PHP Toolkit 4.3.1 用于为 Zabbix 添加 SAML 2.0 身份验证支持的 PHP 工具包。
Duo Universal PHP library 1.1.2 用于为 Zabbix 添加 Duo Universal Prompt 多因素身份验证支持的 PHP 库。
Symfony Yaml Component 5.1.0 支持以 YAML 格式导出和导入 Zabbix 配置元素。

Zabbix 也可能可以在较旧版本的 Apache、MySQL 和 PostgreSQL 上运行。

对于默认 DejaVu 以外的字体,可能需要 PHP 函数 imagerotate。 如果缺少该函数,在显示图表时,这些字体可能无法正确渲染。 只有在 PHP 使用内置 GD 进行编译时,该函数才可用;Debian 和其他发行版并非如此。

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

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

必须启用 Cookie 和 JavaScript。

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

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

不过,如果放置在框架中的页面与 Zabbix 前端位于同一域名下,则该页面将能够通过 JavaScript 访问 Zabbix 前端。 例如,http://secure-zabbix.com/cms/page.html 这样的页面,如果被放置到 http://secure-zabbix.com/zabbix/ 上的仪表板中,将拥有对 Zabbix 的完整 JS 访问权限。

服务器/proxy

如果标记为必需,则所需的软件/库是严格必要的。 可选项用于支持某些特定功能。

Requirement Mandatory status Description
libpcre2 是 PCRE2 库是支持 Perl 兼容正则表达式(PCRE)所必需的。
支持 PCRE2 v10.x。
libevent 进程间通信所必需。版本 2.0.10 或更高。
libevent-pthreads 进程间通信所必需。
libpthread 互斥锁和读写锁支持所必需(可能是 libc 的一部分)。
libresolv DNS 解析所必需(可能是 libc 的一部分)。
libiconv 文本编码/格式转换所必需(可能是 libc 的一部分)。Linux 上的 Zabbix 服务器必需。
libz 压缩支持所必需。
libm 数学库。仅 Zabbix 服务器需要。
libmysqlclient 二选一 使用 MySQL 时必需。
libmariadb 使用 MariaDB 时必需。
libpq5 使用 PostgreSQL 时必需;libpq5 版本必须与所使用的 PostgreSQL 数据库版本匹配或更高。
libsqlite3 使用 SQLite 时必需。仅 Zabbix proxy 需要。
libOpenIPMI 否 IPMI 支持所必需。仅 Zabbix 服务器需要。
libssh2 或 libssh SSH 检查所必需。版本要求:libssh2 为 1.8.0 或更高;libssh 为 0.9.0 或更高。
libcurl 以下功能所必需:
- Web 监控、VMware 监控和 HTTP agent 监控项(全部要求版本 7.19.1 或更高);
- Zabbix agent 的 web.page.* 监控项(版本 7.19.1 或更高;另请参阅 agent 要求);
- SMTP 身份验证(Basic:版本 7.20.0 或更高;OAuth:版本 7.33 或更高;另请参阅 前端 要求);
- Elasticsearch(版本 7.28.0 或更高);
- Telemetry 查询 监控项(版本 7.28.0 或更高)。

建议所有功能使用 7.28.0 或更高版本。
要在 web.page.* 监控项中使用升级后的 cURL 功能,请重启 Zabbix 服务器/proxy。
对于 SMTP 身份验证,请在运行时使用 libcurl-full 软件包。
libxml2 VMware 监控和 XML XPath 预处理中所必需。
net-snmp SNMP 支持所必需。版本 5.3.0 或更高。
从 net-snmp 库 5.8 开始支持强加密协议(AES192/AES192C、AES256/AES256C);在基于 RHEL 8 及更高版本的系统上,建议使用 net-snmp 5.8.15 或更高版本。
libunixodbc 数据库监控所必需。
libgnutls 或 libopenssl 使用加密时所必需。
最低版本:libgnutls - 3.1.18,libopenssl - 1.0.1
libldap LDAP 支持所必需。
fping ICMP ping 监控项所必需。
c-ares 如果 Zabbix 使用 --with-ares 选项进行配置,则异步 DNS 解析所必需。否则将使用 libevent。
最低版本:1.16.0。DNS 查询缓存和故障转移功能(默认启用查询缓存)要求 c-ares 1.26.0 或更高版本。在 c-ares 由操作系统软件包提供的系统上,请确保已安装的运行时库提供 DNS 缓存和故障转移所需的解析器功能。
g++ C++ 编译器。使用 --with-apm 选项编译 Zabbix proxy 以及实现应用性能监控(APM)时所必需。
gRPC 如果使用 --with-apm 选项编译,则 Zabbix proxy 上的 APM 所必需。
所需库:grpc++、grpc、gpr。
编译 Zabbix proxy 时还需要 grpc_cpp_plugin 工具。

以下操作系统的标准软件包仓库中提供所需版本:
- Ubuntu 23.04 或更高版本;
- Debian 12(Bookworm)或更高版本;
- Alpine Linux 3.15 或更高版本;
- RHEL、Rocky Linux、CentOS Stream 9 或更高版本(仅来自 EPEL 仓库);
- Fedora X 或更高版本。
在较旧的操作系统版本上,必须从源代码构建 gRPC。
protobuf 如果使用 --with-apm 选项编译,则 Zabbix proxy 上的 APM 所必需。
编译 Zabbix proxy 时还需要 protoc 编译器。
Abseil 如果使用 --with-apm 选项编译,则 Zabbix proxy 上的 APM 所必需。
所需库:absl_synchronization、absl_base。
通常与 gRPC 一起安装。
Agent
Requirement Mandatory status Description
libpcre2 Yes 需要 PCRE2 库以支持 Perl Compatible Regular Expression (PCRE)。
支持 PCRE2 v10.x。
日志监控所必需。在 Windows 上也必需。
libpthread 需要用于支持互斥锁和读写锁(可能是 libc 的一部分)。在 Windows 上不需要。
libresolv 需要用于 DNS 解析(可能是 libc 的一部分)。在 Windows 上不需要。
libiconv 需要用于将日志监控项、文件内容、文件正则和 regmatch 监控项中的文本编码/格式转换为 UTF-8(可能是 libc 的一部分)。在 Windows 上不需要。
libgnutls or libopenssl No 如果使用加密,则需要。
最低版本:libgnutls - 3.1.18,libopenssl - 1.0.1
在 Microsoft Windows 上需要 OpenSSL 1.1.1 或更高版本。
libldap 如果使用 LDAP,则需要。在 Windows 上不支持。
libcurl 需要用于扩展支持 Zabbix agent web.page.* 监控项。
没有 libcurl 时,可使用基本功能(例如,web.page.get[http://example.com\])。有了 libcurl,agent 还支持其他功能,例如带凭据的 HTTP URL(例如,http://user:[email protected])以及 HTTPS URL。
需要 7.19.1 或更高版本(建议 7.28.0 或更高版本)。
要使用升级后的 cURL 功能,请重启 Zabbix agent。
libmodbus 仅在使用 Modbus 监控时需要。
版本 3.0 或更高。
Agent 2
Requirement Mandatory status Description
Go Yes 从源代码构建 Zabbix agent 2 及其插件所必需。
支持 Go 1.25 或更高版本。安装说明请参见 go.dev。
Zabbix agent 2 及其插件使用的 Go 库列在 Zabbix Git 仓库中(仓库中标记为 indirect 的库是其他必需库的依赖项):
- Zabbix agent 2
- Plugin support
- PostgreSQL
- MongoDB
- MSSQL
- Ember+
- NVIDIA GPU
- Example plugin
libpcre2 Yes 需要 PCRE2 库以支持 Perl Compatible Regular Expression(PCRE)。
支持 PCRE2 v10.x。
日志监控需要此库。在 Windows 上也需要。
libopenssl No 使用加密功能时需要。
UNIX 平台需要 OpenSSL 1.0.1 或更高版本。
OpenSSL 库必须启用 PSK 支持。不支持 LibreSSL。
在 Microsoft Windows 系统上需要 OpenSSL 1.1.1 或更高版本。
Web 服务

支持使用最新稳定版本的 Google Chrome 通过 Zabbix Web 服务生成计划报表。

构建 Web 服务所需的 Go 版本与 Zabbix agent 2 使用的版本一致。

Java 网关

如果您从源代码仓库或归档文件获取了 Zabbix,则必要的依赖项已经包含在源代码树中。

如果您从发行版的软件包获取了 Zabbix,则必要的依赖项已经由软件包系统提供。

在上述两种情况下,软件都已准备就绪,可以直接使用,无需额外下载。

但是,如果您希望提供这些依赖项的自有版本(例如,您正在为某个 Linux 发行版准备软件包),下面列出了 Java 网关已知可正常使用的库版本。 Zabbix 也可能可以与这些库的其他版本配合使用。

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

库 是否必须 捆绑版本 注释
android-json 是 4.3r1 JSON(JavaScript 对象表示法)是一种轻量级的数据交换格式。这是从 Android SDK 中提取的、与 org.json 兼容的 Android 实现。
logback-classic 1.5.25
logback-core 1.5.25
slf4j-api 2.0.16

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

发行版 OpenJDK 软件包
AlmaLinux 10 java-21-openjdk-devel(amd64、arm64:21.0.12.0.8-1.2)
AlmaLinux 9 java-17-openjdk-devel(amd64、arm64:17.0.15.0.6-2)
AlmaLinux 8 java-1.8.0-openjdk-devel(amd64:1.8.0.332.b09-2;arm64:1.8.0.382.b05-2)
Amazon Linux 2023 java-22-amazon-corretto-devel(amd64、arm64:22.0.2+9-1)
CentOS Stream 10 java-21-openjdk-devel(amd64、arm64:21.0.11.0.10-2)
CentOS Stream 9 java-17-openjdk-devel(amd64、arm64:17.0.15.0.6-2)
CentOS Stream 8 java-1.8.0-openjdk-devel(amd64、arm64:1.8.0.362.b08-3)
CentOS 7 java-1.8.0-openjdk-devel(amd64:1.8.0.282.b08-1)
Debian 13 default-jdk-headless(amd64、arm64:2:1.21-76)
Debian 12 default-jdk-headless(amd64、arm64:2:1.17-74)
Debian 11 default-jdk-headless(amd64:2:1.11-72)
OpenSUSE Leap 16 java-21-openjdk-devel(amd64、arm64:21.0.11.0-160000.2.1)
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 10 java-21-openjdk-devel(amd64、arm64:21.0.11.0.10-2.0.1)
Oracle Linux 9 java-17-openjdk-devel(amd64、arm64:17.0.15.0.6-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 13 default-jdk-headless(arm64、armhf:2:1.21-76)
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)
RHEL 10 java-21-openjdk-devel(amd64、arm64:21.0.12.0.8-1.2)
RHEL 9 java-17-openjdk-devel(amd64、arm64:17.0.15.0.6-2)
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)
Rocky Linux 10 java-21-openjdk-devel(amd64、arm64:21.0.12.0.8-1.2)
Rocky Linux 9 java-17-openjdk-devel(amd64、arm64:17.0.15.0.6-2)
Rocky Linux 8 java-1.8.0-openjdk-devel(amd64、arm64:1.8.0.372.b07-4;arm64:1.8.0.382.b05-2)
SLES 16 java-21-openjdk-devel(amd64、arm64:21.0.11.0-160000.1.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)
Ubuntu 26.04 default-jdk-headless(amd64、arm64:2:1.25-77)
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)
Bridge adapter

Zabbix bridge adapter 没有特殊要求。

默认端口

以下列表包含 Zabbix 组件在默认配置下可能使用的端口:

Zabbix 组件 协议和端口 发起连接的组件
Zabbix agent TCP 10050 Zabbix 服务器或 Zabbix proxy(仅被动检查)
Zabbix agent 2 TCP 10050 Zabbix 服务器或 Zabbix proxy(仅被动检查)
Zabbix 服务器 TCP 10051 主动 Zabbix agent、主动 Zabbix proxy、Zabbix sender、Zabbix 前端
Zabbix proxy TCP 10051 主动 Zabbix agent、Zabbix sender、Zabbix 服务器(仅被动 proxy)
Zabbix Java 网关 TCP 10052 Zabbix 服务器或 proxy
Zabbix web service TCP 10053 Zabbix 服务器
Zabbix MCP 服务器 TCP 8443 MCP 客户端(AI agent)
Zabbix 前端 TCP 80 Web 浏览器、Zabbix web service(计划报表)、API 客户端
TCP 443
SNMP traps (snmptrapd) UDP 162 SNMP 设备
Zabbix bridge adapter TCP 10054 Zabbix 服务器

仅开放实际运行的组件所需的端口,并将每条防火墙规则限制为需要连接的特定主机(例如,仅允许来自 Zabbix 服务器或 proxy 的端口 10050 连接,而不是允许来自任意地址的连接)。 不要将 Zabbix 端口直接暴露到互联网。
在开放端口之前,请强化安装:启用组件之间的加密,在组件配置文件中限制允许的主机,并查看安全最佳实践。

数据库大小

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

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

  • 每秒处理的值数量

这是 Zabbix 服务器每秒接收的新值的平均数量。 例如,如果有 3000 个用于监控的监控项,刷新间隔为 60 秒,则每秒值数量计算为 3000/60 = 50。

这意味着每秒会向 Zabbix 数据库中新增 50 个值。

  • 用于历史数据的 housekeeper 设置

Zabbix 会保留固定时间段内的值,通常为数周或数月。 每个新值都需要一定的磁盘空间来存储数据和索引。

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

根据所使用的数据库引擎、接收值的类型(浮点数、整数、字符串、日志文件等),保存单个值所需的磁盘空间可能从 40 字节到数百字节不等。 通常,对于数值型监控项,每个值大约占用 90 字节2。 在本例中,这意味着 130M 个值将需要 130M * 90 字节 = 10.9GB 的磁盘空间。

文本/日志监控项值的大小无法精确预测,但通常可以按每个值约 500 字节估算。

  • 用于趋势数据的 housekeeper 设置

Zabbix 会在 trends 表中为每个监控项保留 1 小时的 max/min/avg/count 值集合。 这些数据用于趋势分析和长期图表。 这一小时周期无法自定义。

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 的磁盘空间2。

1 当事件名称、标签和值包含非 ASCII 字符时会更多。
2 这些大小估算基于 MySQL,其他数据库可能不同。

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

参数 所需磁盘空间公式(字节)
Zabbix 配置 固定大小。通常为 10MB 或更少。
历史数据 days*(items/refresh rate)*24*3600*bytes
items : 监控项数量
days : 保留历史数据的天数
refresh rate : 监控项的平均刷新间隔
bytes : 保存单个值所需的字节数,取决于数据库引擎,通常约为 90 字节。
趋势数据 days*(items/3600)*24*3600*bytes
items : 监控项数量
days : 保留历史数据的天数
bytes : 保存单个趋势值所需的字节数,取决于数据库引擎,通常约为 90 字节。
事件 days*events*24*3600*bytes
events : 每秒事件数。在最坏情况下为每秒一个(1)事件。
days : 保留历史数据的天数
bytes : 保存单个事件所需的字节数,取决于数据库引擎,通常约为 ~330 + 每个事件的平均标签数 * 100 字节。

因此,总所需磁盘空间可按以下公式计算:

配置 + 历史数据 + 趋势数据 + 事件

安装 Zabbix 后,磁盘空间不会立即被占满。 数据库大小会逐渐增长,然后在某个时点停止增长,这取决于 housekeeper 设置。

时间同步

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