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

3 从源代码包安装

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

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

1 安装 Zabbix 守护进程

1 下载源代码存档

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

$ tar -zxvf zabbix-4.0.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 安装

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

$ 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

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

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 安装可能无法继续。

第三步

请输入连接到数据库的详细信息。Zabbix 数据库必须提前创建完成。

第四步

请输入 Zabbix server 的详细信息。

第五步

查看设置的摘要。

第六步

下载配置文件并将其放在 conf/ 路径下,即在您复制 Zabbix PHP 文件的 Web 服务器 HTML 文档子目录中。

如果 Web服务器用户具有对 conf/ 目录的写访问权,则会自动保存配置文件,并且可以直接继续执行下一步。

第七步

完成安装。

第八步

Zabbix 前端已经就绪!默认的用户名是 Admin,密码是zabbix

前往 开始使用 Zabbix

另请参阅

  1. 如何为 Zabbix 守护进程配置共享内存