这是原厂英文文档的翻译页面. 欢迎帮助我们 完善文档.
2022 Zabbix中国峰会
2022 Zabbix中国峰会

2 安装要求

硬件

内存

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 服务器/代理也可以在其他类 Unix 操作系统上运行。自 XP(64 位版本)以来,所有 Windows 桌面版和服务器版均支持 Zabbix 代理。 Zabbix 代理无法在 6.1 TL07 / AIX 7.1 TL01 版本以下的 AIX 平台上运行。为防止 Zabbix 代理 2 中出现严重的安全漏洞,它仅使用 受支持的go版本。从 Go 1.21 开始, 所需最低的windows版本 有所提高,因此,Zabbix 代理 2 的最低 Windows 版本为 Windows 10/Server 2016。

如果使用加密编译,Zabbix 会禁用核心转储,如果系统不允许禁用核心转储,则不会启动。

软件

Zabbix是围绕现代Web服务器,领先的数据库引擎和PHP脚本语言构建的。

第三方外部周边软件

如果声明为必需的,则所需的软件/库是绝对必要的。可选的则是支持某些特定功能所需的。

软件 强制状态 支持版本 注释
MySQL/Percona 任选其一 8.0.30-8.3.X 如果使用 MySQL(或 Percona)作为 Zabbix 后端数据库,则需要使用 InnoDB 引擎。

我们建议使用 C API (libmysqlclient) 库来构建服务器/代理。
MariaDB 10.5.00-11.3.X 需要 InnoDB 引擎。

建议版本为 10.5。

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

另请参阅: 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 代理。如果使用 SQLite 作为 Zabbix 代理数据库,则需要此配置。
smartmontools 7.1 或更高 Zabbix 代理 2 所需。
who 用户计数插件必需。
dpkg system.sw.packages 插件所需。
pkgtool system.sw.packages 插件所需。
rpm system.sw.packages 插件所需。
pacman system.sw.packages 插件所需。
q applets qlistqsize, 作为 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) 的预处理器脚本语言。
客户端的 Web 浏览器

必须启用 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 代理。
libOpenIPMI 需要 IPMI 支持。仅 Zabbix 服务器需要。
libssh2 or libssh SSH 检查所需。版本 1.0 或更高版本 (libssh2);0.9.0 或更高版本 (libssh)。
libcurl 需要用于 Web 监控、VMware 监控、SMTP 身份验证、web.page.*、Zabbix 代理 监控项、HTTP 代理项目和 Elasticsearch(如果使用)需要 7.19.1 或更高版本(建议使用 7.28.0 或更高版本)。
Libcurl 版本要求:
- SMTP 身份验证:版本 7.20.0 或更高版本
- Elasticsearch: 版本 7.28.0 或更高版本
要使用升级的 cURL 功能,请重新启动 Zabbix 服务器/代理和代理(针对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)。
Agent
要求 强制状态 描述
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 代理监控项必需。不支持 Windows。
需要 7.19.1 或更高版本(建议使用 7.28.0 或更高版本)。
要使用升级的 cURL 功能,请重新启动 Zabbix 代理。
libmodbus 仅在使用 Modbus 监控时才需要。
版本 3.0 或更高版本。
Agent 2
要求 强制状态 描述
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 库

要求 强制状态 最小版本 描述
git.zabbix.com/ap/plugin-support 1.X.X Zabbix 自己的支持库。主要用于插件。
github.com/BurntSushi/locker 0.0.0 命名读/写锁,访问同步。
github.com/chromedp/cdproto 0.0.0 为 Chrome DevTools 协议域生成的命令、类型和事件。
github.com/chromedp/chromedp 0.6.0 Chrome DevTools 协议支持(报告生成)。
github.com/dustin/gomemcached 0.0.0 用于 go 的 memcached 二进制协议工具包。
github.com/eclipse/paho.mqtt.golang 1.2.0 处理 MQTT 连接的库。
github.com/fsnotify/fsnotify 1.4.9 Go 的跨平台文件系统通知。
github.com/go-ldap/ldap 3.0.3 Go 编程语言的基本 LDAP v3 功能。
github.com/go-ole/go-ole 1.2.4 Go 的 Win32 ole 实现。
github.com/godbus/dbus 4.1.0 D-Bus 的本机 Go 绑定。
github.com/go-sql-driver/mysql 1.5.0 MySQL 驱动程序。
github.com/godror/godror 0.20.1 Oracle DB 驱动程序。
github.com/mattn/go-sqlite3 2.0.3 Sqlite3 驱动程序。
github.com/mediocregopher/radix/v3 3.5.0 Redis 客户端。
github.com/memcachier/mc/v3 3.0.1 二进制 Memcached 客户端。
github.com/miekg/dns 1.1.43 DNS 库。
github.com/omeid/go-yarn 0.0.1 可嵌入文件系统映射的键字符串存储。
github.com/goburrow/modbus 0.1.0 Modbus 的容错实现。
golang.org/x/sys 0.0.0 用于与操作系统进行低级交互的 Go 包。
还用于插件支持库。用于 MongoDB 和 PostgreSQL 插件。
github.com/Microsoft/go-winio 在windows平台上。
是, 间接1
0.6.0 Windows 命名管道实现。
也用于插件支持库。用于 MongoDB 和 PostgreSQL 插件。
github.com/goburrow/serial 是, 间接1 0.1.0 Modbus 的串行库。
golang.org/x/xerrors 0.0.0 处理错误的功能。
gopkg.in/asn1-ber.v1 1.0.0 ASN1 BER 的编码/解码库。
github.com/go-stack/stack 不, 间接1 1.8.0
github.com/golang/snappy 0.0.1
github.com/klauspost/compress 1.13.6
github.com/xdg-go/pbkdf2 1.0.0
github.com/xdg-go/scram 1.0.2
github.com/xdg-go/stringprep 1.0.2
github.com/youmark/pkcs8 0.0.0

1 “间接”表示它在代理使用的库之一中使用。这是必需的,因为 Zabbix 使用使用该包的库。

另请参阅可加载插件的依赖项:

Java 网关

如果您从源存储库或档案中获取 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 数据库中。

  • Housekeeper 的历史记录设置

Zabbix 将接收到的值保存一段固定的时间,通常为几周或几个月。 每个新值都需要一定量的磁盘空间用于数据和索引。

所以,如果我们每秒收到 50 个值,且希望保留 30 天的历史数据,值的总数将大约在 (30*24*3600)* 50 = 129.600.000,即大约 130M 个值。

根据所使用的数据库引擎,接收值的类型(浮点数、整数、字符串、日志文件等),单个值的磁盘空间可能在 40 字节到数百字节之间变化。通常,数值类型的每个值大约为 90 个字节2。在上面的例子中,这意味着 130M 个值需要占用 130M * 90 bytes = 10.9GB 磁盘空间。

文本/日志类型的监控项值的大小是无法确定的,但可以以每个值大约 500 字节来计算。

  • Housekeeper 的趋势记录设置

Zabbix 为表 trends 中的每个项目保留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 的磁盘空间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 连接通常不需要明确的防火墙设置。