2 要求
硬件
内存
Zabbix 需要物理内存和磁盘内存。
所需磁盘 memory 的数量显然取决于被监控的 主机 和参数的数量。
如果您计划保留较长时间的监控参数历史记录,则应考虑至少几个千兆字节的空间,以便在数据库中存储历史数据。
每个 Zabbix 守护进程都需要与数据库服务器建立多个连接。
为连接分配的 memory 数量取决于数据库引擎的配置。
物理 memory 越多,数据库(以及因此 Zabbix)的运行速度就越快。
CPU
Zabbix 及其数据库可能会根据受监控参数的数量和所选的数据库引擎消耗大量的 CPU 资源。
其他硬件
Zabbix 中使用 SMS 通知支持需要一个串行通信端口和一个串行 GSM 调制解调器。
USB-to-serial 转换器也可以工作。
硬件配置示例
该表格提供了基于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 | Agent 2 | 备注 |
|---|---|---|---|---|
| Linux | x | x | x | |
| Windows | - | x | x | Zabbix agent 支持所有自 Windows XP (64-位)/Server 2003 起的桌面和服务器版本。 Zabbix agent 2 支持所有自 Windows 10 (32-位)/Server 2016 起的桌面和服务器版本,因为它是仅使用 agent-2 编译的,以防止关键安全漏洞。从 Go 1.21 开始,minimum required Windows versions 被提升,使得 Windows 10/Server 2016 成为 Zabbix agent 2 的最低 version。 |
| 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 server/agent 可能在其他类 Unix 操作系统上也能运行。
如果使用加密编译,Zabbix 会禁用核心转储(core dumps),并且如果系统不允许禁用核心转储,则 Zabbix 不会启动。
所需软件
Zabbix 基于现代 Web 服务器、主流数据库引擎和 PHP 脚本语言构建。
第三方外部配套软件
如果标注为必需,则所需的软件/库是严格必要的。
可选项用于支持某些特定功能。
| Software | Mandatory status | Supported versions | Comments |
|---|---|---|---|
| MySQL/Percona | One of | 8.0.30-9.6.X | 如果将 MySQL(或 Percona)用作 Zabbix 后端数据库,则为必需。需要 InnoDB 引擎。 新增对以下 MySQL 版本的支持: - 自 Zabbix 7.0.1 起支持 8.4.X; - 自 Zabbix 7.0.2 起支持 9.0.X; - 自 Zabbix 7.0.22 起支持 9.5.X; - 自 Zabbix 7.0.25 起支持 9.6.X。 建议在构建服务器/proxy 时使用 C API (libmysqlclient) 库。 |
| MariaDB | 10.5.00-12.2.X | 需要 InnoDB 引擎。 推荐版本为 11.4。 建议在构建服务器/proxy 时使用 MariaDB Connector/C 库。 新增对以下 MariaDB 版本的支持: - 自 Zabbix 7.0.1 起支持 11.4.X; - 自 Zabbix 7.0.4 起支持 11.5.X; - 自 Zabbix 7.0.19 起支持 12.0.X; - 自 Zabbix 7.0.25 起支持 12.2.X。 另请参见:MariaDB 可能出现的死锁 和 使用 MariaDB 10.5.1-10.5.9 访问 UI 元素。 |
|
| Oracle | 19c - 21c | 如果将 Oracle 用作 Zabbix 后端数据库,则为必需。 自 Zabbix 7.0 起,Oracle DB 支持已弃用。 |
|
| PostgreSQL | 13.0-18.X | 如果将 PostgreSQL 用作 Zabbix 后端数据库,则为必需。 根据安装规模,可能需要增加 PostgreSQL work_mem 配置属性(默认值为 4MB),以确保数据库在执行特定操作时使用的内存足够,并且查询执行不会耗时过长。 新增对以下 PostgreSQL 版本的支持: - 自 Zabbix 7.0.6 起支持 17.X; - 自 Zabbix 7.0.20 起支持 18.X。 |
|
| TimescaleDB for PostgreSQL | 2.13.0-2.26.X | 如果将 TimescaleDB 作为 PostgreSQL 数据库扩展使用,则为必需。请确保安装支持压缩功能的 TimescaleDB Community Edition。 请注意,自 TimescaleDB 2.10 起支持 PostgreSQL 15。 有关 PostgreSQL 与 TimescaleDB 版本兼容性的详细信息,也可参考 TimescaleDB 文档。 新增对以下 TimescaleDB 版本的支持: - 自 Zabbix 7.0.1 起支持 2.15.X; - 自 Zabbix 7.0.4 起支持 2.16.X; - 自 Zabbix 7.0.6 起支持 2.17.X; - 自 Zabbix 7.0.10 起支持 2.18.X; - 自 Zabbix 7.0.13 起支持 2.19.X; - 自 Zabbix 7.0.17 起支持 2.20.X; - 自 Zabbix 7.0.18 起支持 2.21.X; - 自 Zabbix 7.0.20 起支持 2.22.X; - 自 Zabbix 7.0.22 起支持 2.23.X; - 自 Zabbix 7.0.23 起支持 2.24.X; - 自 Zabbix 7.0.24 起支持 2.25.X; - 自 Zabbix 7.0.25 起支持 2.26.X。 |
|
| SQLite | Optional | 3.3.5-3.53.X | SQLite 仅支持 Zabbix proxy。若将 SQLite 用作 Zabbix proxy 数据库,则为必需。 对以下 SQLite 版本的支持: - 自 Zabbix 7.0.25 起支持 3.53.X。 |
| Elasticsearch | 7.X | Elasticsearch 仅支持 Zabbix 服务器,且仅用于存储历史数据。当前对 Elasticsearch 的支持处于实验阶段。另请参见 server/proxy 所需软件。 | |
| smartmontools | 7.1 or later | Zabbix agent 2 需要。 | |
| who | 用户计数插件需要。 | ||
| dpkg | system.sw.packages 插件需要。 | ||
| pkgtool | system.sw.packages 插件需要。 | ||
| rpm | system.sw.packages 插件需要。 | ||
| pacman | system.sw.packages 插件需要。 | ||
| q applets | 在 Gentoo Linux 上,system.sw.packages 插件需要 qlist 和 qsize,它们是 q applets 的一部分。 |
尽管 Zabbix 可以与操作系统中可用的数据库配合工作,但为了获得最佳体验,我们建议使用从官方数据库开发者仓库安装的数据库。
前端
Zabbix 前端支持的最小屏幕宽度为 1200px。
如果标注为必需,则该软件/库是严格必需的。 可选项用于支持某些特定功能。
| Software | Mandatory status | Supported versions | Comments |
|---|---|---|---|
| PHP | Yes | 8.0.0 - 8.5.X | Added support for PHP versions: - 8.4.X since Zabbix 7.0.10; - 8.5.X since Zabbix 7.0.25. |
| Apache | One of | 2.4 or later | |
| Nginx | 1.20 or later | ||
| MySQL | One of | See Third-party external surrounding software | |
| PostgreSQL | |||
| Oracle | |||
| PHP extensions | |||
| mysqli | Yes | 如果使用 MySQL 作为 Zabbix 后端数据库,则为必需。 | |
| pgsql | 如果使用 PostgreSQL 作为 Zabbix 后端数据库,则为必需。 | ||
| oci8 | 如果使用 Oracle 作为 Zabbix 后端数据库,则为必需。 | ||
| bcmath | php-bcmath (--enable-bcmath) | ||
| mbstring | php-mbstring (--enable-mbstring) | ||
| sockets | php-net-socket (--enable-sockets);用户脚本支持所必需。 | ||
| gd | 2.0.28 or later | php-gd(如果发行版将其作为单独的软件包提供);PHP GD 扩展必须支持 PNG 图像(--with-png-dir)、JPEG 图像(--with-jpeg-dir)和 FreeType 2(--with-freetype-dir)。对于某些前端语言,可能需要 2.3.0 或更高版本,以避免可能出现的图形中的文本重叠。 | |
| libxml | 2.6.15 or later | php-xml(如果发行版将其作为单独的软件包提供) | |
| xmlwriter | php-xmlwriter(如果发行版将其作为单独的软件包提供) | ||
| xmlreader | php-xmlreader(如果发行版将其作为单独的软件包提供) | ||
| ctype | php-ctype (--enable-ctype) | ||
| session | php-session(如果发行版将其作为单独的软件包提供) | ||
| ldap | No | php-ldap;LDAP 身份验证所必需。 | |
| openssl | php-openssl;SAML 身份验证所必需。 | ||
| gettext | php-gettext (--with-gettext);翻译所必需。 | ||
| cURL | php-curl;Duo Universal Prompt MFA 所必需。 | ||
Zabbix 随附的第三方前端库:
| Library | Mandatory status | Supplied version | Comments |
|---|---|---|---|
| jQuery JavaScript Library | Yes | 3.6.0 | 简化跨浏览器开发过程的 JavaScript 库。 |
| jQuery UI | 1.12.1 | 基于 jQuery 构建的一组用户界面交互、效果、组件和主题。 | |
| SAML PHP Toolkit | 4.3.1 | 一个 PHP 工具包,添加了 SAML 2.0 身份验证支持,以便登录 Zabbix。 随附版本历史: - 自 Zabbix 7.0.0 起为 4.0.0; - 自 Zabbix 7.0.24 起为 4.3.1(推荐)。 |
|
| Duo Universal PHP library | 1.1.2 | 一个 PHP 库,为 Zabbix 添加 Duo Universal Prompt 多因素身份验证支持。 随附版本历史: - 自 Zabbix 7.0.0 起为 1.0.2; - 自 Zabbix 7.0.23 起为 1.1.0; - 自 Zabbix 7.0.26 起为 1.1.2(推荐)。 |
|
| Symfony Yaml Component | 5.1.0 | 添加对以 YAML 格式导出和导入 Zabbix 配置元素的支持。 |
Zabbix 也可能在较早版本的 Apache、MySQL、Oracle 和 PostgreSQL 上运行。
对于除默认 DejaVu 之外的其他字体,可能需要 PHP 函数 imagerotate。 如果缺少该函数,在显示图形时,这些字体可能会渲染不正确。 只有在 PHP 使用内置 GD 编译时,该函数才可用,而 Debian 和其他发行版并非如此。
用于编写和调试 Zabbix 前端代码的第三方库:
| Library | Mandatory status | Minimum version | Description |
|---|---|---|---|
| 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 的最新稳定版本。
IFrames 的同源策略已实现,这意味着 Zabbix 不能被放置在不同域的框架中。
但是,如果放置在框架中的页面与 Zabbix 前端位于同一域,则该页面将可以通过 JavaScript 访问 Zabbix 前端。
例如,将 http://secure-zabbix.com/cms/page.html 页面放置在 http://secure-zabbix.com/zabbix/ 的仪表板中后,该页面将拥有对 Zabbix 的完整 JS 访问权限。
Server/proxy
如果标注为必需,则所需的软件/库是严格必要的。
可选项用于支持某些特定功能。
| Requirement | Mandatory status | Description |
|---|---|---|
| libpcre/libpcre2 | One of | PCRE/PCRE2 库是 Perl Compatible Regular Expression(PCRE)支持所必需的。 名称可能因 GNU/Linux 发行版而异,例如 'libpcre3' 或 'libpcre1'。支持 PCRE v8.x 和 PCRE2 v10.x。 |
| libevent | Yes | 进程间通信所必需。版本 2.0.10 或更高(自 Zabbix 7.0.4 起;此前为 1.4)。 |
| libevent-pthreads | 进程间通信所必需。 | |
| libpthread | 互斥锁和读写锁支持所必需(可能是 libc 的一部分)。 | |
| libresolv | DNS 解析所必需(可能是 libc 的一部分)。 | |
| libiconv | 文本编码/格式转换所必需(可能是 libc 的一部分)。Linux 上的 Zabbix 服务器必需。 | |
| libz | 压缩支持所必需。 | |
| libm | 数学库。仅 Zabbix 服务器需要。 | |
| libmysqlclient | One of | 如果使用 MySQL,则必需。 |
| libmariadb | 如果使用 MariaDB,则必需。 | |
| libclntsh | 如果使用 Oracle,则必需;libclntsh 版本必须与所用 Oracle 数据库版本一致或更高。 | |
| libpq5 | 如果使用 PostgreSQL,则必需;libpq5 版本必须与所用 PostgreSQL 数据库版本一致或更高。 | |
| libsqlite3 | 如果使用 SQLite,则必需。仅 Zabbix proxy 需要。 | |
| libOpenIPMI | No | IPMI 支持所必需。仅 Zabbix 服务器需要。 |
| libssh2 or libssh | SSH 检查所必需。版本 1.0 或更高(libssh2);0.9.0 或更高(libssh)。 | |
| libcurl | 以下功能所必需: - Web 监控、VMware 监控 和 HTTP agent 监控项(上述所有功能均需 7.19.1 或更高版本); - Zabbix agent web.page.* 监控项(7.19.1 或更高版本;另请参见 agent 要求); - SMTP 认证(7.20.0 或更高版本); - Elasticsearch(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 or libopenssl | 使用加密时所必需。 最低版本:libgnutls - 3.1.18,libopenssl - 1.0.1 |
|
| libldap | LDAP 支持所必需。 | |
| fping | ICMP ping 监控项所必需。 | |
| c-ares | 如果 Zabbix 使用 --with-ares 选项配置,则异步 DNS 解析所必需。否则将使用 libevent。自 Zabbix 7.0.11 起支持;最低版本:1.16.0 |
Agent
| Requirement | Mandatory status | Description |
|---|---|---|
| libpcre/libpcre2 | One of | PCRE/PCRE2 库是 Perl Compatible Regular Expression(PCRE)支持所必需的。 名称可能因 GNU/Linux 发行版而异,例如 'libpcre3' 或 'libpcre1'。支持 PCRE v8.x 和 PCRE2 v10.x。 日志监控需要此库。在 Windows 上也需要。 |
| libpthread | Yes | 用于支持互斥锁和读写锁(可能是 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.24.10 或更高版本。安装说明请参见 go.dev。 Zabbix agent 2 及其插件使用的 Go 库列在 Zabbix Git 仓库中(仓库中标记为 indirect 的库是其他所需库的依赖项):- Zabbix agent 2 - Plugin support - PostgreSQL - MongoDB - MSSQL - Ember+ - Example plugin |
| libpcre/libpcre2 | One of | PCRE/PCRE2 库是支持 Perl Compatible Regular Expression(PCRE)所必需的。 根据 GNU/Linux 发行版的不同,名称可能有所差异,例如 libpcre3 或 libpcre1。支持 PCRE v8.x 和 PCRE2 v10.x。日志监控需要此库。Windows 上也需要。 |
| libopenssl | No | 使用加密功能时需要。 UNIX 平台需要 OpenSSL 1.0.1 或更高版本。 OpenSSL 库必须启用 PSK 支持。不支持 LibreSSL。 Microsoft Windows 系统需要 OpenSSL 1.1.1 或更高版本。 |
Web服务
使用 Zabbix 网络服务生成预定报告时,支持最新稳定版的 Google Chrome version。
用于构建网络服务的所需 Go version 应与用于 Zabbix agent 2 的版本一致。
Java 网关
如果您是从源代码仓库或归档包获取的 Zabbix,那么所需的依赖项已经包含在源代码树中。
如果您是从发行版的软件包获取的 Zabbix,那么所需的依赖项已经由打包系统提供。
在上述两种情况下,软件都已可直接使用,无需额外下载。
不过,如果您希望提供这些依赖项的自定义版本(例如,您正在为某个 Linux 发行版准备软件包),下面列出了 Java 网关已知可正常工作的库版本。 Zabbix 也可能与这些库的其他版本兼容。
下表列出了当前随原始代码中的 Java 网关一起打包的 JAR 文件:
| Library | Mandatory status | Bundled version | Comments |
|---|---|---|---|
| android-json | Yes | 4.3r1 | JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。这是从 Android SDK 中提取的、与 org.json 兼容的 Android 实现。 |
| logback-classic | 1.5.16 | ||
| logback-core | 1.5.16 | ||
| slf4j-api | 2.0.16 |
Java 网关可以使用 Oracle Java 或开源 OpenJDK(1.6 或更高版本)进行构建。 Zabbix 提供的软件包使用 OpenJDK 编译。 下表列出了各发行版用于构建 Zabbix 软件包的 OpenJDK 包:
| Distribution | OpenJDK package |
|---|---|
| AlmaLinux 9 | java-11-openjdk-devel (amd64: 11.0.19.0.7-4; arm64: 11.0.20.0.8-3) |
| 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 9 | java-11-openjdk-devel (amd64, arm64: 11.0.18.0.10-3) |
| 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 12 | default-jdk-headless (amd64, arm64: 2:1.17-74) |
| Debian 11 | default-jdk-headless (amd64: 2:1.11-72) |
| 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) |
| 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) |
| Rocky Linux 9 | java-11-openjdk-devel (amd64: 11.0.19.0.7-4; arm64: 11.0.20.0.8-3) |
| Rocky Linux 8 | java-1.8.0-openjdk-devel (amd64: 1.8.0.372.b07-4; arm64: 1.8.0.382.b05-2) |
| 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 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) |
默认端口号
以下列出的每个组件的开放端口适用于默认配置:
| 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 gateway | 10052 | TCP | on demand |
| Zabbix web service | 10053 | TCP | on demand |
| Zabbix前端 | 80 | HTTP | on demand |
| 443 | HTTPS | on demand | |
| Zabbix trapper | 10051 | TCP | on demand |
应开放防火墙中的端口号以启用Zabbix通信。 通常,传出的TCP连接不需要显式的防火墙设置。
数据库大小
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组件的所有系统上保持系统时间同步。
网络要求
以下列出的开放端口适用于各组件的默认配置。
| 端口 | 组件 |
|---|---|
| 前端 | 80 上的 http,443 上的 https |
| 服务器 | 10051(用于主动 proxy/agents) |
| 主动 Proxy | 10051 |
| 被动 Proxy | 10051 |
| Agent2 | 10050 |
| Trapper | |
| JavaGateway | 10052 |
| WebService | 10053 |
应 在防火墙中打开端口号以启用与 Zabbix 的外部通信。 通常,传出的 TCP 连接不需要显式的防火墙设置。