2 安装要求
硬件
内存和磁盘
Zabbix同时需要物理内存和磁盘空间。刚开始使用Zabbix,建议128MB物理内存和256MB可用磁盘空间。然而, 具体需要的内存大小和磁盘空间要根据主机数量和监控参数而定。如果你计划对监控的参数进行长期保存,你应该考虑至少在数据库中预留几个GB的空间,以用来保留历史数据。 每个Zabbix的守护进程需要与数据库服务器建立多个连接。分配给连接的内存数量,取决于数据库引擎的配置。
你使用的内存越多,你的数据库(也包括Zabbix)工作得越快!
CPU
根据监控参数及选择的数据库引擎,Zabbix,特别是Zabbix数据库,可能需要大量的CPU资源,
其他硬件
如果需要启用短信(SMS)通知功能,需要串行通讯口(serial communication port)和串行GSM调制解调器(serial GSM modem)。USB转串行转接器也同样可以工作。
硬件配置示例
下表是几个硬件配置的示例:
名称 | 平台 | CPU/内存 | 数据库 | 监控主机数量 |
---|---|---|---|---|
小型 | CentOS | 虚拟应用 | MySQL InnoDB | 100 |
中型 | CentOS | 2 CPU cores/2GB | MySQL InnoDB | 500 |
大型 | RedHat Enterprise Linux | 4 CPU cores/8GB | RAID10 MySQL InnoDB or PostgreSQL | >1000 |
巨大型 | RedHat Enterprise Linux | 8 CPU cores/16GB | 快速RAID10 MySQL InnoDB or PostgreSQL | >10000 |
具体的配置极其依赖于Active Item数量和轮询频率。如需要进行大规模部署,强烈建议将数据库进行独立部署。
支持平台
由于监控服务器的安全要求及关键任务的特性,UNIX是唯一可以持续提供必要性能、容错性和扩展性的操作系统。Zabbix可以运行在市场上的主流版本。
经测试,Zabbix可运行在下列平台:
Linux
IBM AIX
FreeBSD
NetBSD
OpenBSD
HP-UX
Mac OS X
Solaris
Windows: Windows 2000以后的所有桌面和服务器版本 (只可运行Zabbix agent)
Zabbix可能也可以运行在其他Unix类操作系统。
如果使用加密编译,那么Zabbix会禁用核心转储(Core dumps);同时,如果系统不允许禁用核心转储,那么Zabbix无法启动。
软件
Zabbix基于先进的Apache Web服务器、领先的数据库引擎和PHP脚本语言进行构建。
数据库管理系统
软件 | 版本 | 备注 |
---|---|---|
MySQL | 5.0.3或以上 | 使用MySQL作为Zabbix后端数据库。需要InnoDB引擎。 |
Oracle | 10g或以上 | 使用Oracle作为Zabbix后端数据库。 |
PostgreSQL | 8.1或以上 | 使用PostgreSQL作为Zabbix后端数据库。建议使用PostgreSQL 8.3以上的版本。以 提供更好的VACUUM性能. 。 |
SQLite | 3.3.5或以上 | 使用SQLite作为Zabbix后端数据库。 |
IBM DB2 | 9.7或以上 | 使用IBM DB2作为Zabbix后端数据库。 |
对于IBM DB2的支持仅供测试!
虽然Zabbix proxy可以正常使用SQLite3,但是不推荐Zabbix server使用SQLite3。自Zabbix 2.4.0起,,Zabbix server和前端同时进行数据库访问,甚至可能导致数据库中断!
前端
Zabbix前端需要使用下列软件:
软件 | 版本 | 备注 |
---|---|---|
Apache | 1.3.12或以上 | |
PHP | 5.4.0或以上 | |
PHP扩展包: | ||
gd | 2.0或以上 | PHP GD扩展包必须支持PNG图片 (—with-png-dir), JPEG (—with-jpeg-dir) images and FreeType 2 (—with-freetype-dir). |
bcmath | php-bcmath (—enable-bcmath) | |
ctype | php-ctype (—enable-ctype) | |
libXML | 2.6.15或以上 | php-xml or php5-dom,由分发者提供单独的部署包。 |
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 | php-ldap.只有当在前端使用LDAP认证时才需要。 | |
ibm_db2 | 使用IBM DB2作为Zabbix后端数据库所需要的组件。 | |
mysqli | 使用MySQL作为Zabbix后端数据库所需要的组件。 | |
oci8 | 使用Oracle作为Zabbix后端数据库所需要的组件。 | |
pgsql | 使用PostgreSQL作为Zabbix后端数据库所需要的组件。 | |
sqlite3 | 使用SQLite作为Zabbix后端数据库所需要的组件。 |
Zabbix 可能也可以运行在旧版本的Apache,MySQL,Oracle,和PostgreSQL上。
如果需要使用默认DejaVu以外的字体, 可能会需要PHP的imagerotate功能。如果缺少这个功能,在监控(Monitoring) → 概要(Overview)的标题栏及其他位置,字体可能无法正常地显示。该功能只用在使用bundled GD编译PHP时才可用。在Debian和某些分发版本中,这个问题不存在。
客户端浏览器
必须启用Cookies和Java Script功能。支持最新版本的Google Chrome,Mozilla Firefox,Microsoft Internet Explorer和Opera。其他浏览器(如Apple Safari, Konqueror)可能也支持Zabbix。
服务器
要求 | 描述 |
---|---|
OpenIPMI | 支持IPMI功能所需要的组件。 |
libssh2 | 支持SSH功能所需要的组件。需要1.0或以上版本。 |
fping | 支持ICMP ping功能所需要的组件。 |
libcurl | 支持WEB监控,VMware监控及SMTP认证所需要的组件。对于SMTP认证,需要7.20.0或以上版本。 |
libiksemel | 支持Jabber功能所需要的组件。 |
libxml2 | 支持VMware监控所需要的组件。 |
net-snmp | 支持SNMP监控所需要的组件。 |
Java网关(Java gateway)
如果你从源代码库或者归档中获得Zabbix,那么必要的依赖关系已经包含在了源代码树中了。
如果你从分发包中获得Zabbix,那么必要的依赖关系已经由封装系统提供了。
在上述两种情况下,我们可以准备部署软件了,而不需要下载额外的依赖包。
然而,如果你希望使用这些依赖关系所涉及到的安装包的其他版本(比如你正在为其他Linux分发版准备安装包),可参考下表,这些库的版本可以正常运行Java gateway。这些库的其他版本可能也可以正常运行Zabbix。
下表列出了目前在源代码中与Java gateway捆绑的JAR文件版本:
库 | 许可 | 网站 | 备注 |
---|---|---|---|
logback-core-0.9.27.jar | EPL 1.0, LGPL 2.1 | http://logback.qos.ch/ | 0.9.27, 1.0.13, 及 1.1.1. 测试通过 |
logback-classic-0.9.27.jar | EPL 1.0, LGPL 2.1 | http://logback.qos.ch/ | 0.9.27, 1.0.13, 及 1.1.1. 测试通过 |
slf4j-api-1.6.1.jar | MIT License | http://www.slf4j.org/ | 1.6.1, 1.6.6, 及 1.7.6. 测试通过 |
android-json-4.3_r3.1.jar | Apache License 2.0 | https://android.googlesource.com/platform/libcore/+/master/json | 2.3.3_r1.1 及 4.3_r3.1 测试通过。关于创建JAR文件,可参考 src/zabbix_java/lib/README 文件的步骤。 |
Java gateway编译和运行在Java 1.6及以上版本。如需要对Java gateway预编译版本进行编译,建议使用Java 1.6进行编译,从而保证至少可以在一个版本的Java上正常运行。
数据库容量
Zabbix配置数据需要使用固定的磁盘空间,而且这个空间不会过多增长。
Zabbix数据库容量主要依赖于下列这些参数,这些参数也决定了存储历史数据所需要的空间:
- 每秒处理值的数量(Number of processed values per second)
这个参数是指每秒种Zabbix server收到的新值数量的平均数。比如,如果我们有3000个监控项(item),监控周期是60s,经计算所得,每秒处理值的数量为3000/60 = 50.
这意味着每秒钟有50个新值写入Zabbix数据库。
- 历史(History)数据的回收清理设置(Housekeeper)
Zabbix会在一个固定周期内保存收到的值。正常情况下保留数周或者数月。每一个新收到的值会占用一定数量的磁盘空间以存放数据和索引。
所以,如果我们每秒钟收到50个值,且希望保留30天的历史数据,值的总数将大约在 (30*243600) 50 = 129,600,000,即大约130M个值。
根据所使用的数据库引擎,以及收到值的类型【浮点(floats),整型(integers),字符串(strings),日志文件(log files)等】,单个值的磁盘使用量从40字节到数百个字节不等。一般而言,数值型(Numeric)的监控项占用大约90字节。按之前的例子, 这意味着130M个值需要占用 130M 90 bytes = *10.9GB 的磁盘空间。
文本(text)/日志(log)类型的监控项值的大小无法准确地预测,但你可以按每个值大约500字节来计算。
- 趋势(Trends)数据的回收清理设置(Housekeeper)
Zabbix为trends表中的每个监控项的值,保留一组数据:一个小时的最大值/最小值/平均值/数量。这些数据用于趋势图表和历史图表的展现。用户无法自定义这一小时的保留周期。
根据数据库的类型,Zabbix数据库需要为每组值总共占用约90字节的空间。如果你需要保留趋势数据5年,那么3000个监控项值,每年需要 300024365 90 = 2.2GB 的空间 , 即5年需要 *11GB 的空间。
- 事件(Events)数据的回收清理设置(Housekeeper)
每个Zabbix事件需要大约170字节的磁盘空间。很难估计Zabbix每天生成的事件数量。最糟糕的情况下,我们可能需要假设Zabbix每秒会生成一个事件。
这意味着,如果我们需要保留3年的事件,需要3*365243600 170 = *15GB的磁盘空间。
下表列出了用于计算Zabbix系统所需磁盘空间的计算公式:
范围 | 所需磁盘空间的计算公式 (单位:字节) |
---|---|
Zabbix配置文件 | 固定大小。一般10MB或更少。 |
历史(History) | days(items/refresh rate)243600bytesitems : 监控项数量days : 保留历史数据的天数refresh rate : 监控项平均轮询时间bytes : 保留单个值所需要占用的字节数,依赖于数据库引擎,一般大约90字节。 |
趋势(Trends) | days(items/3600)243600bytesitems : 监控项数量days : 保留趋势数据的天数bytes : 保留单个趋势数据所需要占用的字节数,依赖于数据库引擎,一般大约90字节。 |
事件(Events) | daysevents243600bytesevents : 每秒事件数。最糟糕的情况下,每秒一(1)个事件。days : 保留事件数据的天数bytes : 保留单个事件所需要占用的字节数,依赖于数据库引擎,一般大约90字节。 |
根据现实环境中使用的MySQL后端数据库的统计,数值型(Numeric)监控项的值平均占用约90个字节,事件(Events)平均占用约170个字节。
因此,所需要的磁盘总空间按下列方法计算:配置(Configuration) + 历史(History) + 趋势(Trends) + 事件(Events)安装完Zabbix,磁盘空间不会立即被分配。数据库大小根据回收清理(housekeeper)设置,在某些时间点增长或停止增长。
时钟同步
对于Zabbix稳定运行而言,服务获得精确的系统时间是非常重要的。ntpd 是一个最流行的用于同步主机和其他服务器之间的时间的后台程序。对于所有运行Zabbix组件的系统,强烈建议这些系统的时间保持同步。
如果时间未同步,Zabbix将在建立数据连接之后,根据得到的客户端/服务器的时间戳,将获得值的时间戳转化为Zabbix server的时间,并且会根据客户端-服务器的时间差对获得值的时间戳进行调整。为了保持简单,并且避免可能的并发问题出现,网络延迟会被忽略。因此,通过主动连接(active agent, active proxy, sender)获得的时间戳数据包含网络延迟,通过被动连接(passive proxy)获得的数据已经减去了网络延迟。所有其他检查服务器花费的时间和它们的时间戳不调整。