2022 Zabbix中国峰会
2022 Zabbix中国峰会

3 从源代码包安装

您可以通过从源代码编译来获取最新版本的 Zabbix。

这里提供了从源代码安装 Zabbix 的具体步骤。

1 安装 Zabbix 守护进程

1 下载源代码存档

转到 Zabbix download page 下载源代码存档。待下载完毕后,执行以下命令解压缩源代码存档:

$ tar -zxvf zabbix-5.2.0.tar.gz

请在命令中输入正确的 Zabbix 版本。 它必须与下载的存档的名称匹配。

2 创建用户账户

对于所有 Zabbix 守护进程,需要一个非特权用户。 如果从非特权用户帐户启动 Zabbix 守护程序,它将以该用户身份运行。

然而,如果一个守护进程以“root”启动,它会切换到“zabbix”用户,且这个用户必须存在。在 Linux 系统中,可以使用下面命令建立一个用户(该用户属于自己的用户组,“zabbix”):

groupadd zabbix
       useradd -g zabbix zabbix

而对于 Zabbix 前端安装,并不需要单独的用户帐户。

如果 Zabbix serveragent 运行在相同的机器上,建议使用不同的用户运行来 Zabbix server 和 agent。 否则,如果两者都作为同一用户运行,则 Zabbix agent 可以访问 Zabbix server 配置文件,并且可以轻松检索到 Zabbix 中的任何管理员级别的用户,例如,数据库密码。

rootbin 或其他具有特殊权限的账户运行 Zabbix 是非常危险的。

3 创建 Zabbix 数据库

对于 Zabbix serverproxy 守护进程以及 Zabbix 前端,必须需要一个数据库。但是 Zabbix agent 并不需要。

SQL 脚本 用于创建数据库 schema 和插入 dataset。Zabbix proxy 数据库只需要数据库 schema,而 Zabbix server 数据库在建立数据库 schema 后,还需要 dataset。

当创建数据库后,继续执行编译 Zabbix 的步骤。

4 配置源代码

当配置 Zabbix server 或者 proxy 的源代码时,需要指定所使用的数据库类型。一次只能使用 Zabbix server 或 Zabbix proxy 进程编译一种数据库类型。

如果要查看所有受支持的配置选项,请在解压缩的 Zabbix 源代码目录中运行:

./configure --help

如果要配置 Zabbix server 和 Zabbix proxy 的源代码,您可以运行以下内容:

./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2

从 Zabbix 3.0.0 起,STMP 认证需要需要 cURL 7.20.0 或更高版本的 --with-libcurl 配置选项。
从 Zabbix 2.2.0 起,虚拟机监控需要 --with-libcurl 和 --with-libxml2 配置选项。

从 Zabbix 3.4 开始,Zabbix 将始终使用 PCRE 库进行编译;安装时它不是可选的。 --with-libpcre=[DIR] 只允许指向特定的基础安装目录,而不是通过 libpcre 文件的多个公共位置搜索。

如果要配置 Zabbix server 的源代码(使用 PostgreSQL 等),您可以运行:

./configure --enable-server --with-postgresql --with-net-snmp

如果要配置 Zabbix proxy 的源代码(使用 SQLite 等),您可以运行:

./configure --prefix=/usr --enable-proxy --with-net-snmp --with-sqlite3 --with-ssh2

如果要配置 Zabbix agent 的源代码,您可以运行:

./configure --enable-agent

您可以使用 --enable-static 标识静态连接类库。如果你打算在不同的服务器之间分发已编译的二进制文件,则必须使用此标识使这些二进制文件在没有必需库的情况下工作。请注意 --enable-static 在 Solaris 系统下无效

不建议在搭建 Zabbix server 的时候使用 --enable-static 选项。

为了静态搭建 Zabbix server,您必须拥有每个所需的外部类库的静态版本。配置脚本中不提供这些类库的严格检查。

命令行工具 zabbix_get 和 zabbix_sender 只有在 --enable-agent 选项启用时才会被编译。

如果 MySQL 客户端类库不处在默认的位置,则需要添加可选的 MySQL 的配置文件 --with-mysql=/<path_to_the_file>/mysql_config ,以选择所需的路径。

这可以有效解决,一个系统上安装了多个版本的 MySQL 或者 MariaDB 的情况。

使用 --with-ibm-db2 以标识指定的 CLI API 位置。
使用 --with-oracle 以标识指定的 OCI API 位置。

关于使用加密,详见 使用加密方式编译 Zabbix

5 安装

如果从 git 安装,需要先运行以下命令:

$ make dbschema

make install

这步需要使用一个拥有足够权限的用户来运行 (如 'root',或者使用 sudo)。

运行 make install 将使用在 /usr/local/sbin 下的守护进程二进制文件(zabbix_server, zabbix_agentd, zabbix_proxy)和在 /usr/local/bin 下的客户端二进制文件进行默认安装。

如需要指定 /usr/local 以外的位置,可在之前的配置源代码的步骤中使用 --prefix,例如 --prefix=/home/zabbix。在这个案例中,守护进程的二进制文件会被安装在 <prefix>/sbin 下,工具会安装在 <prefix>/bin 下。帮助文件会安装在 <prefix>/share 下。

6 查看和编辑配置文件
  • 在此编辑 Zabbix agent 的配置文件 /usr/local/etc/zabbix_agentd.conf

您需要为每台安装了 zabbix_agentd 的主机配置这个文件。

您必须在这个文件中指定 Zabbix server 的 IP 地址 。若从其他主机发起的请求会被拒绝。

  • 在此编辑 Zabbix server 的配置文件 /usr/local/etc/zabbix_server.conf

您必须指定数据库的名称、用户和密码(如果使用的话)。

如果您进行小型环境部署(最多十个受监控主机),其余参数的默认值将适合您的环境。 如果要最大化 Zabbix server(或 proxy)的性能,则应更改默认参数。 详见性能调整

  • 如果您安装了 Zabbix proxy,请在此编辑 proxy 的配置文件 /usr/local/etc/zabbix_proxy.conf

您必须指定 Zabbix server 的 IP 地址和 Zabbix proxy 主机名(必须被 Zabbix server 识别),同时也要指定数据库的名称、用户和密码(如果使用的话)。

使用 SQLite 必须指定数据库文件的完整路径;数据库用户和密码不是必须的。

7 启动守护进程

在 Zabbix server 端运行 zabbix_server:

shell> zabbix_server

值得注意的是,确保您的系统允许分配 36MB(或更多)的共享内存,否则 Zabbix server 将无法启动,并会在 Zabbix server 日志文件中看到 "Cannot allocate shared memory for <type of cache>." 这样的报错信息。这可能会发生在 FreeBSD 和 Solaris 8 上。
详见本页底部的 "另请参阅" 部分,了解如何配置共享内存。.

在受监控的主机上运行 zabbix_agentd:

shell> zabbix_agentd

值得注意的是,请确保您的系统允许分配 2MB 的共享内存,否则 Zabbix agent 可能会无法运行,并会在 Zabbix agent 日志文件中看到 "Cannot allocate shared memory for collector." 这样的报错信息。这可能会发生在 Solaris 8 上。

如果您安装了 Zabbix proxy,请运行 zabbix_proxy:

shell> zabbix_proxy

2 安装 Zabbix web 界面

复制 PHP 文件

Zabbix 前端是 PHP 编写的,所以必须运行在支持 PHP 的 Web 服务器上。只需要简单的从 frontends/php 路径下复制 PHP 文件到 Web 服务器的 HTML 文档目录,即可完成安装。

Apache Web 服务器的 HTML 文档目录通常包括:

  • /usr/local/apache2/htdocs (从源代码安装 Apache 的默认目录)
  • /srv/www/htdocs (OpenSUSE, SLES)
  • /var/www/html (Debian, Ubuntu, Fedora, RHEL, CentOS)

建议使用子目录替代 HTML 根目录。可以使用下列命令,以创建一个子目录并复制 Zabbix 的前端文件到这个目录下(注意替换为实际的目录):

mkdir <htdocs>/zabbix
       cd frontends/php
       cp -a . <htdocs>/zabbix

如果准备从 git 安装英语以外的语言,您必须生成翻译文件。可以运行下列命令:

locale/make_mo.sh

需要来自 gettext 安装包的 msgfmt 组件。

此外,使用英语以外的语言,需要在 Web 服务器上安装该语言对应的 locale 。详见“用户文件”页面中的 "另请参阅" 板块,以寻找如何安装它(如果需要的话)。

安装前端
第一步

在您的浏览器打开 Zabbix 链接:http://<server_ip_or_name>/zabbix

您可以看到前端安装向导的第一个页面。

第二步

请确认满足所有的软件安装前置条件。

先决条件 最低要 描述
PHP 版本 5 4.0
PHP memory_limit 选项 1 8MB 位 php.ini:
memory_limit = 128M
PHP post_max_size 选项 1 MB 位 php.ini:
post_max_size = 16M
PHP upload_max_filesize 选项 2 B 位 php.ini:
upload_max_filesize = 2M
PHP max_execution_time 选项 3 0 seconds (此值允许为 0 和 -1 ) 位于 php. ni:
max_execution_time = 300
PHP max_input_time 选项 3 0 seconds (此值允许为 0 和 -1) 位于 php. ni:
max_input_time = 300
PHP session.auto_start 选项 禁用此值 In php. ni:
session.auto_start = 0
数据库支持 其中之一 MySQL,、Oracle、PostgreSQL、IBM DB2 必须安装下列模块中的一种
mysql、oci8、pgsql、ibm_db2
bcmath php-bcmath
mbstring php-mbstring
PHP mbstring.func_overload 选项 禁用此值 位于 php. ni:
mbstring.func_overload = 0
PHP always_populate_raw_post_data option 必须禁用此值 只适用于 HP 5.6.0 或更高的版本。
位于 php.ini:
always_populate_raw_post_data = -1
sockets php-net-socket 用于支持用户脚本。
gd 2.0 或更高 ph -gd. PHP GD 扩展必须支持 PNG 图像 (--with-png-dir),、JPEG (--with-jpeg-dir) 图像和 FreeType 2 (--with-freetype-dir).
libxml 2.6.15 php-xml or php5-dom
xmlwriter php-xmlwriter
xmlreader php-xmlreader
ctype php-ctype
session php-session
gettext php-gettext
从 Zabbix 2.2.1 起,PHP gettext 扩展不是安装 Zabbix 的强制性要求。如果 gettext 没有安装,前端也可以照常运行,但翻译将不可用。

列表中也可能包含可选的先决条件。 不满足的可选先决条件以橙色显示,同时标识为 Warning 状态。 即使存在不满足的可选先决条件,安装仍可以继续进行。

如果需要更改 Apache 的用户或用户组,则必须验证会话文件夹的权限。 否则 Zabbix 安装可能无法继续。