内存
Zabbix 需要物理内存和磁盘内存。所需的磁盘内存量显然取决于正在监控的主机和参数的数量。如果您计划保留受监控参数的长期历史记录,则应该考虑至少几 GB 的空间,以便有足够的空间将历史记录存储在数据库中。每个 Zabbix 守护进程都需要与数据库服务器建立多个连接。分配给连接的内存量取决于数据库引擎的配置。
您拥有的物理内存越多,数据库(以及 Zabbix )的工作速度就越快!
CPU
Zabbix,尤其是 Zabbix 数据库可能需要大量 CPU 资源,该具体取决于被监控参数的数量和所选的数据库引擎。
其它硬件
在 Zabbix 中使用 SMS 通知支持需要串行通信端口和串行 GSM 调制解调器。USB 转串行转换器也可以使用。
该表提供了硬件配置示例,假设是 Linux/BSD/Unix 平台。
这些是开始时的大小和硬件配置示例。 每个 Zabbix 安装都是独一无二的。 确保在暂存或开发环境中对 Zabbix 系统的性能进行基准测试,以便在将 Zabbix 安装部署到其生产环境之前充分了解您的要求。
安装大小 | 监控指标1 | CPU/vCPU 内核 | 内存 (GiB) |
数据库 | Amazon EC22 |
---|---|---|---|---|---|
小 | 1 000 | 2 | 8 | MySQL 服务器, Percona 服务器, MariaDB 服务器, PostgreSQL |
m6i.large/m6g.large |
中 | 10 000 | 4 | 16 | MySQL 服务器, Percona 服务器, MariaDB 服务器, PostgreSQL |
m6i.xlarge/m6g.xlarge |
大 | 100 000 | 16 | 64 | MySQL 服务器, Percona 服务器, MariaDB 服务器, PostgreSQL, Oracle |
m6i.4xlarge/m6g.4xlarge |
非常大 | 1 000 000 | 32 | 96 | MySQL 服务器, Percona 服务器, MariaDB 服务器, PostgreSQL, Oracle |
m6i.8xlarge/m6g.8xlarge |
1 1 个指标 = 1 个项目 + 1 个触发器 + 1 个图表
2 以 Amazon 通用 EC2 实例为例,使用 ARM64 或 x86_64 架构,在生产环境中安装之前,应在 Zabbix 安装评估和测试期间选择适当的实例类型,如计算/内存/存储优化。
实际配置很大程度上取决于活动监控项的数量和刷新率(请参阅本节的 数据库大小 部分 详情页)。 对于大型安装,强烈建议在单独的机器上运行数据库。
由于安全要求和监控服务器的关键任务性质,UNIX 是唯一能够持续提供必要性能、容错能力和弹性的操作系统。Zabbix 运行在市场领先的版本上。
Zabbix 组件可用于以下平台并已经过测试:
平台 | Server | 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 操作系统上运行。自 XP(64 位版本)以来,所有 Windows 桌面版和服务器版均支持 Zabbix agent。 Zabbix agent 无法在 6.1 TL07 / AIX 7.1 TL01 版本以下的 AIX 平台上运行。为防止 Zabbix agent2 中出现严重的安全漏洞,它仅使用 受支持的go版本。从 Go 1.21 开始, 所需最低的windows版本 有所提高,因此,Zabbix agent2 的最低 Windows 版本为 Windows 10/Server 2016。
如果使用加密编译,Zabbix 会禁用核心转储,如果系统不允许禁用核心转储,则不会启动。
Zabbix是围绕现代Web服务器,领先的数据库引擎和PHP脚本语言构建的。
如果声明为必需的,则所需的软件/库是绝对必要的。可选的则是支持某些特定功能所需的。
软件 | 强制状态 | 支持版本 | 注释 |
---|---|---|---|
MySQL/Percona | 任选其一 | 8.0.30-8.3.X | 如果使用 MySQL(或 Percona)作为 Zabbix 后端数据库,则需要使用 InnoDB 引擎。 我们建议使用 C API (libmysqlclient) 库来构建server/proxy。 |
MariaDB | 10.5.00-11.3.X | 需要 InnoDB 引擎。 建议版本为 10.5。 我们建议使用 MariaDB Connector/C 库来构建 server/proxy。 另请参阅: MariaDB 可能出现的死锁。 |
|
Oracle | 19c - 21c | 如果使用 Oracle 作为 Zabbix 后端数据库,则必需。 自 Zabbix 7.0 起,不再 支持 Oracle DB 。 |
|
PostgreSQL | 13.0-16.X | 如果使用 PostgreSQL 作为 Zabbix 后端数据库,则必需。 根据安装大小,可能需要增加 PostgreSQL work_mem 配置属性(默认值为 4MB),以便数据库用于特定操作的内存量足够,并且查询执行不会花费太多时间。 |
|
TimescaleDB for PostgreSQL | 2.1.0-2.14.X | 如果将 TimescaleDB 用作 PostgreSQL 数据库扩展,则需要此版本。请确保安装支持压缩的 TimescaleDB 社区版。 请注意,自 PostgreSQL 15起支持TimescaleDB 2.10 。 您还可以参考 官方文档 了解有关 PostgreSQL 和 TimescaleDB 版本兼容性的详细信息。 |
|
SQLite | 可选 | 3.3.5-3.34.X | SQLite 仅支持 Zabbix proxy。如果使用 SQLite 作为 Zabbix proxy 数据库,则需要此配置。 |
smartmontools | 7.1 或更高 | Zabbix agent2 所需。 | |
who | 用户计数插件必需。 | ||
dpkg | system.sw.packages 插件所需。 | ||
pkgtool | system.sw.packages 插件所需。 | ||
rpm | system.sw.packages 插件所需。 | ||
pacman | system.sw.packages 插件所需。 | ||
q applets | qlist 和qsize , 作为 q applets 一部分, 是 Gentoo Linux 上的 system.sw.packages 插件所必需的。 |
虽然 Zabbix 可以使用操作系统中可用的数据库,但为了获得最佳体验,我们建议使用从官方数据库开发人员存储库安装的数据库。
Zabbix 前端支持的最小屏幕宽度为 1200px。
如果声明为必需的,则所需的软件/库是绝对必要的。可选的则是支持某些特定功能所需的。
软件 | 强制状态 | 版本 | 备注 |
---|---|---|---|
Apache | 任选其一 | 2.4 或 更高 | |
Nginx | 1.20 或 更高 | ||
PHP | 是 | 8.0.0 - 8.3.X | |
PHP extensions: | |||
gd | 是 | 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 | 不 | pphp-ldap。仅当前端使用 LDAP 身份验证时才需要。 | |
openssl | php-openssl。仅当前端使用 SAML 身份验证时才需要。 | ||
mysqli | 如果使用 MySQL 作为 Zabbix 后端数据库,则必需。 | ||
oci8 | 如果使用 Oracle 作为 Zabbix 后端数据库,则必需。 | ||
pgsql | 如果使用 PostgreSQL 作为 Zabbix 后端数据库,则必需。 | ||
curl | php-curl。如果未安装,前端将照常工作,但是 Duo Universal Prompt 多因素身份验证 选项将不可用。 |
Zabbix 提供的第三方前端库:
库名称 | 强制状态 | 最小版本 | 备注 |
---|---|---|---|
jQuery JavaScript Library | 是 | 3.6.0 | 简化跨浏览器开发过程的 JavaScript 库。 |
jQuery UI | 1.12.1 | 一组基于 jQuery 构建的用户界面交互、效果、小部件和主题。 | |
OneLogin's SAML PHP Toolkit | 4.0.0 | 一个 PHP 工具包,添加了 SAML 2.0 身份验证支持以便能够登录 Zabbix。 | |
Symfony Yaml Component | 5.1.0 | 增加了以 YAML 格式导出和导入 Zabbix 配置元素的支持。 |
Zabbix 也可以在 Apache、MySQL、Oracle 和 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) 的预处理器脚本语言。 |
必须启用 Cookies 和 JavaScript。
支持 Google Chrome、Mozilla Firefox、Microsoft Edge、Apple Safari 和 Opera 的最新稳定版本。
已实施 IFrames 的同源策略,这意味着 Zabbix 不能放置在不同域的框架中。
但是,如果放置在框架中的页面和 Zabbix 前端位于同一域中,则放置在 Zabbix 框架中的页面将可以访问 Zabbix 前端(通过 JavaScript)。如果将 之类的页面放置http://secure-zabbix.com/cms/page.html
在 上的仪表板中http://secure-zabbix.com/zabbix/
,它将具有对 Zabbix 的完全 JS 访问权限。
如果声明为必需的,则所需的软件/库是绝对必要的。可选的则是支持某些特定功能所需的。
要求 | 强制状态 | 描述 |
---|---|---|
libpcre/libpcre2 | 之一 | PCRE/PCRE2 库是 Perl Compatible Regular Expression (PCRE) 支持所必需的。 命名可能因 GNU/Linux 发行版而异,例如“libpcre3”或“libpcre1”。支持 PCRE v8.x 和 PCRE2 v10.x。 |
libevent | 是 | 进程间通信所需。版本 1.4 或更高版本。 |
libevent-pthreads | 进程间通信所需。 | |
libpthread | 需要互斥和读写锁支持(可能是 libc 的一部分)。 | |
libresolv | DNS 解析所需(可能是 libc 的一部分)。 | |
libiconv | 文本编码/格式转换所需(可能是 libc 的一部分)。Linux 上的 Zabbix 服务器必需。 | |
libz | 需要压缩支持。 | |
libm | 数学库。仅 Zabbix 服务器需要。 | |
libmysqlclient | 之一 | 如果使用 MySQL,则必需。 |
libmariadb | 如果使用 MariaDB,则需要。 | |
libclntsh | 如果使用 Oracle,则必需;libclntsh版本必须与所使用的 Oracle 数据库的版本匹配或更高。 | |
libpq5 | 如果使用 PostgreSQL,则必需;_libpq5_版本必须与所使用的 PostgreSQL 数据库的版本匹配或更高。 | |
libsqlite3 | 如果使用 Sqlite,则需要。仅适用于 Zabbix proxy。 | |
libOpenIPMI | 不 | 需要 IPMI 支持。仅 Zabbix server 需要。 |
libssh2 or libssh | SSH 检查所需。版本 1.0 或更高版本 (libssh2);0.9.0 或更高版本 (libssh)。 | |
libcurl | 需要用于 Web 监控、VMware 监控、SMTP 身份验证、web.page.* 、Zabbix agent 监控项、HTTP 代理监控项和 Elasticsearch(如果使用)需要 7.19.1 或更高版本(建议使用 7.28.0 或更高版本)。Libcurl 版本要求: - SMTP 身份验证:版本 7.20.0 或更高版本 - Elasticsearch: 版本 7.28.0 或更高版本 要使用升级的 cURL 功能,请重新启动 Zabbix server/proxy 和agent(针对 web.page.* 项目)。 |
|
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 监控项]是必需的。(/manual/config/items/itemtypes/simple_checks#icmp_pings)。 |
要求 | 强制状态 | 描述 |
---|---|---|
libpcre/libpcre2 | 之一 | PCRE/PCRE2 库是 Perl 兼容正则表达式 (PCRE) 支持所必需的。 命名可能因 GNU/Linux 发行版而异,例如“libpcre3”或“libpcre1”。支持 PCRE v8.x 和 PCRE2 v10.x。 日志监控所必需的。Windows 上也必需。 |
libpthread | 是 | 互斥和读写锁支持所必需的(可能是 libc 的一部分)。Windows 上不需要。 |
libresolv | DNS 解析所需(可能是 libc 的一部分)。Windows 上不需要。 | |
libiconv | 需要将日志项、文件内容、文件正则表达式和 regmatch 项中的文本编码/格式转换为 UTF-8(可以是 libc 的一部分)。Windows 上不需要。 | |
libgnutls or libopenssl | 不 | 如果使用 加密则需要。 最低版本:libgnutls - 3.1.18,libopenssl - 1.0.1 在 Microsoft Windows 上需要 OpenSSL 1.1.1 或更高版本。 |
libldap | 如果使用 LDAP,则需要。Windows 不支持。 | |
libcurl | Rweb.page.* Zabbix agent监控项必需。不支持 Windows。 需要 7.19.1 或更高版本(建议使用 7.28.0 或更高版本)。 要使用升级的 cURL 功能,请重新启动 Zabbix agent。 |
|
libmodbus | 仅在使用 Modbus 监控时才需要。 版本 3.0 或更高版本。 |
要求 | 强制状态 | 描述 |
---|---|---|
libpcre/libpcre2 | 之一 | PCRE/PCRE2 库是Perl 兼容正则表达式 (PCRE) 支持所必需的。 命名可能因 GNU/Linux 发行版而异,例如“libpcre3”或“libpcre1”。支持 PCRE v8.x 和 PCRE2 v10.x。 日志监控所必需的。Windows 上也必需。 |
libopenssl | 不 | 使用加密时需要。 UNIX平台上需要 OpenSSL 1.0.1 或更高版本 OpenSSL 库必须启用 PSK 支持。不支持 LibreSSL。 在 Microsoft Windows 系统上,需要 OpenSSL 1.1.1 或更高版本。 |
Go 库
1 “间接”表示它在agent 使用的库之一中使用。这是必需的,因为 Zabbix 使用使用该包的库。
另请参阅可加载插件的依赖项:
如果您从源存储库或档案中获取 Zabbix,则必要的依赖项已包含在源码中。
如果您从发行版的软件包中获取了 Zabbix,那么打包系统已经提供了必要的依赖项。
在上述两种情况下,软件都可以直接使用,无需额外下载。
但是,如果您希望提供这些依赖项的版本(例如,如果您正在为某些 Linux 发行版准备软件包),下面是已知 Java 网关可以使用的库版本列表。Zabbix 也可以使用这些库的其他版本。
下表列出了原始代码中当前与 Java 网关捆绑的 JAR 文件:
库 | 强制状态 | 最小版本 | 备注 |
---|---|---|---|
android-json | 是 | 4.3r1 | JSON(JavaScript 对象表示法)是一种轻量级数据交换格式。这是从 Android SDK 中提取的兼容 org.json 的 Android 实现。 |
logback-classic | 1.2.9 | ||
logback-core | 1.2.9 | ||
slf4j-api | 1.7.32 |
Java 网关可以使用 Oracle Java 或开源 OpenJDK(1.6 或更高版本)构建。Zabbix 提供的软件包是使用 OpenJDK 编译的。下表提供了按发行版构建 Zabbix 软件包所用的 OpenJDK 版本的信息:
系统 | OpenJDK 版本 |
---|---|
RHEL 8 | 1.8.0 |
RHEL 7 | 1.8.0 |
SLES 15 | 11.0.4 |
Debian 10 | 11.0.8 |
Ubuntu 20.04 | 11.0.8 |
Ubuntu 18.04 | 11.0.8 |
每个组件的开放端口以下列表适用于默认配置:
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 frontend | 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 将接收到的值保存一段固定的时间,通常为几周或几个月。 每个新值都需要一定量的磁盘空间用于数据和索引。
所以,如果我们每秒收到 50 个值,且希望保留 30 天的历史数据,值的总数将大约在 (30*24*3600)* 50 = 129.600.000,即大约 130M 个值。
根据所使用的数据库引擎,接收值的类型(浮点数、整数、字符串、日志文件等),单个值的磁盘空间可能在 40 字节到数百字节之间变化。通常,数值类型的每个值大约为 90 个字节2。在上面的例子中,这意味着 130M 个值需要占用 130M * 90 bytes = 10.9GB 磁盘空间。
文本/日志类型的监控项值的大小是无法确定的,但可以以每个值大约 500 字节来计算。
Zabbix 为表 trends 中的每个项目保留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 的磁盘空间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 配置 + 历史数据 + 趋势数据 + 事件数据
在安装 Zabbix 后不会立即使用磁盘空间。 数据库大小取决于 housekeeper 设置,在某些时间点增长或停止增长。
服务器上拥有精确的系统时间对 Zabbix 的运行非常重要。 ntpd 是最流行的守护程序,它将主机的时间与其他计算机的时间同步。强烈建议在运行 Zabbix 组件的所有系统上保持系统时间同步。
每个组件的开放端口以下列表适用于默认配置。
组件 | 端口备注 |
---|---|
Frontend | http on 80, https on 443 |
Server | 10051 (for use with active proxy/agents) |
Active Proxy | 10051 |
Passive Proxy | 10051 |
Agent2 | 10050 |
Trapper | |
JavaGateway | 10053 |
WebService | 10053 |
应在防火墙中打开端口号以启用放行 Zabbix 的外部通信。传出 TCP 连接通常不需要明确的防火墙设置。